<?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: Tanush</title>
    <description>The latest articles on DEV Community by Tanush (@tanush_326k).</description>
    <link>https://dev.to/tanush_326k</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%2F3903492%2F2ca41ea0-f8a0-4ad7-80cf-03d5063363c0.jpg</url>
      <title>DEV Community: Tanush</title>
      <link>https://dev.to/tanush_326k</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tanush_326k"/>
    <language>en</language>
    <item>
      <title>Building MoneyBuddy: A Multilingual Financial AI Voice Agent for Bharat with Murf Falcon🎙️</title>
      <dc:creator>Tanush</dc:creator>
      <pubDate>Sat, 15 Aug 2026 14:19:46 +0000</pubDate>
      <link>https://dev.to/tanush_326k/i-built-moneybuddy-in-10-days-a-multilingual-ai-voice-agent-for-indias-financial-services-28jd</link>
      <guid>https://dev.to/tanush_326k/i-built-moneybuddy-in-10-days-a-multilingual-ai-voice-agent-for-indias-financial-services-28jd</guid>
      <description>&lt;p&gt;What started as a simple voice agent became something much bigger over the last ten days.&lt;/p&gt;

&lt;p&gt;I built &lt;strong&gt;MoneyBuddy&lt;/strong&gt;, a multilingual AI voice agent for the &lt;strong&gt;Financial Services&lt;/strong&gt; track of the &lt;strong&gt;10 Days of Voice Agents — VoiceForBharat Edition&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The goal was simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Make financial guidance easier to access through a natural voice conversation.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Instead of forcing users to navigate complicated forms, search through scheme websites, or understand financial terminology on their own, MoneyBuddy lets them simply talk.&lt;/p&gt;

&lt;p&gt;Over ten days, it evolved from a basic voice conversation into a system with persistent memory, financial tools, outbound calling, human escalation, analytics, and specialist-agent handoffs.&lt;/p&gt;

&lt;p&gt;And the biggest lesson was that building a useful voice agent is much more than connecting an LLM to a microphone.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem I Wanted to Solve
&lt;/h2&gt;

&lt;p&gt;Government financial schemes can provide meaningful support, but discovering whether a scheme is relevant, understanding eligibility, finding required documents, and knowing what to do next can be difficult.&lt;/p&gt;

&lt;p&gt;For many users, especially people who are more comfortable speaking than typing, voice can make that interaction much more natural.&lt;/p&gt;

&lt;p&gt;That became the idea behind MoneyBuddy:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;A voice-first financial companion that explains, guides, and knows when it should stop and ask for help.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;MoneyBuddy focuses on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Government-scheme guidance&lt;/li&gt;
&lt;li&gt;Financial literacy&lt;/li&gt;
&lt;li&gt;Eligibility information&lt;/li&gt;
&lt;li&gt;Document guidance&lt;/li&gt;
&lt;li&gt;Fraud awareness&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is intentionally &lt;strong&gt;not&lt;/strong&gt; a banking transaction system.&lt;/p&gt;

&lt;p&gt;MoneyBuddy does not ask users for OTPs, PINs, passwords, CVVs, full card numbers, or sensitive banking credentials.&lt;/p&gt;




&lt;h2&gt;
  
  
  What MoneyBuddy Became
&lt;/h2&gt;

&lt;p&gt;The project started with a simple voice loop:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;User speaks → AI understands → AI responds&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;By the end of the challenge, it had grown into a much larger system.&lt;/p&gt;

&lt;p&gt;MoneyBuddy can now:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Speak using an Indian voice powered by &lt;strong&gt;Murf Falcon&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Understand English, Hindi, and Hinglish&lt;/li&gt;
&lt;li&gt;Follow financial safety guardrails&lt;/li&gt;
&lt;li&gt;Show real-time agent states in the frontend&lt;/li&gt;
&lt;li&gt;Display a live transcript&lt;/li&gt;
&lt;li&gt;Remember returning callers using SQLite&lt;/li&gt;
&lt;li&gt;Retrieve memory through function tools&lt;/li&gt;
&lt;li&gt;Retrieve government-scheme information through a domain tool&lt;/li&gt;
&lt;li&gt;Chain stored caller information into financial lookups&lt;/li&gt;
&lt;li&gt;Make outbound phone calls&lt;/li&gt;
&lt;li&gt;Ask permission before human escalation&lt;/li&gt;
&lt;li&gt;Create escalation requests&lt;/li&gt;
&lt;li&gt;Track call outcomes through analytics&lt;/li&gt;
&lt;li&gt;Hand conversations to a Government Scheme Specialist&lt;/li&gt;
&lt;li&gt;Return conversations from the specialist to the main agent&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The important shift was this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A voice agent becomes a real application when you add state, tools, memory, safety, observability, and failure handling around the conversation loop.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  How MoneyBuddy Works
&lt;/h2&gt;

&lt;p&gt;At the core, MoneyBuddy combines four major components:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Deepgram STT&lt;/strong&gt; — converts speech into text.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemini LLM&lt;/strong&gt; — handles reasoning, conversation, routing, and tool selection.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Murf Falcon TTS&lt;/strong&gt; — converts generated responses back into speech.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LiveKit&lt;/strong&gt; — handles real-time audio transport.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For outbound phone calls, LiveKit SIP connects the voice agent to telephony.&lt;/p&gt;

&lt;h3&gt;
  
  
  The complete architecture
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;flowchart LR
    U["👤 User&amp;lt;br/&amp;gt;Browser / Phone"] --&amp;gt; LK["LiveKit&amp;lt;br/&amp;gt;Real-time Audio"]

    LK --&amp;gt; STT["Deepgram STT&amp;lt;br/&amp;gt;Speech → Text"]
    STT --&amp;gt; LLM["Gemini LLM&amp;lt;br/&amp;gt;Reasoning + Routing"]

    LLM &amp;lt;--&amp;gt; MEM["SQLite&amp;lt;br/&amp;gt;Caller Memory"]
    LLM &amp;lt;--&amp;gt; TOOL["Financial Tools&amp;lt;br/&amp;gt;Scheme Data"]

    LLM --&amp;gt; SPEC["Government Scheme&amp;lt;br/&amp;gt;Specialist Agent"]

    MEM --&amp;gt; LLM
    TOOL --&amp;gt; LLM
    SPEC --&amp;gt; LLM

    LLM --&amp;gt; TTS["Murf Falcon&amp;lt;br/&amp;gt;Text → Speech"]
    TTS --&amp;gt; LK
    LK --&amp;gt; U
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This separation is important.&lt;/p&gt;

&lt;p&gt;The LLM is &lt;strong&gt;not&lt;/strong&gt; responsible for everything.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Memory is handled through tools.&lt;/li&gt;
&lt;li&gt;Scheme information comes from grounded data.&lt;/li&gt;
&lt;li&gt;Human escalation is handled through a dedicated tool.&lt;/li&gt;
&lt;li&gt;Specialist routing is handled separately.&lt;/li&gt;
&lt;li&gt;LiveKit manages real-time communication.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That made the system easier to reason about and safer to extend.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkcdcwi1tawnv9pjdpdlc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkcdcwi1tawnv9pjdpdlc.png" alt=" " width="800" height="425"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  📸 MoneyBuddy Frontend
&lt;/h3&gt;

&lt;p&gt;The frontend was redesigned around the actual states of a voice conversation.&lt;/p&gt;

&lt;p&gt;Instead of displaying only a microphone button, MoneyBuddy clearly communicates whether it is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ready&lt;/li&gt;
&lt;li&gt;Connecting&lt;/li&gt;
&lt;li&gt;Listening&lt;/li&gt;
&lt;li&gt;Speaking&lt;/li&gt;
&lt;li&gt;Call ended&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It also provides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Live transcript&lt;/li&gt;
&lt;li&gt;Microphone permission guidance&lt;/li&gt;
&lt;li&gt;Language selection&lt;/li&gt;
&lt;li&gt;Financial safety messaging&lt;/li&gt;
&lt;li&gt;Reconnection/loading states&lt;/li&gt;
&lt;li&gt;Call-ended controls&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The interface is intentionally simple.&lt;/p&gt;

&lt;p&gt;The user should understand what to do without knowing anything about LiveKit, STT, LLMs, or TTS.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Giving MoneyBuddy an Indian Voice
&lt;/h2&gt;

&lt;p&gt;The first challenge was getting a voice agent working end-to-end.&lt;/p&gt;

&lt;p&gt;I chose an Indian voice because the target experience is designed for Indian users.&lt;/p&gt;

&lt;p&gt;MoneyBuddy uses &lt;strong&gt;Murf Falcon&lt;/strong&gt; for text-to-speech.&lt;/p&gt;

&lt;p&gt;Voice quality matters especially for a financial assistant.&lt;/p&gt;

&lt;p&gt;A system that gives correct information but sounds robotic, unnatural, or difficult to understand quickly loses trust.&lt;/p&gt;

&lt;p&gt;Murf Falcon became an important part of the project because voice-agent UX is heavily affected by the time between:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;User stops speaking → Agent starts speaking&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That made latency a product decision, not just an engineering metric.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Personality, Guardrails, and Multilingual Conversations
&lt;/h2&gt;

&lt;p&gt;Once the basic voice loop worked, MoneyBuddy needed a clear job and strict boundaries.&lt;/p&gt;

&lt;p&gt;I defined three primary objectives:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Government-scheme guidance&lt;/li&gt;
&lt;li&gt;Financial literacy&lt;/li&gt;
&lt;li&gt;Fraud awareness&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then I added financial safety rules.&lt;/p&gt;

&lt;p&gt;MoneyBuddy must never request:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OTPs&lt;/li&gt;
&lt;li&gt;PINs&lt;/li&gt;
&lt;li&gt;Passwords&lt;/li&gt;
&lt;li&gt;CVVs&lt;/li&gt;
&lt;li&gt;Full card numbers&lt;/li&gt;
&lt;li&gt;Sensitive banking credentials&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It also cannot promise guaranteed scheme approval or financial outcomes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Voice-first prompting
&lt;/h3&gt;

&lt;p&gt;A response that looks good in a chat window can sound terrible when spoken.&lt;/p&gt;

&lt;p&gt;For voice, I had to think differently.&lt;/p&gt;

&lt;p&gt;MoneyBuddy uses:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Short sentences&lt;/li&gt;
&lt;li&gt;Natural phrasing&lt;/li&gt;
&lt;li&gt;Simple vocabulary&lt;/li&gt;
&lt;li&gt;Clear pauses&lt;/li&gt;
&lt;li&gt;No raw JSON&lt;/li&gt;
&lt;li&gt;No markdown-style responses&lt;/li&gt;
&lt;li&gt;No unnecessary technical terminology&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I also added support for &lt;strong&gt;Hindi and Hinglish&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The goal was not to make users adapt to the system.&lt;/p&gt;

&lt;p&gt;The system should adapt to the way users naturally communicate.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Building a Frontend for Voice
&lt;/h2&gt;

&lt;p&gt;The frontend became more than a microphone interface.&lt;/p&gt;

&lt;p&gt;It visually represents the current state of the agent:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ready → Connecting → Listening → Speaking → Call Ended&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The live transcript makes it clear who said what.&lt;/p&gt;

&lt;p&gt;Microphone permission errors are also handled explicitly instead of leaving the user wondering why nothing is happening.&lt;/p&gt;

&lt;p&gt;For a voice product, this feedback is essential.&lt;/p&gt;

&lt;p&gt;When there is no visible state, a few seconds of network delay can feel like the entire application has crashed.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Giving MoneyBuddy Memory
&lt;/h2&gt;

&lt;p&gt;A returning caller should not have to start from zero every time.&lt;/p&gt;

&lt;p&gt;I added persistent SQLite memory.&lt;/p&gt;

&lt;p&gt;A caller record can contain:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;user_id
name
language_preference
facts
last_interaction
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But there was an important architectural decision here.&lt;/p&gt;

&lt;p&gt;I did &lt;strong&gt;not&lt;/strong&gt; want to dump the entire database into the system prompt.&lt;/p&gt;

&lt;p&gt;Instead, MoneyBuddy has function tools for memory operations.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nd"&gt;@function_tool&lt;/span&gt;
&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;lookup_caller&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Look up a caller&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;s saved profile and relevant financial facts.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;get_caller&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The model decides when it needs caller information and calls the function.&lt;/p&gt;

&lt;p&gt;This creates a much cleaner separation:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Application data → Tool → LLM&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;rather than:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Entire database → Prompt → LLM&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I also added sanitization before storing financial information so sensitive credentials are not persisted as normal caller facts.&lt;/p&gt;

&lt;p&gt;Most importantly:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;MoneyBuddy asks for permission before saving information.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  5. Giving the Agent Real Financial Data
&lt;/h2&gt;

&lt;p&gt;Memory alone isn't enough.&lt;/p&gt;

&lt;p&gt;The agent also needs reliable domain information.&lt;/p&gt;

&lt;p&gt;For Day 5, I added a grounded local dataset containing Indian government financial schemes such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PM Kisan Samman Nidhi&lt;/li&gt;
&lt;li&gt;PM Suraksha Bima Yojana&lt;/li&gt;
&lt;li&gt;PM Jeevan Jyoti Bima Yojana&lt;/li&gt;
&lt;li&gt;Atal Pension Yojana&lt;/li&gt;
&lt;li&gt;PM Mudra Yojana&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;MoneyBuddy accesses this information through a function tool.&lt;/p&gt;

&lt;p&gt;Instead of relying entirely on the LLM's internal knowledge, the agent can retrieve structured scheme information when required.&lt;/p&gt;

&lt;p&gt;The dataset also contains recency information so the agent can communicate when its information was last updated.&lt;/p&gt;

&lt;p&gt;The principle was simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;When an answer depends on structured domain data, use a tool instead of hoping the LLM remembers the correct answer.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  6. Making MoneyBuddy Call Users
&lt;/h2&gt;

&lt;p&gt;On Day 6, MoneyBuddy stopped waiting for users to initiate every conversation.&lt;/p&gt;

&lt;p&gt;I added outbound calling through &lt;strong&gt;LiveKit SIP&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The use case was:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;A reminder for someone already identified as eligible for a government scheme with an approaching deadline.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Outbound calling requires a different conversational design.&lt;/p&gt;

&lt;p&gt;The user did not ask for the call.&lt;/p&gt;

&lt;p&gt;So the opening needs to establish three things immediately:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Who is calling.&lt;br&gt;
Why they are calling.&lt;br&gt;
How the user can stop the call.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That makes the interaction more transparent and respectful.&lt;/p&gt;
&lt;h3&gt;
  
  
  Outbound interaction
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;flowchart TD
    A["📞 Outbound Call Started"] --&amp;gt; B["User Answers"]

    B --&amp;gt; C["MoneyBuddy identifies itself"]
    C --&amp;gt; D["Explains reason for calling"]
    D --&amp;gt; E["Provides opt-out"]

    E --&amp;gt; F{"User response"}

    F --&amp;gt;|Continue| G["Deliver scheme reminder"]
    F --&amp;gt;|No / Stop| H["End call respectfully"]

    B --&amp;gt;|No answer| I["Call outcome recorded"]
    B --&amp;gt;|Busy| I
    B --&amp;gt;|Immediate hang-up| I
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;One limitation remained here: carrier-level retry handling for busy, no-answer, and voicemail outcomes was not implemented as a custom retry queue.&lt;/p&gt;

&lt;p&gt;The challenge was primarily about demonstrating the outbound interaction itself, so I kept the implementation focused rather than adding an unnecessary retry infrastructure.&lt;/p&gt;


&lt;h2&gt;
  
  
  7. Knowing When AI Should Ask a Human
&lt;/h2&gt;

&lt;p&gt;One of the biggest lessons from this challenge was:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;A good AI agent should know when it should stop.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For MoneyBuddy, human escalation is triggered for situations such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Possible financial fraud&lt;/li&gt;
&lt;li&gt;Problems requiring a decision the AI cannot make&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The agent prepares a short summary containing only useful information:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What happened&lt;/li&gt;
&lt;li&gt;What the agent already checked&lt;/li&gt;
&lt;li&gt;Urgency&lt;/li&gt;
&lt;li&gt;Preferred language&lt;/li&gt;
&lt;li&gt;Preferred follow-up method&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Before sharing that information, MoneyBuddy asks the caller for permission.&lt;/p&gt;

&lt;p&gt;Sensitive credentials such as OTPs, PINs, passwords, and account numbers are excluded.&lt;/p&gt;

&lt;p&gt;The caller receives a reference ID and an explanation of what happens next.&lt;/p&gt;
&lt;h3&gt;
  
  
  Human escalation flow
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;flowchart LR
    U["User"] --&amp;gt; M["MoneyBuddy"]

    M --&amp;gt; Q{"Needs human help?"}

    Q --&amp;gt;|No| C["Continue conversation"]

    Q --&amp;gt;|Yes| S["Explain what will be shared"]
    S --&amp;gt; P{"Caller gives permission?"}

    P --&amp;gt;|No| N["Do not create request&amp;lt;br/&amp;gt;Continue safely"]
    P --&amp;gt;|Yes| E["Create Escalation"]

    E --&amp;gt; R["Reference ID"]
    R --&amp;gt; X["Explain next step"]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;This was an important safety boundary.&lt;/p&gt;

&lt;p&gt;The AI doesn't silently send the user's information somewhere just because it thinks escalation is useful.&lt;/p&gt;


&lt;h2&gt;
  
  
  8. Measuring the System Instead of Guessing
&lt;/h2&gt;

&lt;p&gt;A voice application needs observability.&lt;/p&gt;

&lt;p&gt;As part of the challenge, I built a call analytics layer that records call outcomes and exposes them through a dashboard.&lt;/p&gt;

&lt;p&gt;The dashboard is designed to track:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Total calls&lt;/li&gt;
&lt;li&gt;Successful calls&lt;/li&gt;
&lt;li&gt;Failed calls&lt;/li&gt;
&lt;li&gt;Success rate&lt;/li&gt;
&lt;li&gt;Call history&lt;/li&gt;
&lt;li&gt;Failure categories&lt;/li&gt;
&lt;li&gt;Track-specific outcomes&lt;/li&gt;
&lt;li&gt;Latency&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr6r6pmkwffugv6v2qtzs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr6r6pmkwffugv6v2qtzs.png" alt=" " width="800" height="671"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Rather than presenting test-suite results as real-world call statistics, I kept the distinction clear.&lt;/p&gt;

&lt;p&gt;The implementation was validated through automated testing across the different challenge features.&lt;/p&gt;

&lt;p&gt;By Day 9, the specialist routing tests passed:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;14/14 tests passed&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The broader behavioral test suite passed:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;16/16 tests passed&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And the backend pytest suite passed:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4/4 tests passed&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;These results demonstrate that the core workflows were functioning as implemented, while the dashboard provides the foundation for collecting real call metrics as the system is used.&lt;/p&gt;

&lt;p&gt;This distinction matters.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Automated tests tell me whether the system behaves correctly under defined scenarios. Real call metrics tell me how the system performs with actual users.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For this challenge, I chose not to invent latency or call-success numbers that I could not independently verify.&lt;/p&gt;
&lt;h2&gt;
  
  
  9. The Multi-Agent Step
&lt;/h2&gt;

&lt;p&gt;The final major technical step was turning MoneyBuddy into a multi-agent system.&lt;/p&gt;

&lt;p&gt;The main agent remains the general financial assistant.&lt;/p&gt;

&lt;p&gt;When the user needs deeper government-scheme knowledge, MoneyBuddy can hand the conversation to a dedicated:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Government Scheme Specialist&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The specialist has its own role, instructions, and boundaries.&lt;/p&gt;

&lt;p&gt;The user should not have to explain the entire problem again.&lt;/p&gt;
&lt;h3&gt;
  
  
  Specialist handoff architecture
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;flowchart TD
    U["👤 User"] --&amp;gt; M["MoneyBuddy"]

    M --&amp;gt; Q{"Does the request&amp;lt;br/&amp;gt;need specialist knowledge?"}

    Q --&amp;gt;|No| M

    Q --&amp;gt;|Yes| A["Announce handoff"]
    A --&amp;gt; H["Handoff Tool"]

    H --&amp;gt; S["Government Scheme&amp;lt;br/&amp;gt;Specialist"]

    S --&amp;gt; C["Continue same conversation"]

    C --&amp;gt; D{"Task complete?"}

    D --&amp;gt;|No| S
    D --&amp;gt;|Yes| R["Return to MoneyBuddy"]
    D --&amp;gt;|Topic changed| R

    R --&amp;gt; M
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;This is one of the places where a multi-agent architecture becomes useful.&lt;/p&gt;

&lt;p&gt;Instead of giving one giant prompt to one giant agent, each agent gets a narrower responsibility.&lt;/p&gt;


&lt;h2&gt;
  
  
  10. Solving Handoff Latency
&lt;/h2&gt;

&lt;p&gt;The specialist handoff introduced another voice-specific challenge.&lt;/p&gt;

&lt;p&gt;If the system waited for the specialist's entire LLM response before speaking, the user could experience an awkward silence.&lt;/p&gt;

&lt;p&gt;So I changed the flow.&lt;/p&gt;

&lt;p&gt;The specialist can immediately acknowledge the handoff:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;say&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Hi, I&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;m the Government Scheme Specialist. &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;I&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;ll help you with that.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then the detailed response can continue generating.&lt;/p&gt;

&lt;p&gt;The goal is to separate:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"The specialist has taken over."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;from:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"The specialist has finished generating the complete answer."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That small architectural change makes the handoff feel much faster.&lt;/p&gt;




&lt;h2&gt;
  
  
  11. Deterministic Agent Identity
&lt;/h2&gt;

&lt;p&gt;Another interesting problem appeared in the frontend.&lt;/p&gt;

&lt;p&gt;Initially, the UI could try to determine which agent was active by inspecting transcript text.&lt;/p&gt;

&lt;p&gt;That is unreliable.&lt;/p&gt;

&lt;p&gt;For example, if the normal MoneyBuddy agent happened to say the word "specialist", the frontend could incorrectly display the specialist state.&lt;/p&gt;

&lt;p&gt;So I changed the architecture to use explicit application state / LiveKit participant metadata.&lt;/p&gt;

&lt;p&gt;Conceptually:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;active_agent = "moneybuddy"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;active_agent = "specialist"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The frontend reads the state directly.&lt;/p&gt;

&lt;p&gt;This led to another useful lesson:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;UI state should come from application state, not guesses extracted from conversation text.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  12. The Design Decision I Changed
&lt;/h2&gt;

&lt;p&gt;One of the most important design decisions I changed during the challenge was how MoneyBuddy handled memory.&lt;/p&gt;

&lt;p&gt;The initial temptation was to load stored caller information directly into the system prompt.&lt;/p&gt;

&lt;p&gt;It works, but it creates problems.&lt;/p&gt;

&lt;p&gt;The prompt becomes larger.&lt;/p&gt;

&lt;p&gt;The model receives information it may not need.&lt;/p&gt;

&lt;p&gt;And the separation between application data and model instructions becomes weaker.&lt;/p&gt;

&lt;p&gt;So I changed the architecture to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Caller needs information
        ↓
Memory lookup tool
        ↓
SQLite
        ↓
Relevant data returned
        ↓
LLM uses only what it needs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This made the memory architecture cleaner and easier to control.&lt;/p&gt;




&lt;h2&gt;
  
  
  13. The Hard Parts
&lt;/h2&gt;

&lt;p&gt;The hardest part wasn't getting an LLM to answer questions.&lt;/p&gt;

&lt;p&gt;It was making all the components behave reliably together as a real-time voice application.&lt;/p&gt;

&lt;h3&gt;
  
  
  Multilingual voice handling
&lt;/h3&gt;

&lt;p&gt;Hindi and Hinglish required more than simply changing the prompt.&lt;/p&gt;

&lt;p&gt;STT, language detection, LLM output, writing script, and TTS configuration all had to work together.&lt;/p&gt;

&lt;h3&gt;
  
  
  Voice formatting
&lt;/h3&gt;

&lt;p&gt;Text that looks fine on a screen can sound terrible when spoken.&lt;/p&gt;

&lt;p&gt;I had to continuously simplify responses, remove formatting artifacts, and keep sentences short.&lt;/p&gt;

&lt;h3&gt;
  
  
  Handoff latency
&lt;/h3&gt;

&lt;p&gt;Switching agents introduced another potential delay.&lt;/p&gt;

&lt;p&gt;The solution was to immediately speak the specialist introduction rather than waiting for the complete response.&lt;/p&gt;

&lt;h3&gt;
  
  
  Agent identity
&lt;/h3&gt;

&lt;p&gt;Transcript-based UI detection caused unreliable specialist labels.&lt;/p&gt;

&lt;p&gt;Explicit state solved that problem.&lt;/p&gt;

&lt;h3&gt;
  
  
  Keeping previous days stable
&lt;/h3&gt;

&lt;p&gt;Every new feature had to coexist with everything already built.&lt;/p&gt;

&lt;p&gt;I maintained separate day branches and repeatedly ran the existing test suites before pushing changes.&lt;/p&gt;

&lt;p&gt;This helped prevent later features from accidentally breaking earlier functionality such as memory, analytics, or guardrails.&lt;/p&gt;




&lt;h2&gt;
  
  
  14. Testing and Reliability
&lt;/h2&gt;

&lt;p&gt;One thing I deliberately focused on throughout the challenge was not just adding features, but verifying that existing features remained intact.&lt;/p&gt;

&lt;p&gt;By Day 9, the project had dedicated tests covering:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Behavioral agent behavior&lt;/li&gt;
&lt;li&gt;Memory functionality&lt;/li&gt;
&lt;li&gt;Financial guardrails&lt;/li&gt;
&lt;li&gt;Day 8 analytics&lt;/li&gt;
&lt;li&gt;Day 9 specialist routing&lt;/li&gt;
&lt;li&gt;Specialist handoff behavior&lt;/li&gt;
&lt;li&gt;Fallback handling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The final Day 9 routing test suite passed:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;14/14 tests&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The broader behavioral suite passed:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;16/16 tests&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And the backend pytest suite passed:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4/4 tests&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;These are &lt;strong&gt;automated test results&lt;/strong&gt;, not real-user success metrics.&lt;/p&gt;

&lt;p&gt;That distinction is important.&lt;/p&gt;




&lt;h2&gt;
  
  
  15. Running MoneyBuddy Yourself
&lt;/h2&gt;

&lt;p&gt;The complete Day 10 repository is available here:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/tanush326k/murf-livekit-starter/tree/day10" rel="noopener noreferrer"&gt;https://github.com/tanush326k/murf-livekit-starter/tree/day10&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The project contains a backend voice agent and a Next.js frontend.&lt;/p&gt;

&lt;p&gt;The main architecture looks roughly like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;murf-livekit-starter/
│
├── backend/
│   ├── src/
│   │   ├── agent.py
│   │   ├── prompt.py
│   │   ├── db.py
│   │   ├── schemes_data.json
│   │   └── outbound.py
│   │
│   └── tests/
│
└── frontend/
    ├── components/
    ├── app/
    └── styles/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Main components
&lt;/h3&gt;

&lt;p&gt;The project uses:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Python&lt;/li&gt;
&lt;li&gt;LiveKit&lt;/li&gt;
&lt;li&gt;Deepgram&lt;/li&gt;
&lt;li&gt;Gemini&lt;/li&gt;
&lt;li&gt;Murf Falcon&lt;/li&gt;
&lt;li&gt;SQLite&lt;/li&gt;
&lt;li&gt;Next.js&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Environment variables
&lt;/h3&gt;

&lt;p&gt;Create your local environment configuration and add your own credentials.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;MURF_API_KEY=your_key_here
DEEPGRAM_API_KEY=your_key_here
GOOGLE_API_KEY=your_key_here

LIVEKIT_URL=your_livekit_url
LIVEKIT_API_KEY=your_livekit_api_key
LIVEKIT_API_SECRET=your_livekit_api_secret
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Never commit real API keys to GitHub.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After installing the backend and frontend dependencies, start the required services, open the frontend, allow microphone access, and start a conversation.&lt;/p&gt;

&lt;p&gt;The exact setup commands are documented in the repository.&lt;/p&gt;




&lt;h2&gt;
  
  
  16. Troubleshooting
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The agent connects but doesn't speak
&lt;/h3&gt;

&lt;p&gt;Check the backend logs first.&lt;/p&gt;

&lt;p&gt;Then verify:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;LiveKit credentials&lt;/li&gt;
&lt;li&gt;Deepgram configuration&lt;/li&gt;
&lt;li&gt;Gemini configuration&lt;/li&gt;
&lt;li&gt;Murf credentials&lt;/li&gt;
&lt;li&gt;TTS voice configuration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A voice agent is a pipeline.&lt;/p&gt;

&lt;p&gt;One broken component can make the entire application appear silent.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hindi is understood but sounds wrong
&lt;/h3&gt;

&lt;p&gt;Check both sides of the pipeline.&lt;/p&gt;

&lt;p&gt;The STT configuration must support multilingual input.&lt;/p&gt;

&lt;p&gt;The TTS configuration must use the appropriate Indian voice configuration.&lt;/p&gt;

&lt;p&gt;The LLM should also return Hindi using Devanagari when Hindi output is expected.&lt;/p&gt;

&lt;h3&gt;
  
  
  The specialist handoff feels slow
&lt;/h3&gt;

&lt;p&gt;Don't wait for the entire specialist response before starting audio.&lt;/p&gt;

&lt;p&gt;Give the specialist an immediate spoken introduction and then continue generating the detailed response.&lt;/p&gt;

&lt;h3&gt;
  
  
  The frontend shows the wrong active agent
&lt;/h3&gt;

&lt;p&gt;Don't infer agent identity from transcript text.&lt;/p&gt;

&lt;p&gt;Use explicit application state or LiveKit participant metadata.&lt;/p&gt;




&lt;h2&gt;
  
  
  17. What I Would Improve Next
&lt;/h2&gt;

&lt;p&gt;If I continued building MoneyBuddy beyond the challenge, I would focus on production readiness.&lt;/p&gt;

&lt;p&gt;The next areas would include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Stronger multilingual evaluation&lt;/li&gt;
&lt;li&gt;More comprehensive government-scheme sources&lt;/li&gt;
&lt;li&gt;More robust telephony retry handling&lt;/li&gt;
&lt;li&gt;Better tool observability&lt;/li&gt;
&lt;li&gt;Stronger authentication and privacy controls&lt;/li&gt;
&lt;li&gt;Better human-support workflows&lt;/li&gt;
&lt;li&gt;More detailed latency breakdowns&lt;/li&gt;
&lt;li&gt;Production-grade monitoring&lt;/li&gt;
&lt;li&gt;Larger-scale testing with real conversations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal would be to move from a challenge project toward a system that could be responsibly used in a real financial-support environment.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Ten Days Taught Me
&lt;/h2&gt;

&lt;p&gt;The biggest lesson from this challenge is that building a voice agent isn't primarily about choosing the biggest model.&lt;/p&gt;

&lt;p&gt;It's about everything around the model.&lt;/p&gt;

&lt;p&gt;You need:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Good speech recognition.&lt;br&gt;
Fast text-to-speech.&lt;br&gt;
Clear instructions.&lt;br&gt;
Strong guardrails.&lt;br&gt;
Useful tools.&lt;br&gt;
Persistent state.&lt;br&gt;
Reliable transport.&lt;br&gt;
Observability.&lt;br&gt;
Human escalation.&lt;br&gt;
Graceful failure handling.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The LLM is only one part of the system.&lt;/p&gt;

&lt;p&gt;Once voice becomes the interface, latency, state, turn-taking, and response formatting become product decisions — not just engineering details.&lt;/p&gt;

&lt;p&gt;MoneyBuddy started as an agent that could hear me and talk back.&lt;/p&gt;

&lt;p&gt;Ten days later, it can remember users, access financial data, make outbound calls, escalate difficult situations, measure conversations, and hand complex questions to a specialist.&lt;/p&gt;

&lt;p&gt;That progression was the most valuable part of the challenge.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Takeaway
&lt;/h2&gt;

&lt;p&gt;If you're building your own voice agent, my biggest advice is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Don't start by trying to make it do everything.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Make it talk.&lt;/p&gt;

&lt;p&gt;Then give it a job.&lt;/p&gt;

&lt;p&gt;Then give it boundaries.&lt;/p&gt;

&lt;p&gt;Then give it tools.&lt;/p&gt;

&lt;p&gt;Then give it memory.&lt;/p&gt;

&lt;p&gt;Then make it reliable.&lt;/p&gt;

&lt;p&gt;And only after that, start making it smarter.&lt;/p&gt;




&lt;h2&gt;
  
  
  Project
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;MoneyBuddy — Day 10 Repository&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/tanush326k/murf-livekit-starter/tree/day10" rel="noopener noreferrer"&gt;https://github.com/tanush326k/murf-livekit-starter/tree/day10&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Challenge:&lt;/strong&gt;&lt;br&gt;
10 Days of Voice Agents — VoiceForBharat Edition&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Built with:&lt;/strong&gt;&lt;br&gt;
LiveKit • Deepgram • Gemini • Murf Falcon • Python • Next.js • SQLite&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fd0a29azn0le9isa6pox3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fd0a29azn0le9isa6pox3.png" alt=" " width="800" height="366"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If this project helps you build your own voice agent, I'd love to see what you create.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>software</category>
      <category>design</category>
      <category>coding</category>
    </item>
    <item>
      <title>My First Experience with SigNoz</title>
      <dc:creator>Tanush</dc:creator>
      <pubDate>Sat, 11 Jul 2026 03:49:48 +0000</pubDate>
      <link>https://dev.to/tanush_326k/my-first-experience-with-signoz-n12</link>
      <guid>https://dev.to/tanush_326k/my-first-experience-with-signoz-n12</guid>
      <description>&lt;p&gt;Modern applications, especially AI agents and distributed systems, need more than logs to understand what is happening. That's why I explored SigNoz, an open-source observability platform built on OpenTelemetry.&lt;/p&gt;

&lt;p&gt;Setting up SigNoz with Docker was simple. After connecting a sample application, I could view logs, metrics, and traces from a single dashboard within minutes.&lt;/p&gt;

&lt;p&gt;My favorite feature is distributed tracing. Instead of guessing where requests slow down or fail, SigNoz clearly shows the complete request journey across services, making debugging much easier.&lt;/p&gt;

&lt;p&gt;The built-in dashboards provide valuable insights into CPU usage, memory, request latency, throughput, and error rates. Having centralized logs alongside metrics and traces saves time by eliminating the need to switch between multiple tools. I also liked the alerting feature, which helps detect issues before they affect users.&lt;/p&gt;

&lt;p&gt;For AI applications, observability is essential. AI agents make multiple API calls, use tools, and perform complex workflows. SigNoz makes it easier to understand each step, identify failures, measure latency, and optimize performance.&lt;/p&gt;

&lt;p&gt;Overall, my experience with SigNoz was excellent. It combines logs, metrics, traces, dashboards, and alerts into one intuitive platform. Among all its features, distributed tracing impressed me the most because it provides deep visibility into application behavior and simplifies troubleshooting.&lt;/p&gt;

&lt;p&gt;I'm excited to use SigNoz in future AI and cloud-native projects.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>learning</category>
      <category>developer</category>
      <category>networking</category>
    </item>
    <item>
      <title>From Hackathon Chaos to Clean CLI: Reviving My Daily Routine Analyser with GitHub Copilot</title>
      <dc:creator>Tanush</dc:creator>
      <pubDate>Sat, 23 May 2026 15:43:49 +0000</pubDate>
      <link>https://dev.to/tanush_326k/from-hackathon-chaos-to-clean-cli-reviving-my-daily-routine-analyser-with-github-copilot-16ga</link>
      <guid>https://dev.to/tanush_326k/from-hackathon-chaos-to-clean-cli-reviving-my-daily-routine-analyser-with-github-copilot-16ga</guid>
      <description>&lt;h2&gt;
  
  
  🧠 What I Built
&lt;/h2&gt;

&lt;p&gt;I revived a C-based CLI project called &lt;strong&gt;Daily Routine Analyser&lt;/strong&gt;, originally built during a hackathon under extreme time pressure.&lt;/p&gt;

&lt;p&gt;At its core, the tool helps users break down their 24-hour day into:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Study 📚&lt;/li&gt;
&lt;li&gt;Sleep 😴&lt;/li&gt;
&lt;li&gt;Exercise 🏃&lt;/li&gt;
&lt;li&gt;Leisure 🎮&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It then calculates a &lt;strong&gt;simple productivity score out of 10&lt;/strong&gt; and provides insights about daily balance.&lt;/p&gt;

&lt;p&gt;What started as a rushed prototype has now been transformed into a &lt;strong&gt;clean, modular, and readable CLI application&lt;/strong&gt; with improved structure and logic.&lt;/p&gt;

&lt;p&gt;👉 GitHub Repo: &lt;a href="https://github.com/tanush326k/daily-routine-analyser" rel="noopener noreferrer"&gt;https://github.com/tanush326k/daily-routine-analyser&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🎬 Demo
&lt;/h2&gt;

&lt;p&gt;🔗 GitHub Repository:&lt;br&gt;&lt;br&gt;
&lt;a href="https://github.com/tanush326k/daily-routine-analyser" rel="noopener noreferrer"&gt;https://github.com/tanush326k/daily-routine-analyser&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💻 How it works:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User enters daily activity hours&lt;/li&gt;
&lt;li&gt;Program validates total ≤ 24&lt;/li&gt;
&lt;li&gt;System evaluates habit balance&lt;/li&gt;
&lt;li&gt;Outputs:

&lt;ul&gt;
&lt;li&gt;Time breakdown&lt;/li&gt;
&lt;li&gt;Habit insights&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  - Final productivity score (/10)
&lt;/h2&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  🔁 The Comeback Story
&lt;/h2&gt;

&lt;p&gt;The original version of this project was written during a hackathon in a highly rushed environment.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔴 Before (Hackathon Version)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Everything inside a single &lt;code&gt;main()&lt;/code&gt; function&lt;/li&gt;
&lt;li&gt;No modular structure&lt;/li&gt;
&lt;li&gt;Hardcoded logic and repetitive flow&lt;/li&gt;
&lt;li&gt;Built just to “make it work”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It functioned — but it wasn’t maintainable or scalable.&lt;/p&gt;




&lt;h3&gt;
  
  
  🟢 After (Revived Version)
&lt;/h3&gt;

&lt;p&gt;When I revisited it, I focused on turning it into something cleaner and more structured:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Refactored code into modular functions&lt;/li&gt;
&lt;li&gt;Improved scoring logic clarity&lt;/li&gt;
&lt;li&gt;Added structured thinking using &lt;code&gt;struct&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Enhanced readability and maintainability&lt;/li&gt;
&lt;li&gt;Cleaned up nested loops and logic flow&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal wasn’t just to fix it — it was to &lt;strong&gt;make it feel like a real project, not a hackathon leftover&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🤖 My Experience with GitHub Copilot
&lt;/h2&gt;

&lt;p&gt;GitHub Copilot played a key role in this revival process.&lt;/p&gt;

&lt;p&gt;It helped me:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Break down a large &lt;code&gt;main()&lt;/code&gt; function into smaller reusable functions&lt;/li&gt;
&lt;li&gt;Suggest cleaner implementations for scoring logic&lt;/li&gt;
&lt;li&gt;Improve structure using &lt;code&gt;struct&lt;/code&gt; for better data organization&lt;/li&gt;
&lt;li&gt;Reduce unnecessary nesting and improve readability&lt;/li&gt;
&lt;li&gt;Speed up refactoring decisions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of writing everything from scratch again, Copilot acted like a &lt;strong&gt;pair programmer helping restructure legacy code into something clean and modern&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  💡 Key Takeaway
&lt;/h2&gt;

&lt;p&gt;This project taught me that:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“A hackathon project is not the end — it’s the starting point.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Even simple ideas can become meaningful software when revisited with better structure and tools.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 Future Improvements
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Save daily logs to CSV&lt;/li&gt;
&lt;li&gt;Weekly progress tracking system&lt;/li&gt;
&lt;li&gt;Graph-based visualization&lt;/li&gt;
&lt;li&gt;Habit streak tracking system&lt;/li&gt;
&lt;li&gt;Possible GUI/web version&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  👨‍💻 Closing Note
&lt;/h2&gt;

&lt;p&gt;This project represents my journey from:&lt;br&gt;
&lt;strong&gt;“just getting it working” → “making it well-designed and maintainable.”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And GitHub Copilot helped accelerate that transformation significantly.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>githubchallenge</category>
      <category>c</category>
      <category>opensource</category>
    </item>
    <item>
      <title>🧠 Hermes Agent Assistant — A Modular AI Agent System with Planner, Executor &amp; Memory</title>
      <dc:creator>Tanush</dc:creator>
      <pubDate>Sat, 23 May 2026 14:43:32 +0000</pubDate>
      <link>https://dev.to/tanush_326k/hermes-agent-assistant-a-modular-ai-agent-system-with-planner-executor-memory-a49</link>
      <guid>https://dev.to/tanush_326k/hermes-agent-assistant-a-modular-ai-agent-system-with-planner-executor-memory-a49</guid>
      <description>&lt;h2&gt;
  
  
  🚀 What I Built
&lt;/h2&gt;

&lt;p&gt;I built &lt;strong&gt;Hermes Agent Assistant&lt;/strong&gt;, a lightweight agentic AI system designed to demonstrate how modern AI agents can be structured using a modular architecture instead of a simple, single-prompt response model.&lt;/p&gt;

&lt;p&gt;The system takes an abstract user task, breaks it down into structured steps using a dedicated planner, executes those steps sequentially via an execution engine, utilizes targeted tools, and stores the interaction context in a persistent memory system.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚙️ Why I Built This
&lt;/h2&gt;

&lt;p&gt;Most AI applications today are simple wrappers around LLMs that rely on a single input-output loop. I wanted to understand and demonstrate how production-grade, autonomous agent systems operate internally. Specifically, I wanted to explore how:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Planning can be decoupled from execution&lt;/strong&gt; to allow for complex error handling and multi-step reasoning.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tools can be dynamically integrated&lt;/strong&gt; into an agent's reasoning loop.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;State and memory can persist&lt;/strong&gt; across tasks to enable true contextual continuity.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hermes Agent is my architecture simulation built to solve this problem in a highly accessible, lightweight, and scalable format.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 System Architecture &amp;amp; Workflow
&lt;/h2&gt;

&lt;p&gt;The codebase is split cleanly into four autonomous components that mirror real-world AI agent meshes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;       User Request (e.g., /run?task=...)
                     │
                     ▼
       ┌───────────────────────────┐
       │         PLANNER           │ ➔ Slices abstract goals into 
       └─────────────┬─────────────┘   structured, sequential steps.
                     │
                     ▼
       ┌───────────────────────────┐
       │        EXECUTOR           │ ➔ Orchestrates task completion 
       └─────────────┬─────────────┘   by processing each step.
                     │
                     ▼
       ┌───────────────────────────┐
       │       TOOLS LAYER         │ ➔ Provides functional utilities 
       └─────────────┬─────────────┘   (simulated web search, logic, maths).
                     │
                     ▼
       ┌───────────────────────────┐
       │      MEMORY SYSTEM        │ ➔ Persists execution logs statefully 
       └───────────────────────────┘   into local JSON storage.

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  📡 Production Showcases &amp;amp; Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;🌐 Live Production Demo:&lt;/strong&gt; &lt;a href="https://hermes-agent-tanush.onrender.com" rel="noopener noreferrer"&gt;hermes-agent-tanush.onrender.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;💻 Open Source Repository:&lt;/strong&gt; &lt;a href="https://github.com/tanush326k/hermes-agent-assistant.git" rel="noopener noreferrer"&gt;https://github.com/tanush326k/hermes-agent-assistant.git&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🆔 Cloud Deployment Service ID:&lt;/strong&gt; &lt;code&gt;srv-d88revegvqtc73bdj380&lt;/code&gt; (Render Infrastructure Node)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  💡 What Makes It Different
&lt;/h2&gt;

&lt;p&gt;Unlike traditional, rigid APIs or simple conversational chatbots, Hermes Agent:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Thinks in Workflows:&lt;/strong&gt; It establishes an internal chain-of-thought lifecycle before executing anything.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Separates Reasoning from Action:&lt;/strong&gt; Slicing the Planner from the Executor prevents cascading generation failures.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Is Highly Extensible:&lt;/strong&gt; New tools and custom utility logic can be dropped into the system without breaking core routing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Maintains Context Persistence:&lt;/strong&gt; The custom memory module ensures state history is preserved between network calls.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🎛️ API Interaction Example
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Request
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;POST /run?task=search AI agents HTTP/1.1
Host: hermes-agent-tanush.onrender.com

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Response
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"task"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"search AI agents"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"plan"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"analyze request parameters"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; 
    &lt;/span&gt;&lt;span class="s2"&gt;"query tool registry for search utilities"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; 
    &lt;/span&gt;&lt;span class="s2"&gt;"summarize agent data structural output"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"result"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"final structured output successfully generated and written to persistent storage."&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🧰 Tech Stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Core Language:&lt;/strong&gt; Python 3.10+&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Web Framework:&lt;/strong&gt; FastAPI (Asynchronous Server Gateway Interface)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Production Server:&lt;/strong&gt; Uvicorn&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Memory Layer:&lt;/strong&gt; Volatile-to-Persistent JSON state manager&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Architecture Pattern:&lt;/strong&gt; Modular Agentic Workflow Design&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔮 Future Improvements &amp;amp; Roadmap
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🤖 &lt;strong&gt;Real Foundation LLM Integration:&lt;/strong&gt; Swapping out simulated logic for live OpenAI, Anthropic, or local open-source Ollama completion hooks.&lt;/li&gt;
&lt;li&gt;🗄️ &lt;strong&gt;Vector Database Memory Upgrade:&lt;/strong&gt; Transitioning flatfile storage over to a proper semantic vector indexing framework (FAISS / ChromaDB) for semantic chunk lookups.&lt;/li&gt;
&lt;li&gt;🤝 &lt;strong&gt;Multi-Agent Orchestration:&lt;/strong&gt; Upgrading the workflow to host distinct &lt;code&gt;Planner&lt;/code&gt;, &lt;code&gt;Executor&lt;/code&gt;, and &lt;code&gt;Critic&lt;/code&gt; agents working collaboratively with separate system prompts.&lt;/li&gt;
&lt;li&gt;⚡ &lt;strong&gt;Live Server-Sent Events (SSE):&lt;/strong&gt; Integrating real-time execution streaming so client frontends can observe the agent's thought process step-by-step.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>hermesagentchallenge</category>
      <category>devchallenge</category>
      <category>agents</category>
    </item>
    <item>
      <title>Google I/O 2026 and the Rise of the AI Ecosystem</title>
      <dc:creator>Tanush</dc:creator>
      <pubDate>Sat, 23 May 2026 13:25:53 +0000</pubDate>
      <link>https://dev.to/tanush_326k/google-io-2026-and-the-rise-of-the-ai-ecosystem-4jdf</link>
      <guid>https://dev.to/tanush_326k/google-io-2026-and-the-rise-of-the-ai-ecosystem-4jdf</guid>
      <description>&lt;h1&gt;
  
  
  Google I/O 2026: The Year AI Became Truly Developer-First
&lt;/h1&gt;

&lt;p&gt;Every year, Google I/O gives us a glimpse into where technology is heading. But this year felt different.&lt;/p&gt;

&lt;p&gt;Google I/O 2026 wasn’t just about flashy demos or incremental updates — it felt like a major shift toward making AI genuinely usable for developers, creators, and everyday builders. From Gemini integrations to Firebase AI tooling and Flutter improvements, the announcements painted a clear picture: Google wants AI to become part of every workflow, not just a standalone feature.&lt;/p&gt;

&lt;p&gt;After following the keynotes and diving into the sessions, one theme stood out to me:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The barrier between an idea and a working product is shrinking faster than ever.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And honestly, that’s both exciting and a little overwhelming.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Biggest Takeaway: AI Is Becoming Infrastructure
&lt;/h2&gt;

&lt;p&gt;The most impressive part of this year’s announcements wasn’t a single model or product release. It was how deeply AI is now integrated into Google’s ecosystem.&lt;/p&gt;

&lt;p&gt;During the Google Keynote and the “What’s New in Google AI” session, it became obvious that Google is no longer treating AI as an experiment. AI is now infrastructure.&lt;/p&gt;

&lt;p&gt;Instead of asking developers to “add AI,” Google is embedding intelligence directly into:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Android development&lt;/li&gt;
&lt;li&gt;Search experiences&lt;/li&gt;
&lt;li&gt;Firebase workflows&lt;/li&gt;
&lt;li&gt;Cloud tooling&lt;/li&gt;
&lt;li&gt;Flutter applications&lt;/li&gt;
&lt;li&gt;Productivity tools&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That changes how we think about software development entirely.&lt;/p&gt;

&lt;p&gt;We’re moving from:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Writing every feature manually&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Orchestrating systems that can reason, generate, and adapt.&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Firebase + AI Was the Most Practical Announcement
&lt;/h1&gt;

&lt;p&gt;Out of everything announced, the Firebase updates were probably the most exciting for me as a developer.&lt;/p&gt;

&lt;p&gt;Not because they were flashy.&lt;/p&gt;

&lt;p&gt;Because they were immediately useful.&lt;/p&gt;

&lt;p&gt;The new AI-powered Firebase workflows seem focused on solving real development bottlenecks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Faster backend setup&lt;/li&gt;
&lt;li&gt;Smarter debugging&lt;/li&gt;
&lt;li&gt;Automated app flows&lt;/li&gt;
&lt;li&gt;Better AI integrations without huge infrastructure complexity&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For indie developers and small teams, this matters a lot.&lt;/p&gt;

&lt;p&gt;One of the hardest parts of building modern applications is no longer just coding — it’s managing scale, integrations, authentication, analytics, AI APIs, deployment pipelines, and user experience all at once.&lt;/p&gt;

&lt;p&gt;Firebase is evolving into something much bigger than a backend service.&lt;/p&gt;

&lt;p&gt;It’s becoming an AI-assisted development platform.&lt;/p&gt;

&lt;p&gt;And that’s a huge shift.&lt;/p&gt;




&lt;h1&gt;
  
  
  Flutter Quietly Had One of the Best Sessions
&lt;/h1&gt;

&lt;p&gt;The “What’s New in Flutter” session didn’t generate the same hype as the AI announcements, but I think it deserves more attention.&lt;/p&gt;

&lt;p&gt;Flutter continues to mature into one of the most efficient cross-platform frameworks available today. What stood out this year was Google’s focus on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Performance improvements&lt;/li&gt;
&lt;li&gt;Better tooling&lt;/li&gt;
&lt;li&gt;Faster iteration cycles&lt;/li&gt;
&lt;li&gt;Stronger AI-assisted workflows for UI development&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The interesting part is how AI and Flutter now complement each other.&lt;/p&gt;

&lt;p&gt;AI can accelerate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;UI generation&lt;/li&gt;
&lt;li&gt;Component scaffolding&lt;/li&gt;
&lt;li&gt;Documentation&lt;/li&gt;
&lt;li&gt;Testing&lt;/li&gt;
&lt;li&gt;State management suggestions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But Flutter still gives developers control over the final experience.&lt;/p&gt;

&lt;p&gt;That balance matters.&lt;/p&gt;

&lt;p&gt;A lot of AI-generated software today still feels generic. Flutter remains one of the best tools for developers who want productivity without sacrificing creativity.&lt;/p&gt;




&lt;h1&gt;
  
  
  AI Coding Assistants Are Entering a New Phase
&lt;/h1&gt;

&lt;p&gt;Another thing I noticed across multiple sessions was the evolution of AI coding tools.&lt;/p&gt;

&lt;p&gt;Last year, AI assistants mostly helped autocomplete code.&lt;/p&gt;

&lt;p&gt;This year, the focus shifted toward:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multi-step reasoning&lt;/li&gt;
&lt;li&gt;Context-aware workflows&lt;/li&gt;
&lt;li&gt;Architecture suggestions&lt;/li&gt;
&lt;li&gt;End-to-end development assistance&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s a massive leap.&lt;/p&gt;

&lt;p&gt;We’re quickly approaching a world where developers spend less time writing boilerplate and more time:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Designing systems&lt;/li&gt;
&lt;li&gt;Reviewing logic&lt;/li&gt;
&lt;li&gt;Shaping product experiences&lt;/li&gt;
&lt;li&gt;Making architectural decisions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ironically, AI may make human creativity even more valuable.&lt;/p&gt;

&lt;p&gt;Because when everyone can generate code quickly, the real differentiator becomes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Product thinking&lt;/li&gt;
&lt;li&gt;User empathy&lt;/li&gt;
&lt;li&gt;Taste&lt;/li&gt;
&lt;li&gt;Problem selection&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  The Most Underrated Shift: Developer Accessibility
&lt;/h1&gt;

&lt;p&gt;One thing I think people are underestimating is how much easier entry into software development is becoming.&lt;/p&gt;

&lt;p&gt;A few years ago, building an AI-powered application required:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ML expertise&lt;/li&gt;
&lt;li&gt;Infrastructure knowledge&lt;/li&gt;
&lt;li&gt;GPU access&lt;/li&gt;
&lt;li&gt;Large engineering budgets&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now?&lt;br&gt;
A solo developer can prototype surprisingly advanced applications using Google’s ecosystem.&lt;/p&gt;

&lt;p&gt;That democratization is probably more important than any single feature announcement.&lt;/p&gt;

&lt;p&gt;The next generation of builders won’t need permission, massive teams, or huge funding rounds to create impactful products.&lt;/p&gt;

&lt;p&gt;That changes innovation itself.&lt;/p&gt;




&lt;h1&gt;
  
  
  My Biggest Question After I/O 2026
&lt;/h1&gt;

&lt;p&gt;As exciting as everything looks, I still have one major question:&lt;/p&gt;

&lt;p&gt;How do we prevent AI-assisted development from making software feel identical?&lt;/p&gt;

&lt;p&gt;When tools generate interfaces, code structures, and workflows automatically, there’s a risk that creativity becomes standardized.&lt;/p&gt;

&lt;p&gt;The challenge for developers moving forward won’t just be learning AI tools.&lt;/p&gt;

&lt;p&gt;It’ll be learning how to use them without losing originality.&lt;/p&gt;

&lt;p&gt;The best developers in the AI era may not be the people who automate everything.&lt;/p&gt;

&lt;p&gt;They may be the people who know where human judgment still matters most.&lt;/p&gt;




&lt;h1&gt;
  
  
  Final Thoughts
&lt;/h1&gt;

&lt;p&gt;Google I/O 2026 felt less like a product showcase and more like a preview of a new development era.&lt;/p&gt;

&lt;p&gt;The biggest innovation wasn’t one model, framework, or API.&lt;/p&gt;

&lt;p&gt;It was the growing idea that software creation itself is changing.&lt;/p&gt;

&lt;p&gt;Developers are transitioning from:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Writing every system manually&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Collaborating with intelligent tools.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And while the technology is impressive, the real opportunity lies in what people choose to build with it.&lt;/p&gt;

&lt;p&gt;That’s the part I’m most excited about.&lt;/p&gt;

&lt;p&gt;Because the future of development won’t belong to AI alone.&lt;/p&gt;

&lt;p&gt;It’ll belong to developers who learn how to work alongside it creatively.&lt;/p&gt;




</description>
      <category>devchallenge</category>
      <category>googleiochallenge</category>
    </item>
    <item>
      <title>Local AI is Here: Which Gemma 4 Model Should You Actually Use? 🚀</title>
      <dc:creator>Tanush</dc:creator>
      <pubDate>Sat, 23 May 2026 13:09:08 +0000</pubDate>
      <link>https://dev.to/tanush_326k/local-ai-is-here-which-gemma-4-model-should-you-actually-use-454i</link>
      <guid>https://dev.to/tanush_326k/local-ai-is-here-which-gemma-4-model-should-you-actually-use-454i</guid>
      <description>&lt;h1&gt;
  
  
  🚀 The Local AI Shift: Choosing Your Gemma 4 Tooling Strategy
&lt;/h1&gt;

&lt;p&gt;The landscape of Large Language Models (LLMs) is shifting. For a long time, the "smart" models lived exclusively in the cloud, behind expensive APIs and strict rate limits.&lt;/p&gt;

&lt;p&gt;With the release of &lt;strong&gt;Gemma 4&lt;/strong&gt;, Google has pushed the boundary of what "open weights" can actually do. From native multimodality to a massive 128K context window, Gemma 4 isn't just a research project—it's a developer's toolkit.&lt;/p&gt;

&lt;p&gt;But as any developer knows, bigger isn't always better. The Gemma 4 family comes in three distinct flavors. If you're staring at Hugging Face wondering which one to download, this guide is for you.&lt;/p&gt;




&lt;h2&gt;
  
  
  🛠️ The Gemma 4 Lineup: A Breakdown
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model Variant&lt;/th&gt;
&lt;th&gt;Best For&lt;/th&gt;
&lt;th&gt;Architecture Focus&lt;/th&gt;
&lt;th&gt;Key Benefit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Gemma 4 (2B &amp;amp; 4B)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Mobile, IoT, Browser AI&lt;/td&gt;
&lt;td&gt;Extreme Edge Execution&lt;/td&gt;
&lt;td&gt;Zero API Cost &amp;amp; Full Privacy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Gemma 4 (31B Dense)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Local Workstations, RAG&lt;/td&gt;
&lt;td&gt;Balanced "Goldilocks" Dense&lt;/td&gt;
&lt;td&gt;High Stability &amp;amp; Reasoning&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Gemma 4 (26B MoE)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;High-Throughput Engine&lt;/td&gt;
&lt;td&gt;Mixture-of-Experts (MoE)&lt;/td&gt;
&lt;td&gt;Speed &amp;amp; Complex Logic&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  1. The "Edge" Experts (2B and 4B)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best for:&lt;/strong&gt; Mobile apps, browser-based AI, IoT, and Raspberry Pi 5.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Blueprint:&lt;/strong&gt; These models are optimized for the extreme edge. We are talking about AI that runs locally on a Pixel phone or a tiny credit-card-sized computer without needing an internet connection.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Use Case:&lt;/strong&gt; Imagine a privacy-first personal assistant that lives entirely on a user's device, or a smart-home controller that processes voice and text locally to reduce latency.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why choose this?&lt;/strong&gt; Minimal RAM usage, zero API costs, and maximum data privacy.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. The Versatile Workhorse (31B Dense)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best for:&lt;/strong&gt; Local workstations, server-grade local execution, and general-purpose apps.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Blueprint:&lt;/strong&gt; The 31B Dense model is the "Goldilocks" of the family. It bridges the gap between the lightweight edge models and the high-performance MoE versions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Use Case:&lt;/strong&gt; Building a local coding assistant or a specialized RAG (Retrieval-Augmented Generation) pipeline where you need high reliability and stability across a wide variety of tasks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why choose this?&lt;/strong&gt; It offers a powerful balance of reasoning capabilities and local deployability on consumer GPUs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. The Reasoning Specialist (26B MoE)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best for:&lt;/strong&gt; High-throughput applications, complex reasoning, and advanced logic.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Blueprint:&lt;/strong&gt; The Mixture-of-Experts (MoE) architecture is the secret sauce here. Instead of activating every parameter for every prompt, it only uses a fraction of its weights, making it incredibly efficient without sacrificing "intelligence."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Use Case:&lt;/strong&gt; Complex data analysis, automated software engineering tasks, or any application where you need "smarter" reasoning but can't afford the latency of a massive 100B+ parameter model.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why choose this?&lt;/strong&gt; High throughput (speed) and superior reasoning logic.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🌟 The "Game Changer" Features
&lt;/h2&gt;

&lt;p&gt;Regardless of which size you choose, three features make Gemma 4 a powerhouse for developers:&lt;/p&gt;

&lt;p&gt;🖼️ &lt;strong&gt;Native Multimodality&lt;/strong&gt;&lt;br&gt;
Gemma 4 doesn't just "read" text; it understands images and (in the smaller models) audio natively. This opens the door for apps that can "see" a UI screenshot and write the HTML/CSS to recreate it, or "hear" a meeting and summarize the key action items.&lt;/p&gt;

&lt;p&gt;📚 &lt;strong&gt;The 128K Context Window&lt;/strong&gt;&lt;br&gt;
A 128K context window is a massive deal for developers. You can now feed an entire library of documentation, several large source code files, or a massive PDF into the prompt without the model "forgetting" the beginning.&lt;/p&gt;

&lt;p&gt;🔓 &lt;strong&gt;Open Weights, Open Innovation&lt;/strong&gt;&lt;br&gt;
Because these are open weights, we aren't just "users" of an API; we are owners of the model. We can fine-tune Gemma 4 on our own proprietary data, quantize it to run on weaker hardware, and deploy it in air-gapped environments.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 How to Get Started Right Now
&lt;/h2&gt;

&lt;p&gt;You don't need a supercomputer to start experimenting. Choose your preferred integration path below:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🛠️ &lt;strong&gt;The "Zero Setup" Path&lt;/strong&gt;&lt;br&gt;
Use Google AI Studio to test the models via API immediately. Great for fast prototyping.&lt;/p&gt;

&lt;p&gt;💻 &lt;strong&gt;The "Local Dev" Path&lt;/strong&gt;&lt;br&gt;
Download the weights from Hugging Face or Kaggle and run them using &lt;strong&gt;Ollama&lt;/strong&gt; or &lt;strong&gt;vLLM&lt;/strong&gt; directly in your terminal.&lt;/p&gt;

&lt;p&gt;🌐 &lt;strong&gt;The "Free Tier" Path&lt;/strong&gt;&lt;br&gt;
Access the 31B model via OpenRouter's free tier to test the logic before committing to a local install.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🧠 Final Thoughts
&lt;/h2&gt;

&lt;p&gt;The "Local AI moment" is about moving from &lt;em&gt;AI as a Service&lt;/em&gt; to &lt;strong&gt;AI as an Ingredient&lt;/strong&gt;. Whether you are building a tiny app for a Raspberry Pi or a massive reasoning engine for an enterprise, Gemma 4 provides the architectural flexibility to make it happen.&lt;/p&gt;

&lt;h3&gt;
  
  
  👇 Let's Connect!
&lt;/h3&gt;

&lt;p&gt;Which model are you planning to build with? What's your current local AI stack look like? Let's discuss in the comments!&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>gemmachallenge</category>
      <category>gemma</category>
      <category>googleaichallenge</category>
    </item>
    <item>
      <title>🚀 Building Smarter with Google Cloud</title>
      <dc:creator>Tanush</dc:creator>
      <pubDate>Wed, 29 Apr 2026 04:39:27 +0000</pubDate>
      <link>https://dev.to/tanush_326k/building-smarter-with-google-cloud-2bh9</link>
      <guid>https://dev.to/tanush_326k/building-smarter-with-google-cloud-2bh9</guid>
      <description>&lt;p&gt;🚀 From Curiosity to Creation: How Google Cloud NEXT Changed the Way I Think About Building&lt;/p&gt;

&lt;p&gt;«“The future isn’t built by those who wait — it’s built by those who experiment.”»&lt;/p&gt;

&lt;p&gt;🌩️ My First Step into Google Cloud (and Why It Felt Different)&lt;/p&gt;

&lt;p&gt;Before diving into Google Cloud, I used to think cloud platforms were just about storage, servers, and scaling. But when I explored what Google showcased at Google Cloud NEXT, I realized something bigger:&lt;/p&gt;

&lt;p&gt;👉 It’s not just infrastructure — it’s intelligence + innovation combined.&lt;/p&gt;

&lt;p&gt;What stood out to me wasn’t just the tools, but the philosophy:&lt;/p&gt;

&lt;p&gt;«Build faster. Think bigger. Let AI handle the heavy lifting.»&lt;/p&gt;




&lt;p&gt;🧠 The Moment That Changed Everything: AI Meets Cloud&lt;/p&gt;

&lt;p&gt;The most exciting part of Google Cloud NEXT was how deeply AI is integrated into everything.&lt;/p&gt;

&lt;p&gt;We’re not just writing code anymore — we’re collaborating with AI.&lt;/p&gt;

&lt;p&gt;Imagine:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Writing backend logic with AI assistance&lt;/li&gt;
&lt;li&gt;Deploying apps without worrying about infrastructure&lt;/li&gt;
&lt;li&gt;Analyzing huge datasets in seconds&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This shift made me realize:&lt;/p&gt;

&lt;p&gt;«The developer of today is becoming more of a creator + problem solver, not just a coder.»&lt;/p&gt;




&lt;p&gt;⚙️ What I Explored (And Loved)&lt;/p&gt;

&lt;p&gt;Here are a few things that genuinely impressed me:&lt;/p&gt;

&lt;p&gt;🔹 1. Vertex AI — Your AI Playground&lt;/p&gt;

&lt;p&gt;Instead of struggling to build ML models from scratch, Google Cloud gives you a complete ecosystem.&lt;/p&gt;

&lt;p&gt;💡 What I tried:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Experimented with prompts&lt;/li&gt;
&lt;li&gt;Explored how models can be tuned&lt;/li&gt;
&lt;li&gt;Understood how apps can be powered by AI&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 It felt like having a brain inside my application.&lt;/p&gt;




&lt;p&gt;🔹 2. Serverless = Freedom&lt;/p&gt;

&lt;p&gt;The idea that I can deploy apps without managing servers blew my mind.&lt;/p&gt;

&lt;p&gt;No worrying about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Scaling&lt;/li&gt;
&lt;li&gt;Downtime&lt;/li&gt;
&lt;li&gt;Infrastructure setup&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Just focus on:&lt;/p&gt;

&lt;p&gt;«✨ Building something meaningful»&lt;/p&gt;




&lt;p&gt;🔹 3. Real-Time Data Feels Magical&lt;/p&gt;

&lt;p&gt;With Google Cloud tools, data isn’t just stored — it’s alive.&lt;/p&gt;

&lt;p&gt;You can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Process streams&lt;/li&gt;
&lt;li&gt;Analyze instantly&lt;/li&gt;
&lt;li&gt;Make decisions in real-time&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And that’s where innovation happens.&lt;/p&gt;




&lt;p&gt;🔥 A Small Idea That Became Big&lt;/p&gt;

&lt;p&gt;Inspired by what I learned, I thought:&lt;/p&gt;

&lt;p&gt;👉 What if I build a smart student assistant using Google Cloud?&lt;/p&gt;

&lt;p&gt;Something that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Answers questions&lt;/li&gt;
&lt;li&gt;Helps with notes&lt;/li&gt;
&lt;li&gt;Suggests learning paths&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI models&lt;/li&gt;
&lt;li&gt;Cloud functions&lt;/li&gt;
&lt;li&gt;Real-time data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s when it clicked:&lt;/p&gt;

&lt;p&gt;«Google Cloud doesn’t just give tools — it gives possibilities.»&lt;/p&gt;




&lt;p&gt;🌍 Why This Matters for Developers Like Us&lt;/p&gt;

&lt;p&gt;We’re entering a phase where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Speed matters&lt;/li&gt;
&lt;li&gt;Ideas matter more than resources&lt;/li&gt;
&lt;li&gt;Anyone can build something impactful&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Google Cloud is lowering the barrier.&lt;/p&gt;

&lt;p&gt;You don’t need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Huge teams&lt;/li&gt;
&lt;li&gt;Expensive setups&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You just need:&lt;/p&gt;

&lt;p&gt;«💡 Curiosity + willingness to try»&lt;/p&gt;




&lt;p&gt;🚀 My Biggest Takeaway&lt;/p&gt;

&lt;p&gt;After exploring Google Cloud NEXT, one thought stayed with me:&lt;/p&gt;

&lt;p&gt;«“Don’t just learn technology. Use it to create something that didn’t exist yesterday.”»&lt;/p&gt;




&lt;p&gt;✨ Final Thoughts&lt;/p&gt;

&lt;p&gt;Google Cloud NEXT isn’t just an event — it’s a glimpse into the future.&lt;/p&gt;

&lt;p&gt;A future where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI is your teammate&lt;/li&gt;
&lt;li&gt;Cloud is your foundation&lt;/li&gt;
&lt;li&gt;And ideas are your only limit&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And honestly?&lt;/p&gt;

&lt;p&gt;👉 I’m just getting started.&lt;/p&gt;




&lt;p&gt;If you're a student or beginner like me — don’t wait to feel ready. Start exploring. The cloud is more accessible than ever.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>cloudnextchallenge</category>
      <category>googlecloud</category>
      <category>cloud</category>
    </item>
  </channel>
</rss>
