<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Team, Award &amp; Field Projects | eecczz's page</title><link>https://eecczz.github.io/en/contest-projects/</link><atom:link href="https://eecczz.github.io/en/contest-projects/index.xml" rel="self" type="application/rss+xml"/><description>Team, Award &amp; Field Projects</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en</language><lastBuildDate>Wed, 01 Jul 2026 00:00:00 +0000</lastBuildDate><image><url>https://eecczz.github.io/media/icon_hu107733296a429e9339b15589e162cf6f_1739_512x512_fill_lanczos_center_3.png</url><title>Team, Award &amp; Field Projects</title><link>https://eecczz.github.io/en/contest-projects/</link></image><item><title>Smart CCTV Fall Detection</title><link>https://eecczz.github.io/en/contest-projects/smartcctv-fall/</link><pubDate>Thu, 13 Aug 2026 00:00:00 +0000</pubDate><guid>https://eecczz.github.io/en/contest-projects/smartcctv-fall/</guid><description>&lt;div class="case-study-lead">&lt;p class="case-study-kicker">BACKEND · AI · SYSTEM CASE STUDY&lt;/p>&lt;p>An Edge-AI monitoring project that reduces nursing-home RTSP false positives through three-stage pose, fall-object, and site-context zero-shot validation.&lt;/p>&lt;div class="case-study-meta">&lt;span>&lt;b>Role&lt;/b> Edge-AI field internship · data, models, post-processing, field validation&lt;/span>&lt;span>&lt;b>Validation&lt;/b> Live nursing-home RTSP environment&lt;/span>&lt;/div>&lt;/div>
&lt;h2 id="key-screens">Key Screens&lt;/h2>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Fall event in the live monitoring environment" srcset="
/en/contest-projects/smartcctv-fall/detail-event_hudffd0ace1323fae8cf715f6cfafcd54b_345728_23ace76d4917943c42bf792adbc6cf68.webp 400w,
/en/contest-projects/smartcctv-fall/detail-event_hudffd0ace1323fae8cf715f6cfafcd54b_345728_8ecf64543c4d160f6aa4298cad94b5e6.webp 760w,
/en/contest-projects/smartcctv-fall/detail-event_hudffd0ace1323fae8cf715f6cfafcd54b_345728_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://eecczz.github.io/en/contest-projects/smartcctv-fall/detail-event_hudffd0ace1323fae8cf715f6cfafcd54b_345728_23ace76d4917943c42bf792adbc6cf68.webp"
width="535"
height="409"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Hard validation accuracy for fall and normal-person scenes" srcset="
/en/contest-projects/smartcctv-fall/detail-accuracy_hu6bfb617f0dbcb4eebcbf9cccbad93192_14931_83509db0664a856c4d7019987c587f85.webp 400w,
/en/contest-projects/smartcctv-fall/detail-accuracy_hu6bfb617f0dbcb4eebcbf9cccbad93192_14931_454648e17fd6fead98b41272441ec619.webp 760w,
/en/contest-projects/smartcctv-fall/detail-accuracy_hu6bfb617f0dbcb4eebcbf9cccbad93192_14931_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://eecczz.github.io/en/contest-projects/smartcctv-fall/detail-accuracy_hu6bfb617f0dbcb4eebcbf9cccbad93192_14931_83509db0664a856c4d7019987c587f85.webp"
width="590"
height="390"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Hard validation confusion matrix" srcset="
/en/contest-projects/smartcctv-fall/detail-validation_hudac8ac2239a94d5130476c819919d57e_10690_e2421317263c02aeddeda550d08a0e6e.webp 400w,
/en/contest-projects/smartcctv-fall/detail-validation_hudac8ac2239a94d5130476c819919d57e_10690_24d59694a0227183e2601417a7e6bce4.webp 760w,
/en/contest-projects/smartcctv-fall/detail-validation_hudac8ac2239a94d5130476c819919d57e_10690_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://eecczz.github.io/en/contest-projects/smartcctv-fall/detail-validation_hudac8ac2239a94d5130476c819919d57e_10690_e2421317263c02aeddeda550d08a0e6e.webp"
width="555"
height="310"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="troubleshooting">Troubleshooting&lt;/h2>
&lt;h3 id="1-pose-estimation-alone-was-unstable-for-occlusion-distance-and-vertical-falls">1. Pose estimation alone was unstable for occlusion, distance, and vertical falls&lt;/h3>
&lt;p>Joint confidence, body angle, aspect ratio, and dwell-time heuristics changed with camera angle and occlusion. Pose remained the first candidate stage, while a &lt;code>fall/person&lt;/code> detector became the second verifier.&lt;/p>
&lt;h3 id="2-the-detector-still-confused-sitting-bending-and-lower-body-occlusion-with-falls">2. The detector still confused sitting, bending, and lower-body occlusion with falls&lt;/h3>
&lt;p>Hard negatives for sitting, bending, and partial occlusion were added. Overlapping or adjacent boxes were grouped, and a fall survived only when confidence and body coverage were sufficient.&lt;/p>
&lt;h3 id="3-model-output-alone-could-not-interpret-the-site-context">3. Model output alone could not interpret the site context&lt;/h3>
&lt;p>The final verifier compares candidate visual features with site-specific prompts such as a person fully lying on the floor, sitting on a chair, bending, or partially hidden by furniture.&lt;/p>
&lt;h2 id="system-flow">System Flow&lt;/h2>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Smart CCTV Fall Detection system flow"
src="https://eecczz.github.io/en/contest-projects/smartcctv-fall/architecture.svg"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;ol>
&lt;li>Pose keypoints and body tilt produce a fall candidate from RTSP frames.&lt;/li>
&lt;li>A YOLO &lt;code>fall/person&lt;/code> model verifies the cropped candidate.&lt;/li>
&lt;li>Nearby boxes are grouped and confidence and coverage are measured.&lt;/li>
&lt;li>Visual features and site-specific prompts perform zero-shot validation.&lt;/li>
&lt;li>Only events above 0.70 confidence and the time condition are confirmed and sent to snapshots, DB, and alerts.&lt;/li>
&lt;/ol></description></item><item><title>Gone</title><link>https://eecczz.github.io/en/contest-projects/gone/</link><pubDate>Wed, 01 Jul 2026 00:00:00 +0000</pubDate><guid>https://eecczz.github.io/en/contest-projects/gone/</guid><description>&lt;p>A choice-based story action-adventure game created as a four-person Coala club team project.&lt;/p>
&lt;ul>
&lt;li>Tech focus: implementation, interaction design, backend/API structure, and project delivery&lt;/li>
&lt;li>Repository or reference: portfolio project&lt;/li>
&lt;/ul>
&lt;h2 id="key-implementation-points">Key Implementation Points&lt;/h2>
&lt;h3 id="choice-based-story">Choice-based Story&lt;/h3>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Choice-based Story" srcset="
/en/contest-projects/gone/featured_huabefa9c21bfe1f120dbbd37d64f25c71_252768_b05fa6af8ff96bf9ea55f1af79d44607.webp 400w,
/en/contest-projects/gone/featured_huabefa9c21bfe1f120dbbd37d64f25c71_252768_836a1079296351ec29588503a9957d3e.webp 760w,
/en/contest-projects/gone/featured_huabefa9c21bfe1f120dbbd37d64f25c71_252768_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://eecczz.github.io/en/contest-projects/gone/featured_huabefa9c21bfe1f120dbbd37d64f25c71_252768_b05fa6af8ff96bf9ea55f1af79d44607.webp"
width="760"
height="760"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>Provides different endings through choices in a ruined city attacked by AI.&lt;/p>
&lt;h3 id="vertical-play">Vertical Play&lt;/h3>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Vertical Play" srcset="
/en/contest-projects/gone/detail-mobile_hue3d76723223a2270cc94622238090a51_44920_f11d3227c03253b438b1d7a32fb8619f.webp 400w,
/en/contest-projects/gone/detail-mobile_hue3d76723223a2270cc94622238090a51_44920_81a468a4fdd9ca520c807808b386aaa1.webp 760w,
/en/contest-projects/gone/detail-mobile_hue3d76723223a2270cc94622238090a51_44920_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://eecczz.github.io/en/contest-projects/gone/detail-mobile_hue3d76723223a2270cc94622238090a51_44920_f11d3227c03253b438b1d7a32fb8619f.webp"
width="194"
height="349"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>Tested a mobile-friendly 1:1 layout with game view above and controls below.&lt;/p>
&lt;h3 id="club-team-development">Club Team Development&lt;/h3>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Club Team Development" srcset="
/en/contest-projects/gone/detail-story_hu694b21ae79a4efcf574a3599285bb600_16607_1d3c9acecc0ece1c255045d1c3705add.webp 400w,
/en/contest-projects/gone/detail-story_hu694b21ae79a4efcf574a3599285bb600_16607_6761770f4a532368e3e633a03293e457.webp 760w,
/en/contest-projects/gone/detail-story_hu694b21ae79a4efcf574a3599285bb600_16607_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://eecczz.github.io/en/contest-projects/gone/detail-story_hu694b21ae79a4efcf574a3599285bb600_16607_1d3c9acecc0ece1c255045d1c3705add.webp"
width="196"
height="343"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>Split Fungus-based story flow and action progression across team members.&lt;/p></description></item><item><title>Soulslike Game</title><link>https://eecczz.github.io/en/contest-projects/soulslike-game/</link><pubDate>Wed, 01 Jul 2026 00:00:00 +0000</pubDate><guid>https://eecczz.github.io/en/contest-projects/soulslike-game/</guid><description>&lt;p>A four-person Unity action game project set in a colosseum, built for an introductory creative engineering design course.&lt;/p>
&lt;ul>
&lt;li>Tech focus: implementation, interaction design, backend/API structure, and project delivery&lt;/li>
&lt;li>Repository or reference: portfolio project&lt;/li>
&lt;/ul>
&lt;h2 id="key-implementation-points">Key Implementation Points&lt;/h2>
&lt;h3 id="boss-sequence">Boss Sequence&lt;/h3>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Boss Sequence" srcset="
/en/contest-projects/soulslike-game/detail-arena_huaea45ed3e43e8616c2971b7a7ae1a0d4_375788_f6e2f1c3be95d65419f54138ecbc430b.webp 400w,
/en/contest-projects/soulslike-game/detail-arena_huaea45ed3e43e8616c2971b7a7ae1a0d4_375788_b50bfe9e83799c39a81194896b3f1616.webp 760w,
/en/contest-projects/soulslike-game/detail-arena_huaea45ed3e43e8616c2971b7a7ae1a0d4_375788_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://eecczz.github.io/en/contest-projects/soulslike-game/detail-arena_huaea45ed3e43e8616c2971b7a7ae1a0d4_375788_f6e2f1c3be95d65419f54138ecbc430b.webp"
width="760"
height="344"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>Built soulslike tension with wide-range attacks and strong effects.&lt;/p>
&lt;h3 id="dodge-and-combo">Dodge and Combo&lt;/h3>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Dodge and Combo" srcset="
/en/contest-projects/soulslike-game/featured_huc9101a96c8e5001f64267bf0e701aeb1_661246_7782082344e6c04a43cd21618285a669.webp 400w,
/en/contest-projects/soulslike-game/featured_huc9101a96c8e5001f64267bf0e701aeb1_661246_d3a9aa8f82861343ea4f7480ac930556.webp 760w,
/en/contest-projects/soulslike-game/featured_huc9101a96c8e5001f64267bf0e701aeb1_661246_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://eecczz.github.io/en/contest-projects/soulslike-game/featured_huc9101a96c8e5001f64267bf0e701aeb1_661246_7782082344e6c04a43cd21618285a669.webp"
width="760"
height="458"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>Designed a combat flow where players read attack motions, dodge, and counter.&lt;/p>
&lt;h3 id="colosseum-stage">Colosseum Stage&lt;/h3>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Colosseum Stage" srcset="
/en/contest-projects/soulslike-game/detail-combat_hu1c4b45dc22f9ac56ff407a6f78d81a40_324198_ba990360e71a76cfd51169b51500ccea.webp 400w,
/en/contest-projects/soulslike-game/detail-combat_hu1c4b45dc22f9ac56ff407a6f78d81a40_324198_177b8c3dab202d734adad15b58b5af16.webp 760w,
/en/contest-projects/soulslike-game/detail-combat_hu1c4b45dc22f9ac56ff407a6f78d81a40_324198_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://eecczz.github.io/en/contest-projects/soulslike-game/detail-combat_hu1c4b45dc22f9ac56ff407a6f78d81a40_324198_ba990360e71a76cfd51169b51500ccea.webp"
width="760"
height="344"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>Created a final-battle space where the player and boss face each other.&lt;/p></description></item><item><title>SpeakUp - AI Agent Communication Coach</title><link>https://eecczz.github.io/en/contest-projects/speech-coach/</link><pubDate>Wed, 01 Jul 2026 00:00:00 +0000</pubDate><guid>https://eecczz.github.io/en/contest-projects/speech-coach/</guid><description>&lt;p>An AI coaching service that analyzes voice, gaze, posture, fillers, and expression for presentation and interview practice.&lt;/p>
&lt;ul>
&lt;li>Tech focus: implementation, interaction design, backend/API structure, and project delivery&lt;/li>
&lt;li>Repository or reference: &lt;a href="https://github.com/eecczz/speech-coach" target="_blank" rel="noopener">https://github.com/eecczz/speech-coach&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="key-implementation-points">Key Implementation Points&lt;/h2>
&lt;h3 id="real-time-coaching">Real-time Coaching&lt;/h3>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Real-time Coaching" srcset="
/en/contest-projects/speech-coach/featured_hu0f13714c8ed805a5cd7d7ed472e67b97_46181_0f625976500b3632cd411ec59fe40e82.webp 400w,
/en/contest-projects/speech-coach/featured_hu0f13714c8ed805a5cd7d7ed472e67b97_46181_67d38e741dc94e982d2b0052801fd019.webp 760w,
/en/contest-projects/speech-coach/featured_hu0f13714c8ed805a5cd7d7ed472e67b97_46181_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://eecczz.github.io/en/contest-projects/speech-coach/featured_hu0f13714c8ed805a5cd7d7ed472e67b97_46181_0f625976500b3632cd411ec59fe40e82.webp"
width="760"
height="433"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>Analyzes speaking speed, fillers, and silence to provide feedback during practice.&lt;/p>
&lt;h3 id="session-dashboard">Session Dashboard&lt;/h3>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Session Dashboard" srcset="
/en/contest-projects/speech-coach/detail-dashboard_hubb5bfd13ca2e5c0b5d2894f84361cfca_432942_2237c31b435d7d495fe05470846a138c.webp 400w,
/en/contest-projects/speech-coach/detail-dashboard_hubb5bfd13ca2e5c0b5d2894f84361cfca_432942_e44d97cd7ca9fe75aa143d5a899e51d2.webp 760w,
/en/contest-projects/speech-coach/detail-dashboard_hubb5bfd13ca2e5c0b5d2894f84361cfca_432942_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://eecczz.github.io/en/contest-projects/speech-coach/detail-dashboard_hubb5bfd13ca2e5c0b5d2894f84361cfca_432942_2237c31b435d7d495fe05470846a138c.webp"
width="760"
height="359"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>Creates situation-based sessions and stores practice flow.&lt;/p>
&lt;h3 id="ai-report">AI Report&lt;/h3>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="AI Report" srcset="
/en/contest-projects/speech-coach/detail-ai_hu81b765d77bb3a018a8f1520bb396fb12_259745_bf1f4a5d73677a248cd694fdf72b3269.webp 400w,
/en/contest-projects/speech-coach/detail-ai_hu81b765d77bb3a018a8f1520bb396fb12_259745_842c9ade81513c7e4264f641d572d4b0.webp 760w,
/en/contest-projects/speech-coach/detail-ai_hu81b765d77bb3a018a8f1520bb396fb12_259745_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://eecczz.github.io/en/contest-projects/speech-coach/detail-ai_hu81b765d77bb3a018a8f1520bb396fb12_259745_bf1f4a5d73677a248cd694fdf72b3269.webp"
width="760"
height="365"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>Generates improvement reports from transcripts and key attention segments.&lt;/p></description></item><item><title>TRIPICK - Tourism Course Verification Platform</title><link>https://eecczz.github.io/en/contest-projects/tripick/</link><pubDate>Wed, 01 Jul 2026 00:00:00 +0000</pubDate><guid>https://eecczz.github.io/en/contest-projects/tripick/</guid><description>&lt;p>A user-participation tourism platform that combines TourAPI, GPS route data, reviews, and verification to recommend trustworthy courses.&lt;/p>
&lt;ul>
&lt;li>Tech focus: implementation, interaction design, backend/API structure, and project delivery&lt;/li>
&lt;li>Repository or reference: &lt;a href="https://github.com/eecczz/tripick" target="_blank" rel="noopener">https://github.com/eecczz/tripick&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="key-implementation-points">Key Implementation Points&lt;/h2>
&lt;h3 id="verified-course-ranking">Verified Course Ranking&lt;/h3>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Verified Course Ranking" srcset="
/en/contest-projects/tripick/featured_huc79c8e869dc92ec348858ef742d7aae8_35127_dc65aacc206f8058d2afecbdb0d60b1f.webp 400w,
/en/contest-projects/tripick/featured_huc79c8e869dc92ec348858ef742d7aae8_35127_7fa576e613e4f33e006ae301f3a26584.webp 760w,
/en/contest-projects/tripick/featured_huc79c8e869dc92ec348858ef742d7aae8_35127_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://eecczz.github.io/en/contest-projects/tripick/featured_huc79c8e869dc92ec348858ef742d7aae8_35127_dc65aacc206f8058d2afecbdb0d60b1f.webp"
width="760"
height="433"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>Calculates tourism course reliability from GPS route data, reviews, and verification.&lt;/p>
&lt;h3 id="trust-score">Trust Score&lt;/h3>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="https://images.unsplash.com/photo-1488646953014-85cb44e25828?auto=format&amp;amp;fit=crop&amp;amp;w=720&amp;amp;q=80" alt="Trust Score" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>Designed scoring beyond simple ratings by reflecting completion and verification data.&lt;/p>
&lt;h3 id="tourism-data-use">Tourism Data Use&lt;/h3>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="https://images.unsplash.com/photo-1500530855697-b586d89ba3ee?auto=format&amp;amp;fit=crop&amp;amp;w=720&amp;amp;q=80" alt="Tourism Data Use" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>Connects TourAPI and user-participation data so recommendations can be re-verified.&lt;/p></description></item><item><title>Jeonbuk Provincial Voice Chatbot</title><link>https://eecczz.github.io/en/contest-projects/jeonbuk-chatbot/</link><pubDate>Mon, 01 Jun 2026 00:00:00 +0000</pubDate><guid>https://eecczz.github.io/en/contest-projects/jeonbuk-chatbot/</guid><description>&lt;div class="case-study-lead">&lt;p class="case-study-kicker">BACKEND · AI · SYSTEM CASE STUDY&lt;/p>&lt;p>A public voice-information service that retrieves Jeonbuk Province and municipal data with GraphRAG and delivers answers through STT and TTS.&lt;/p>&lt;div class="case-study-meta">&lt;span>&lt;b>Role&lt;/b> Capstone · FastAPI, voice pipeline, GraphRAG, crawler operation&lt;/span>&lt;span>&lt;b>Validation&lt;/b> Capstone Grand Prize · Jeonbuk Governor's Citation&lt;/span>&lt;/div>&lt;/div>
&lt;h2 id="key-screens">Key Screens&lt;/h2>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Voice chatbot answering a provincial-information question" srcset="
/en/contest-projects/jeonbuk-chatbot/detail-avatar_huadd56ca1c3490bb163ed8cad45c2ad1c_45226_36781687c7b001547a30bb558bf0f59e.webp 400w,
/en/contest-projects/jeonbuk-chatbot/detail-avatar_huadd56ca1c3490bb163ed8cad45c2ad1c_45226_6193e958071d44c1bb38306f6943365e.webp 760w,
/en/contest-projects/jeonbuk-chatbot/detail-avatar_huadd56ca1c3490bb163ed8cad45c2ad1c_45226_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://eecczz.github.io/en/contest-projects/jeonbuk-chatbot/detail-avatar_huadd56ca1c3490bb163ed8cad45c2ad1c_45226_36781687c7b001547a30bb558bf0f59e.webp"
width="377"
height="572"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Voice-response state in the chatbot character UI" srcset="
/en/contest-projects/jeonbuk-chatbot/featured_huc2e0e8824a413a5e846cf383c911210a_322862_80afd16d2bfe2d078c9c1c891052d5aa.webp 400w,
/en/contest-projects/jeonbuk-chatbot/featured_huc2e0e8824a413a5e846cf383c911210a_322862_a0c7455d5f99eba44745c4439a50c48e.webp 760w,
/en/contest-projects/jeonbuk-chatbot/featured_huc2e0e8824a413a5e846cf383c911210a_322862_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://eecczz.github.io/en/contest-projects/jeonbuk-chatbot/featured_huc2e0e8824a413a5e846cf383c911210a_322862_80afd16d2bfe2d078c9c1c891052d5aa.webp"
width="499"
height="760"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="troubleshooting">Troubleshooting&lt;/h2>
&lt;h3 id="1-a-new-utterance-had-to-interrupt-an-answer-already-being-spoken">1. A new utterance had to interrupt an answer already being spoken&lt;/h3>
&lt;p>Instead of finishing STT → answer → TTS in one request, I rebuilt the pipeline around a real-time socket connection. When a new utterance is detected, the active response and playback are stopped before the next turn begins.&lt;/p>
&lt;h3 id="2-daily-crawling-was-slow-skipped-pages-and-overloaded-the-embedding-server">2. Daily crawling was slow, skipped pages, and overloaded the embedding server&lt;/h3>
&lt;p>I standardized dynamic-page extraction, content cleanup, and asynchronous crawling with Crawl4AI. Incremental, full, and per-site runs isolate failures and reduce BGE-M3 embedding load.&lt;/p>
&lt;h3 id="3-slow-rag-answers-were-not-only-a-pipeline-problem">3. Slow RAG answers were not only a pipeline problem&lt;/h3>
&lt;p>I compared the same queries across different Qwen 3.5 model sizes, confirmed the model-selection impact on end-to-end latency, and changed the response model.&lt;/p>
&lt;h3 id="4-stt-often-missed-the-first-syllable">4. STT often missed the first syllable&lt;/h3>
&lt;p>VAD onset delay and confidence thresholds were tuned so the audio buffer reaches STT immediately after speech is detected.&lt;/p>
&lt;h3 id="5-municipality-urls-and-spa-structures-caused-different-collection-failures">5. Municipality URLs and SPA structures caused different collection failures&lt;/h3>
&lt;p>Base paths are configured per site, while normal HTML and browser-rendered SPA pages use separate collection paths.&lt;/p>
&lt;h2 id="technology-choices">Technology Choices&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Technology&lt;/th>
&lt;th>Why it was used&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>FastAPI&lt;/strong>&lt;/td>
&lt;td>To compose asynchronous STT, retrieval, LLM, and TTS stages with different latency characteristics.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>STT/TTS&lt;/strong>&lt;/td>
&lt;td>To make public policy and civil-service information accessible through natural voice queries.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>GraphRAG&lt;/strong>&lt;/td>
&lt;td>To retrieve answers with document relationships and evidence preserved.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Incremental crawler&lt;/strong>&lt;/td>
&lt;td>To refresh normal and SPA sites selectively rather than re-crawling everything.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="system-flow">System Flow&lt;/h2>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Jeonbuk Provincial Voice Chatbot system flow"
src="https://eecczz.github.io/en/contest-projects/jeonbuk-chatbot/architecture.svg"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;ol>
&lt;li>STT converts the user&amp;rsquo;s voice to text.&lt;/li>
&lt;li>FastAPI receives the normalized question and conversation context.&lt;/li>
&lt;li>GraphRAG retrieves relevant provincial and municipal data.&lt;/li>
&lt;li>The LLM produces an evidence-grounded answer.&lt;/li>
&lt;li>TTS returns speech synchronized with the character UI.&lt;/li>
&lt;/ol>
&lt;h2 id="next-implementation-plan">Next Implementation Plan&lt;/h2>
&lt;ul>
&lt;li>Show a source document and last-crawled time with every answer.&lt;/li>
&lt;li>Add browser-pool, timeout, retry, latency, and failure-rate monitoring by pipeline stage.&lt;/li>
&lt;/ul></description></item></channel></rss>