<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jiwan</title>
    <description>The latest articles on DEV Community by Jiwan (@_8c2bec12fe021319a0e1b).</description>
    <link>https://dev.to/_8c2bec12fe021319a0e1b</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4060613%2F8da6b740-54f0-46db-b67c-667cff784bc5.png</url>
      <title>DEV Community: Jiwan</title>
      <link>https://dev.to/_8c2bec12fe021319a0e1b</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/_8c2bec12fe021319a0e1b"/>
    <language>en</language>
    <item>
      <title>Why I Built a Local AI Assistant Instead of Yet Another Chatbot</title>
      <dc:creator>Jiwan</dc:creator>
      <pubDate>Tue, 04 Aug 2026 12:41:11 +0000</pubDate>
      <link>https://dev.to/_8c2bec12fe021319a0e1b/why-i-built-a-local-ai-assistant-instead-of-yet-another-chatbot-24n3</link>
      <guid>https://dev.to/_8c2bec12fe021319a0e1b/why-i-built-a-local-ai-assistant-instead-of-yet-another-chatbot-24n3</guid>
      <description>&lt;p&gt;When I decided to build a generative AI service, one question came to mind almost immediately:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“Do we really need another chatbot?”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;General-purpose AI systems like ChatGPT can already do an incredible number of things.&lt;/p&gt;

&lt;p&gt;They can answer questions, write content, generate code, analyze documents, and help with countless everyday tasks.&lt;/p&gt;

&lt;p&gt;Simply connecting an LLM API to a chat interface didn't feel like enough of a reason to build another AI product.&lt;/p&gt;

&lt;p&gt;So I started asking a different question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What if, instead of trying to know everything about the world, an AI system were designed to understand one city really well?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That question became the starting point for &lt;strong&gt;Hey Daejeon&lt;/strong&gt;, a local AI project built around the city of Daejeon, South Korea.&lt;/p&gt;




&lt;h2&gt;
  
  
  What General-Purpose AI Often Misses
&lt;/h2&gt;

&lt;p&gt;General-purpose AI knows a lot.&lt;/p&gt;

&lt;p&gt;But the information we need in everyday life is often surprisingly local.&lt;/p&gt;

&lt;p&gt;Which local support programs are currently accepting applications?&lt;/p&gt;

&lt;p&gt;What administrative changes are happening in a particular neighborhood?&lt;/p&gt;

&lt;p&gt;Where can I go this weekend?&lt;/p&gt;

&lt;p&gt;Which local organization can help with a specific problem?&lt;/p&gt;

&lt;p&gt;The challenge is that this information rarely exists in one clean database.&lt;/p&gt;

&lt;p&gt;It is scattered across municipal websites, public datasets, institutional announcements, news articles, and countless web pages.&lt;/p&gt;

&lt;p&gt;And much of it changes constantly.&lt;/p&gt;

&lt;p&gt;That led me to think about the problem differently.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Maybe the problem isn't that AI isn't intelligent enough. Maybe it isn't local enough.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Instead of trying to give an AI system even more general knowledge, I wanted to explore what would happen if it became better at working with the information and context of a specific region.&lt;/p&gt;

&lt;p&gt;The region I chose was Daejeon.&lt;/p&gt;




&lt;h2&gt;
  
  
  What If AI Were Designed Around a City?
&lt;/h2&gt;

&lt;p&gt;The original idea behind Hey Daejeon was relatively simple:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use data generated in Daejeon for the people and communities of Daejeon.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;But simply adding something like &lt;em&gt;“You are an expert on Daejeon”&lt;/em&gt; to a system prompt obviously wasn't enough.&lt;/p&gt;

&lt;p&gt;Different questions require different kinds of information.&lt;/p&gt;

&lt;p&gt;Some questions can be answered with the general knowledge of an LLM.&lt;/p&gt;

&lt;p&gt;Others require current information from the web.&lt;/p&gt;

&lt;p&gt;Some require local datasets.&lt;/p&gt;

&lt;p&gt;And some require combining multiple sources.&lt;/p&gt;

&lt;p&gt;So instead of designing Hey Daejeon around one massive prompt, I started building it as a system that could choose different paths between the user, data sources, and the LLM.&lt;/p&gt;

&lt;p&gt;At a high level, the flow looks something like this:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;User Query → Intent Analysis → Routing → Data/Search → LLM → Post-processing &amp;amp; Guardrails → Response&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;At first, this looked fairly straightforward.&lt;/p&gt;

&lt;p&gt;But once I started implementing it, this became one of the most interesting parts of the entire project.&lt;/p&gt;




&lt;h2&gt;
  
  
  Calling the LLM Wasn't the Hard Part
&lt;/h2&gt;

&lt;p&gt;Calling an LLM API is relatively easy.&lt;/p&gt;

&lt;p&gt;The difficult questions appeared around it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does this query require search?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Should the system use local data?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can this request go directly to the general-purpose LLM?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What happens when the retrieved information isn't good enough?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do I detect when the router makes the wrong decision?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do I know whether the system is reliable enough to deploy?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As the service grew, these questions kept multiplying.&lt;/p&gt;

&lt;p&gt;And gradually, &lt;strong&gt;orchestration&lt;/strong&gt; became one of the central parts of Hey Daejeon.&lt;/p&gt;

&lt;p&gt;The system needed to understand the request, select an appropriate processing path, retrieve the necessary information, pass the right context to the model, and handle the result.&lt;/p&gt;

&lt;p&gt;While building this, I started experimenting with components such as heuristic routing, LLM-based routing, guardrails, and internal evaluation.&lt;/p&gt;

&lt;p&gt;One thing became increasingly clear:&lt;/p&gt;

&lt;p&gt;As an AI system becomes more complex, adding new capabilities isn't always the hardest problem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reducing wrong decisions often matters more.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  An AI Product Is More Than Its Model
&lt;/h2&gt;

&lt;p&gt;Building Hey Daejeon also changed the way I think about AI products.&lt;/p&gt;

&lt;p&gt;When I first became interested in generative AI, I naturally focused heavily on models.&lt;/p&gt;

&lt;p&gt;Which model is better?&lt;/p&gt;

&lt;p&gt;How many parameters does it have?&lt;/p&gt;

&lt;p&gt;How well does it perform on benchmarks?&lt;/p&gt;

&lt;p&gt;Those questions still matter.&lt;/p&gt;

&lt;p&gt;But when I started building an actual service, a different set of problems kept appearing.&lt;/p&gt;

&lt;p&gt;How should user requests be classified?&lt;/p&gt;

&lt;p&gt;Which data source should be selected?&lt;/p&gt;

&lt;p&gt;When should the system search?&lt;/p&gt;

&lt;p&gt;What happens when the request is routed incorrectly?&lt;/p&gt;

&lt;p&gt;How should system quality be measured?&lt;/p&gt;

&lt;p&gt;What should be tested before deployment?&lt;/p&gt;

&lt;p&gt;Eventually, I realized that I wasn't just building an &lt;strong&gt;application that uses an LLM&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I was building an &lt;strong&gt;AI system in which the LLM is only one component&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That distinction turned out to be much more important than I expected.&lt;/p&gt;




&lt;h2&gt;
  
  
  It's Not a Perfect System
&lt;/h2&gt;

&lt;p&gt;Hey Daejeon is far from finished.&lt;/p&gt;

&lt;p&gt;The routing can be improved.&lt;/p&gt;

&lt;p&gt;The evaluation methodology can become more rigorous.&lt;/p&gt;

&lt;p&gt;The coverage of local data is still limited.&lt;/p&gt;

&lt;p&gt;And real users will almost certainly discover problems that I haven't encountered yet.&lt;/p&gt;

&lt;p&gt;But that's also what makes the project interesting to me.&lt;/p&gt;

&lt;p&gt;I didn't start with a perfect architecture.&lt;/p&gt;

&lt;p&gt;Instead, the system evolved through a repeated cycle:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Find a problem → Form a hypothesis → Build → Test → Fail → Improve&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That process has gradually taught me what it actually takes to turn LLMs into a working AI service.&lt;/p&gt;

&lt;p&gt;And many of the most useful lessons came from the parts that didn't work the first time.&lt;/p&gt;




&lt;h2&gt;
  
  
  Local AI as an Experiment
&lt;/h2&gt;

&lt;p&gt;For now, I think of Hey Daejeon as an experiment.&lt;/p&gt;

&lt;p&gt;Does AI designed around a specific region still make sense as general-purpose AI becomes increasingly powerful?&lt;/p&gt;

&lt;p&gt;What happens when local data is combined with general-purpose LLMs?&lt;/p&gt;

&lt;p&gt;Can a city itself become a useful boundary for an AI service?&lt;/p&gt;

&lt;p&gt;And could AI become more than something that simply answers questions &lt;em&gt;about&lt;/em&gt; a region?&lt;/p&gt;

&lt;p&gt;Could it become an interface that helps &lt;strong&gt;turn data generated within a region back into something useful for that region?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;These are the questions I want to explore through Hey Daejeon.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I'll Be Writing About Next
&lt;/h2&gt;

&lt;p&gt;In this first post, I wanted to focus more on &lt;strong&gt;why&lt;/strong&gt; I built Hey Daejeon than exactly &lt;strong&gt;how&lt;/strong&gt; I built it.&lt;/p&gt;

&lt;p&gt;In future posts, I plan to go deeper into the engineering behind the project:&lt;/p&gt;

&lt;p&gt;the overall system architecture, how queries are routed, heuristic routing versus LLM-based routing, guardrail design, internal evaluation and pre-deployment testing, and the technical debt and failures I encountered while building the service.&lt;/p&gt;

&lt;p&gt;Rather than only showing the finished product, I want to document the decisions behind it:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;what I built, why I designed it that way, what failed, and how I tried to improve it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Hey Daejeon started with a simple question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What would happen if an AI system were designed to understand one city really well instead of trying to understand the entire world?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I'm still finding out.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>architecture</category>
      <category>buildinpublic</category>
    </item>
  </channel>
</rss>
