<?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: Sanyam Kansal</title>
    <description>The latest articles on DEV Community by Sanyam Kansal (@sanyamkansal).</description>
    <link>https://dev.to/sanyamkansal</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%2F4079243%2Fe51ee1db-c3a7-440f-bef4-5b75cb61366d.png</url>
      <title>DEV Community: Sanyam Kansal</title>
      <link>https://dev.to/sanyamkansal</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sanyamkansal"/>
    <language>en</language>
    <item>
      <title>Building Dukaan Sathi: An AI Voice Assistant for India's Kirana Stores</title>
      <dc:creator>Sanyam Kansal</dc:creator>
      <pubDate>Sat, 15 Aug 2026 17:13:55 +0000</pubDate>
      <link>https://dev.to/sanyamkansal/building-dukaan-sathi-an-ai-voice-assistant-for-indias-kirana-stores-47ja</link>
      <guid>https://dev.to/sanyamkansal/building-dukaan-sathi-an-ai-voice-assistant-for-indias-kirana-stores-47ja</guid>
      <description>&lt;p&gt;Over the past 9 days, I took on the &lt;strong&gt;Voice for Bharat Challenge&lt;/strong&gt; to build an AI Voice Agent tailored for India. The result? &lt;strong&gt;Dukaan Sathi&lt;/strong&gt;, a fully functional voice assistant designed specifically for local Kirana store owners (dukaandars).&lt;/p&gt;

&lt;p&gt;Here is the story of how Dukaan Sathi evolved from a simple starter template into a multi-agent powerhouse capable of managing inventory, handling escalations, and speaking in authentic, pure Hindi.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 The Problem &amp;amp; The Solution
&lt;/h2&gt;

&lt;p&gt;India runs on Kirana stores. Dukaandars are incredibly busy people, often juggling inventory, customer queries, and billing all at once. They don’t have the time to sit at a laptop and type data into complicated software.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why voice?&lt;/strong&gt; Voice is the most natural, frictionless interface. I wanted a Dukaandar to be able to just speak to their phone: &lt;em&gt;"Mere paas kitna chawal bacha hai?"&lt;/em&gt; (How much rice do I have left?) and get an instant, helpful response.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dukaan Sathi&lt;/strong&gt; is that solution. It is a helpful, polite, and intelligent voice agent that acts as a digital assistant for the store.&lt;/p&gt;




&lt;h2&gt;
  
  
  🛠️ Key Features Built Over 9 Days
&lt;/h2&gt;

&lt;p&gt;Dukaan Sathi isn't just a basic chatbot with text-to-speech bolted on. It's a complete, intelligent system. Here are the highlights of what I built:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Authentic Indian Voices:&lt;/strong&gt; Powered by &lt;strong&gt;Murf Falcon&lt;/strong&gt;, Dukaan Sathi uses extremely natural-sounding Indian voices. The main agent uses a polite female voice (Anisha), ensuring a welcoming tone.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Strict Native Script Guardrails:&lt;/strong&gt; One of the most important features I enforced was ensuring the LLM &lt;em&gt;always&lt;/em&gt; outputs Hindi in the native Devanagari script (नमस्ते) and &lt;em&gt;never&lt;/em&gt; in Romanized Hinglish (namaste). This ensures the text-to-speech engine pronounces words perfectly without awkward accents.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Persistent Memory:&lt;/strong&gt; The agent remembers returning customers! Using SQLite and LiveKit's Job Context, the agent seamlessly pulls up past interactions so it doesn't have to re-ask for your name.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tool Use &amp;amp; Analytics:&lt;/strong&gt; The agent can actively fetch stock balances and log call outcomes. I built a real-time &lt;strong&gt;Call Analytics Dashboard&lt;/strong&gt; in Next.js that updates the moment a call ends!&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Human Escalation:&lt;/strong&gt; When a customer gets angry or the agent doesn't know the answer, it triggers a &lt;code&gt;create_escalation&lt;/code&gt; tool that saves a transcript and logs a ticket for the human owner to review.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-Agent Handoffs:&lt;/strong&gt; The crowning achievement! If a user asks for a refund, Dukaan Sathi transfers the call to a dedicated Returns Specialist. The caller actually hears the voice change to a completely new male voice (Samar), and he instantly knows the context of the conversation.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  🧗 The Difficult Parts &amp;amp; Lessons Learned
&lt;/h2&gt;

&lt;p&gt;Pretending everything worked perfectly on the first try wouldn't be helpful! Here are some hurdles I faced and how I solved them:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. The Language Barrier (Romanized vs. Devanagari)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;The Problem:&lt;/strong&gt; LLMs naturally default to writing Hindi in the Latin alphabet (Hinglish) because that's how a lot of their training data looks. However, when you feed Romanized Hindi into an Indian Text-to-Speech engine, the pronunciation often breaks down or sounds unnatural.&lt;br&gt;
&lt;strong&gt;The Solution:&lt;/strong&gt; Heavy prompt engineering. I had to explicitly instruct the agent: &lt;em&gt;"Always write every language in its own native script. Hindi -&amp;gt; Devanagari (नमस्ते), never romanized."&lt;/em&gt; This instantly fixed the pronunciation issues.&lt;/p&gt;




&lt;h2&gt;
  
  
  🛠️ Build Your Own Voice Agent
&lt;/h2&gt;

&lt;p&gt;Want to build your own version of Dukaan Sathi? It's easier than you think. You need four main components:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Speech-to-Text (STT):&lt;/strong&gt; To transcribe the user's voice.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LLM:&lt;/strong&gt; The "brain" (e.g., OpenAI or Gemini).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Text-to-Speech (TTS):&lt;/strong&gt; To generate the agent's voice (Murf Falcon is highly recommended for Indian voices).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real-time Transport:&lt;/strong&gt; LiveKit handles the ultra-low latency WebRTC streaming.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Getting Started
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Clone the Starter:&lt;/strong&gt; Start with a LiveKit + Next.js + Python template.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Environment Variables:&lt;/strong&gt; You'll need API keys for LiveKit, your LLM, and your TTS provider. &lt;strong&gt;Never commit these to GitHub!&lt;/strong&gt; Always store them in a &lt;code&gt;.env.local&lt;/code&gt; (frontend) and &lt;code&gt;.env&lt;/code&gt; (backend) file.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Run the Backend (Python):&lt;/strong&gt; Type &lt;code&gt;uv run src/agent.py dev&lt;/code&gt; in your terminal.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Run the Frontend (Next.js):&lt;/strong&gt; Type &lt;code&gt;npm run dev&lt;/code&gt; in your terminal.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test it:&lt;/strong&gt; Open &lt;code&gt;localhost:3000&lt;/code&gt;, click connect, and start talking! You can write a custom &lt;code&gt;SYSTEM_PROMPT&lt;/code&gt; in &lt;code&gt;agent.py&lt;/code&gt; to give your agent any personality you want.&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;This 10-day challenge proved that voice AI is no longer a futuristic concept—it is accessible, buildable, and ready to solve real-world problems in India today. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Thanks to LiveKit and Murf AI for providing the incredible tools that made this possible!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Want to see the code behind Dukaan Sathi? Check out the full source code for my 10-day journey on GitHub here: &lt;a href="https://github.com/sanyamkansal/AI-Voice-Agent" rel="noopener noreferrer"&gt;https://github.com/sanyamkansal/AI-Voice-Agent&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>gemini</category>
      <category>buildinpublic</category>
    </item>
  </channel>
</rss>
