<?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: Roma Gupta</title>
    <description>The latest articles on DEV Community by Roma Gupta (@roma_gupta_750b944d80482e).</description>
    <link>https://dev.to/roma_gupta_750b944d80482e</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%2F4078286%2F7e51faf3-d02d-41e1-a83b-c4c1789ae4a4.jpg</url>
      <title>DEV Community: Roma Gupta</title>
      <link>https://dev.to/roma_gupta_750b944d80482e</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/roma_gupta_750b944d80482e"/>
    <language>en</language>
    <item>
      <title>Building Krishi Mitra: An AI Voice Agent for Indian Farmers with LiveKit, Gemini and Murf Falcon 🌾🎙️</title>
      <dc:creator>Roma Gupta</dc:creator>
      <pubDate>Sat, 15 Aug 2026 00:50:09 +0000</pubDate>
      <link>https://dev.to/roma_gupta_750b944d80482e/building-krishi-mitra-an-ai-voice-agent-for-indian-farmers-with-livekit-gemini-and-murf-falcon-1ng1</link>
      <guid>https://dev.to/roma_gupta_750b944d80482e/building-krishi-mitra-an-ai-voice-agent-for-indian-farmers-with-livekit-gemini-and-murf-falcon-1ng1</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Building a voice agent is easy to describe. Building one that can remember, use real-world tools, make calls, involve humans, and hand off to specialists is a very different engineering problem.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;What if a farmer could simply speak to an AI assistant instead of navigating through multiple applications, menus, and forms?&lt;/p&gt;

&lt;p&gt;That was the idea behind &lt;strong&gt;Krishi Mitra – AI Voice Assistant for Indian Farmers&lt;/strong&gt;, which I built as part of the &lt;strong&gt;10 Days of Voice Agents – VoiceForBharat Edition&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I chose the &lt;strong&gt;Farm &amp;amp; Field&lt;/strong&gt; track because agriculture is a domain where timely information can be valuable. Farmers may need information about weather, rainfall, crops, agricultural guidance, government schemes, market information, or a specific farming problem.&lt;/p&gt;

&lt;p&gt;A voice interface makes these interactions more natural.&lt;/p&gt;

&lt;p&gt;Instead of typing:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What is the weather forecast for tomorrow?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;a farmer can simply ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"कल बारिश की संभावना कितनी है?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And the answer can come back as voice.&lt;/p&gt;

&lt;p&gt;But I quickly realized that making an AI speak was only the beginning.&lt;/p&gt;

&lt;p&gt;The interesting engineering work was everything around the conversation:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;memory, tools, guardrails, outbound calls, human escalation, analytics, and specialist agents.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That became the real story of Krishi Mitra.&lt;/p&gt;




&lt;h1&gt;
  
  
  What Is Krishi Mitra?
&lt;/h1&gt;

&lt;p&gt;Krishi Mitra is a voice-based agricultural assistant designed to help Indian farmers through natural voice conversations.&lt;/p&gt;

&lt;p&gt;It can assist with topics such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Crop information&lt;/li&gt;
&lt;li&gt;Weather&lt;/li&gt;
&lt;li&gt;Rain alerts&lt;/li&gt;
&lt;li&gt;Agricultural guidance&lt;/li&gt;
&lt;li&gt;Government schemes&lt;/li&gt;
&lt;li&gt;Market information&lt;/li&gt;
&lt;li&gt;Farmer-specific assistance&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The system supports Hindi and English interaction and is designed to handle code-mixed conversations as well.&lt;/p&gt;

&lt;p&gt;The goal is not to replace agricultural experts.&lt;/p&gt;

&lt;p&gt;Instead, Krishi Mitra is designed to provide useful assistance while knowing when it should use a tool, when it should use a specialist, and when it should involve a human expert.&lt;/p&gt;




&lt;h1&gt;
  
  
  The Architecture
&lt;/h1&gt;

&lt;p&gt;At its core, Krishi Mitra follows a standard real-time voice-agent pipeline:&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%2Fyjv7pow54kyizijfmd2b.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%2Fyjv7pow54kyizijfmd2b.png" alt=" " width="799" height="648"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The main technologies are:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;th&gt;Role&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Real-time voice&lt;/td&gt;
&lt;td&gt;LiveKit Agents&lt;/td&gt;
&lt;td&gt;Handles the voice session and agent execution&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Speech-to-text&lt;/td&gt;
&lt;td&gt;Deepgram&lt;/td&gt;
&lt;td&gt;Converts farmer speech into text&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LLM&lt;/td&gt;
&lt;td&gt;Google Gemini&lt;/td&gt;
&lt;td&gt;Understands requests and generates responses&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Text-to-speech&lt;/td&gt;
&lt;td&gt;Murf Falcon&lt;/td&gt;
&lt;td&gt;Converts responses into natural voice&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Memory&lt;/td&gt;
&lt;td&gt;SQLite&lt;/td&gt;
&lt;td&gt;Stores persistent farmer information&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Weather tool&lt;/td&gt;
&lt;td&gt;Open-Meteo&lt;/td&gt;
&lt;td&gt;Provides live weather information&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dashboard&lt;/td&gt;
&lt;td&gt;Streamlit&lt;/td&gt;
&lt;td&gt;Provides analytics and human-help monitoring&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Telephony&lt;/td&gt;
&lt;td&gt;SIP / Linphone&lt;/td&gt;
&lt;td&gt;Enables outbound voice calls&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

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

&lt;p&gt;A useful voice agent is a combination of &lt;strong&gt;speech, reasoning, memory, tools, communication infrastructure, and application logic&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  Understanding the Voice Pipeline
&lt;/h1&gt;

&lt;h2&gt;
  
  
  1. Speech-to-Text
&lt;/h2&gt;

&lt;p&gt;The first step is converting the farmer's voice into text.&lt;/p&gt;

&lt;p&gt;Krishi Mitra uses &lt;strong&gt;Deepgram&lt;/strong&gt; for speech-to-text.&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;Farmer speaks
     ↓
Microphone / Voice Session
     ↓
Deepgram
     ↓
   Text 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;blockquote&gt;
&lt;p&gt;"आज Mumbai का मौसम कैसा है?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;becomes text that the agent can process.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. LLM — Understanding the Request
&lt;/h2&gt;

&lt;p&gt;The text is passed to &lt;strong&gt;Google Gemini&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Gemini determines what the farmer is asking and what should happen next.&lt;/p&gt;

&lt;p&gt;For a simple conversation, it can generate a response directly.&lt;/p&gt;

&lt;p&gt;For a weather question, however, the system should not simply generate an answer from the model.&lt;/p&gt;

&lt;p&gt;It needs a real tool.&lt;/p&gt;

&lt;p&gt;That is where tool calling becomes important.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Text-to-Speech
&lt;/h2&gt;

&lt;p&gt;Once the response is generated, &lt;strong&gt;Murf Falcon&lt;/strong&gt; converts the text into voice.&lt;/p&gt;

&lt;p&gt;This was particularly important for the Farm &amp;amp; Field use case because the interaction should feel like a natural conversation rather than a text chatbot being read aloud.&lt;/p&gt;

&lt;p&gt;The overall flow becomes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Farmer Voice
     ↓
Deepgram
     ↓
Google Gemini
     ↓
Murf Falcon
     ↓
Farmer Voice
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  4. Real-Time Transport
&lt;/h2&gt;

&lt;p&gt;Voice applications are different from normal request-response applications.&lt;/p&gt;

&lt;p&gt;The user expects to speak and receive a response naturally.&lt;/p&gt;

&lt;p&gt;Krishi Mitra uses &lt;strong&gt;LiveKit Agents&lt;/strong&gt; as the real-time voice infrastructure connecting the conversation components.&lt;/p&gt;

&lt;p&gt;This provides the foundation for browser-based voice conversations and later enabled the project to explore outbound voice calls.&lt;/p&gt;




&lt;h1&gt;
  
  
  Giving the Agent a Job and Guardrails
&lt;/h1&gt;

&lt;p&gt;One of the first lessons I learned was that an AI voice agent needs more than an LLM.&lt;/p&gt;

&lt;p&gt;It needs a clearly defined identity and responsibility.&lt;/p&gt;

&lt;p&gt;Krishi Mitra was given:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A clear agricultural identity&lt;/li&gt;
&lt;li&gt;Specific objectives&lt;/li&gt;
&lt;li&gt;Agricultural responsibilities&lt;/li&gt;
&lt;li&gt;Conversational personality&lt;/li&gt;
&lt;li&gt;Language behavior&lt;/li&gt;
&lt;li&gt;Code-mixing behavior&lt;/li&gt;
&lt;li&gt;Safety guardrails&lt;/li&gt;
&lt;li&gt;Escalation behavior&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This matters because an agricultural assistant should not confidently answer every possible question.&lt;/p&gt;

&lt;p&gt;For example, if a farmer asks for current market information and the system does not have a verified current source, it should not simply invent a price.&lt;/p&gt;

&lt;p&gt;The principle is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;If current information cannot be verified, don't guess.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This became an important design principle throughout the project.&lt;/p&gt;




&lt;h1&gt;
  
  
  Giving Krishi Mitra Memory
&lt;/h1&gt;

&lt;p&gt;A normal chatbot can forget the conversation once the session ends.&lt;/p&gt;

&lt;p&gt;For a farmer assistant, that can become frustrating.&lt;/p&gt;

&lt;p&gt;Imagine telling an assistant:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"मैं Jaipur में गेहूं उगाता हूँ और मेरे पास 5 acres जमीन है।"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then having to repeat the same information every time.&lt;/p&gt;

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

&lt;p&gt;The farmer profile 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
crops_grown
land_size
district
irrigation_type
last_interaction
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The basic flow is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;First Conversation
       ↓
Farmer provides information
       ↓
Permission to remember
       ↓
SQLite Database
       ↓
Future Conversation
       ↓
Retrieve Farmer Context
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For example, in a later conversation, Krishi Mitra can recognize that the farmer previously mentioned their district and crop.&lt;/p&gt;

&lt;p&gt;This makes the system feel less like a collection of disconnected conversations and more like a continuing assistant.&lt;/p&gt;




&lt;h1&gt;
  
  
  Connecting the Agent to Real-World Data
&lt;/h1&gt;

&lt;p&gt;This was one of the most important technical improvements in Krishi Mitra.&lt;/p&gt;

&lt;p&gt;Consider the question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"आज Mumbai का मौसम कैसा है?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;An LLM may generate a plausible-sounding response, but plausibility is not the same as current information.&lt;/p&gt;

&lt;p&gt;Weather is dynamic.&lt;/p&gt;

&lt;p&gt;So I connected Krishi Mitra to a real weather service using &lt;strong&gt;Open-Meteo&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The flow is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Farmer asks weather question
          ↓
Google Gemini
          ↓
Weather Function Tool
          ↓
Open-Meteo
          ↓
Weather Result
          ↓
Google Gemini
          ↓
Murf Falcon
          ↓
Voice Response
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The weather tool can retrieve information such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Location&lt;/li&gt;
&lt;li&gt;Temperature&lt;/li&gt;
&lt;li&gt;Humidity&lt;/li&gt;
&lt;li&gt;Rainfall&lt;/li&gt;
&lt;li&gt;Wind speed&lt;/li&gt;
&lt;li&gt;Latest available weather data time&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The raw API response is then converted into a natural response for the farmer.&lt;/p&gt;

&lt;p&gt;For example, instead of exposing JSON, the agent can communicate the information naturally through voice.&lt;/p&gt;




&lt;h1&gt;
  
  
  Tool Failure Is Also Part of the Design
&lt;/h1&gt;

&lt;p&gt;What happens if the weather service is unavailable?&lt;/p&gt;

&lt;p&gt;This was an important part of the implementation.&lt;/p&gt;

&lt;p&gt;The correct behavior is not:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I think it will rain today."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The correct behavior is to communicate that the weather service is temporarily unavailable.&lt;/p&gt;

&lt;p&gt;This leads to a broader lesson:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;An AI system should fail safely rather than confidently inventing information.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Tool failure handling is therefore not an optional extra.&lt;/p&gt;

&lt;p&gt;It is part of the agent architecture.&lt;/p&gt;




&lt;h1&gt;
  
  
  From Reactive AI to Proactive AI
&lt;/h1&gt;

&lt;p&gt;Another major capability I explored was &lt;strong&gt;outbound calling&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A normal voice assistant waits for the farmer to start the conversation.&lt;/p&gt;

&lt;p&gt;But some agricultural situations are naturally proactive.&lt;/p&gt;

&lt;p&gt;For example, if a farmer needs an important weather or rain warning, the system can initiate a call.&lt;/p&gt;

&lt;p&gt;Krishi Mitra's outbound setup involved:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SQLite farmer database&lt;/li&gt;
&lt;li&gt;LiveKit Agents&lt;/li&gt;
&lt;li&gt;LiveKit room and dispatch&lt;/li&gt;
&lt;li&gt;Linphone SIP&lt;/li&gt;
&lt;li&gt;Open-Meteo&lt;/li&gt;
&lt;li&gt;Murf AI TTS&lt;/li&gt;
&lt;li&gt;Hindi and English interaction&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The conceptual flow is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Farmer Profile
      ↓
Weather Information
      ↓
Relevant Alert
      ↓
Outbound Voice Call
      ↓
Farmer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The interesting part is that this is not just a prerecorded announcement.&lt;/p&gt;

&lt;p&gt;The farmer can continue the conversation.&lt;/p&gt;

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

&lt;blockquote&gt;
&lt;p&gt;"कल बारिश की संभावना कितनी है?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Krishi Mitra can retrieve the forecast and respond.&lt;/p&gt;

&lt;p&gt;The farmer can also ask the system to end the call.&lt;/p&gt;

&lt;p&gt;That changes the design from a simple notification system into an interactive voice agent.&lt;/p&gt;




&lt;h1&gt;
  
  
  When AI Should Ask a Human for Help
&lt;/h1&gt;

&lt;p&gt;One of the most important lessons from building Krishi Mitra was understanding when &lt;strong&gt;not&lt;/strong&gt; to let the AI continue autonomously.&lt;/p&gt;

&lt;p&gt;Suppose a farmer reports a serious crop disease or crop-damage problem.&lt;/p&gt;

&lt;p&gt;Giving an uncertain diagnosis could be worse than admitting that specialist help is needed.&lt;/p&gt;

&lt;p&gt;So Krishi Mitra can use a human escalation workflow.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Farmer reports serious crop problem
          ↓
AI recognizes need for human help
          ↓
AI asks for permission
          ↓
Escalation request created
          ↓
Reference ID generated
          ↓
Human expert sees the request
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Permission is important.&lt;/p&gt;

&lt;p&gt;The system asks the farmer before sharing the relevant information for escalation.&lt;/p&gt;

&lt;p&gt;The escalation can contain useful context such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Farmer&lt;/li&gt;
&lt;li&gt;District&lt;/li&gt;
&lt;li&gt;Crop&lt;/li&gt;
&lt;li&gt;Language preference&lt;/li&gt;
&lt;li&gt;Reason for escalation&lt;/li&gt;
&lt;li&gt;Urgency&lt;/li&gt;
&lt;li&gt;What Krishi Mitra already checked&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This information can then be presented through the Human Help Dashboard.&lt;/p&gt;

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

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;A good AI agent should know when to stop acting autonomously and involve a human.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  Moving From One Agent to a Specialist
&lt;/h1&gt;

&lt;p&gt;The next architectural step was introducing a &lt;strong&gt;Crop Problem Specialist&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Instead of making the main agent responsible for every agricultural problem, a specialist can focus on crop-health-related conversations.&lt;/p&gt;

&lt;p&gt;The flow becomes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Farmer
   ↓
Krishi Mitra
   ↓
Crop Problem Specialist
   ↓
Specialized Assistance
   ↓
Human Escalation if Required
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;An important part of this design is context preservation.&lt;/p&gt;

&lt;p&gt;The specialist receives the existing conversation context.&lt;/p&gt;

&lt;p&gt;The farmer therefore does not need to repeat the entire problem from the beginning.&lt;/p&gt;

&lt;p&gt;This is one of the reasons I find multi-agent architectures interesting.&lt;/p&gt;

&lt;p&gt;Rather than building one enormous agent that tries to handle everything, specialized agents can focus on specific responsibilities.&lt;/p&gt;




&lt;h1&gt;
  
  
  Observability: Building a Call Analytics Dashboard
&lt;/h1&gt;

&lt;p&gt;Once an agent starts handling real conversations, another question becomes important:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is happening inside the system?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I created a Streamlit-based monitoring dashboard for Krishi Mitra.&lt;/p&gt;

&lt;p&gt;It provides visibility into:&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;Browser calls&lt;/li&gt;
&lt;li&gt;SIP outbound calls&lt;/li&gt;
&lt;li&gt;Human-help requests&lt;/li&gt;
&lt;li&gt;Priority counts&lt;/li&gt;
&lt;li&gt;Detailed escalation information&lt;/li&gt;
&lt;li&gt;Refresh functionality&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The system tracks browser and SIP calls separately.&lt;/p&gt;

&lt;p&gt;This gives a clearer view of how the voice agent is being used across different communication channels.&lt;/p&gt;

&lt;p&gt;The dashboard also connects the voice-agent workflow with human support.&lt;/p&gt;

&lt;p&gt;That means monitoring is not limited to:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"How many calls happened?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It can also show:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Which conversations require human attention?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I have intentionally not included fabricated numerical performance results here. The dashboard supports these metrics, but the project documentation does not provide a verified benchmark that should be presented as a result.&lt;/p&gt;




&lt;h1&gt;
  
  
  The Most Difficult Technical Parts
&lt;/h1&gt;

&lt;p&gt;Building the project was not a straight line from idea to finished system.&lt;/p&gt;

&lt;p&gt;Several parts required thinking about the system beyond the LLM.&lt;/p&gt;

&lt;h2&gt;
  
  
  Challenge 1: Current Data vs. Generated Answers
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Problem&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The agent needed to answer weather questions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cause&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;An LLM is not a live weather database.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I implemented a weather function tool connected to Open-Meteo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Use external tools when the information changes in the real world.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Challenge 2: External Service Failure
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Problem&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The weather service can become unavailable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The tool provides a failure response that the agent can communicate naturally instead of generating a made-up weather answer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Graceful failure is part of reliable AI design.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Challenge 3: Conversation Continuity
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Problem&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A returning farmer should not have to repeat basic information.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I introduced persistent farmer memory using SQLite.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Memory can make a conversational system significantly more useful.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Challenge 4: Knowing When to Escalate
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Problem&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The AI should not attempt to confidently solve every serious crop problem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I implemented a permission-based human-help workflow and later connected it with the specialist-agent flow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Human-in-the-loop is not a failure of AI. It can be an important part of responsible agent design.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  How You Can Build a Voice Agent
&lt;/h1&gt;

&lt;p&gt;If you want to build a voice agent yourself, start with four fundamental components:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Speech-to-Text
       +
LLM
       +
Text-to-Speech
       +
Real-Time Transport
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For Krishi Mitra, these became:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Farmer Speech
      ↓
Deepgram
      ↓
Google Gemini
      ↓
Tools / Memory / Specialist
      ↓
Murf Falcon
      ↓
Farmer Voice
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then build incrementally.&lt;/p&gt;

&lt;p&gt;A practical sequence is:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Build the basic voice conversation.&lt;/li&gt;
&lt;li&gt;Give the agent a clear role.&lt;/li&gt;
&lt;li&gt;Add personality and guardrails.&lt;/li&gt;
&lt;li&gt;Create the user interface.&lt;/li&gt;
&lt;li&gt;Add persistent memory.&lt;/li&gt;
&lt;li&gt;Connect one real-world tool.&lt;/li&gt;
&lt;li&gt;Implement tool failure handling.&lt;/li&gt;
&lt;li&gt;Add outbound calling if required.&lt;/li&gt;
&lt;li&gt;Add human escalation.&lt;/li&gt;
&lt;li&gt;Add monitoring.&lt;/li&gt;
&lt;li&gt;Introduce specialist agents where they provide clear value.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This approach makes debugging much easier than trying to build the entire system at once.&lt;/p&gt;




&lt;h1&gt;
  
  
  Setting Up the Project
&lt;/h1&gt;

&lt;p&gt;The exact setup should always follow the commands in the project's repository.&lt;/p&gt;

&lt;p&gt;The general process is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. Clone the repository
2. Create a Python environment
3. Install dependencies
4. Configure environment variables
5. Add API keys
6. Start the agent
7. Start/connect to the voice interface
8. Test a basic conversation
9. Test the weather tool
10. Test memory
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;GitHub Repository:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/roma2020-app/krishimitra-voice-agent/" rel="noopener noreferrer"&gt;https://github.com/roma2020-app/krishimitra-voice-agent/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I recommend following the repository README for the exact installation and startup commands rather than copying generic commands from another project.&lt;/p&gt;




&lt;h1&gt;
  
  
  Protecting API Keys and User Data
&lt;/h1&gt;

&lt;p&gt;A public technical project must never expose secrets.&lt;/p&gt;

&lt;p&gt;Keep API keys in environment variables.&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;GEMINI_API_KEY=your_key_here
MURF_API_KEY=your_key_here
DEEPGRAM_API_KEY=your_key_here
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The actual values should never be committed to GitHub.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.env
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;locally and add it to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.gitignore
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Also avoid publishing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API keys&lt;/li&gt;
&lt;li&gt;Production credentials&lt;/li&gt;
&lt;li&gt;Real phone numbers&lt;/li&gt;
&lt;li&gt;Caller data&lt;/li&gt;
&lt;li&gt;Private farmer information&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For demonstrations and articles, use anonymized data.&lt;/p&gt;




&lt;h1&gt;
  
  
  Testing the Agent
&lt;/h1&gt;

&lt;p&gt;A voice agent should be tested through actual conversations.&lt;/p&gt;

&lt;h3&gt;
  
  
  Test 1 — Normal Conversation
&lt;/h3&gt;

&lt;p&gt;Ask a basic agricultural question and verify that the agent responds naturally.&lt;/p&gt;

&lt;h3&gt;
  
  
  Test 2 — Weather
&lt;/h3&gt;

&lt;p&gt;Ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"आज Mumbai का मौसम कैसा है?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Verify that the agent uses the weather tool rather than inventing current weather.&lt;/p&gt;

&lt;h3&gt;
  
  
  Test 3 — Memory
&lt;/h3&gt;

&lt;p&gt;First conversation:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"मैं Jaipur में गेहूं उगाता हूँ।"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Later conversation:&lt;/p&gt;

&lt;p&gt;Verify that the saved farmer context can be retrieved.&lt;/p&gt;

&lt;h3&gt;
  
  
  Test 4 — Tool Failure
&lt;/h3&gt;

&lt;p&gt;Temporarily make the weather service unavailable and verify that the agent provides a safe fallback.&lt;/p&gt;

&lt;h3&gt;
  
  
  Test 5 — Human Escalation
&lt;/h3&gt;

&lt;p&gt;Report a serious crop problem and verify that the agent asks for permission before creating the human-help request.&lt;/p&gt;

&lt;h3&gt;
  
  
  Test 6 — Specialist Handoff
&lt;/h3&gt;

&lt;p&gt;Test whether the Crop Problem Specialist receives the existing conversation context without forcing the farmer to repeat the complete problem.&lt;/p&gt;




&lt;h1&gt;
  
  
  Evidence From the Build
&lt;/h1&gt;

&lt;h3&gt;
  
  
  1. Voice Interface
&lt;/h3&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%2Faztbg1u5d509ukv4ruin.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%2Faztbg1u5d509ukv4ruin.png" alt=" " width="800" height="423"&gt;&lt;/a&gt;&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%2Fst6v4s8hrpe7l9xq1be5.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%2Fst6v4s8hrpe7l9xq1be5.png" alt=" " width="800" height="423"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Krishi Mitra during a farmer voice conversation.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Live Weather Tool
&lt;/h3&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%2Fy1gcolx9qon4g78hr25i.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%2Fy1gcolx9qon4g78hr25i.png" alt=" " width="800" height="423"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Krishi Mitra retrieving current weather information through the weather tool.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Outbound Call / Human Escalation
&lt;/h3&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%2Fx47kp94htnqdyw5wsnfc.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%2Fx47kp94htnqdyw5wsnfc.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.linkedin.com/posts/roma-gupta-880526416_10daysofvoiceagents-day-murffalcon-ugcPost-7492751782306201600-zmsn/?utm_source=share&amp;amp;utm_medium=member_desktop&amp;amp;rcm=ACoAAGnL62ABCXPHUcwL33BbbmynaukcX_dAI_w" rel="noopener noreferrer"&gt;https://www.linkedin.com/posts/roma-gupta-880526416_10daysofvoiceagents-day-murffalcon-ugcPost-7492751782306201600-zmsn/?utm_source=share&amp;amp;utm_medium=member_desktop&amp;amp;rcm=ACoAAGnL62ABCXPHUcwL33BbbmynaukcX_dAI_w&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/posts/roma-gupta-880526416_day-10daysofvoiceagents-voiceforbharat-ugcPost-7493114826727141381-tRy2/?utm_source=share&amp;amp;utm_medium=member_desktop&amp;amp;rcm=ACoAAGnL62ABCXPHUcwL33BbbmynaukcX_dAI_w" rel="noopener noreferrer"&gt;https://www.linkedin.com/posts/roma-gupta-880526416_day-10daysofvoiceagents-voiceforbharat-ugcPost-7493114826727141381-tRy2/?utm_source=share&amp;amp;utm_medium=member_desktop&amp;amp;rcm=ACoAAGnL62ABCXPHUcwL33BbbmynaukcX_dAI_w&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Krishi Mitra moving from proactive voice interaction toward human assistance.&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  4. Analytics / Specialist Dashboard
&lt;/h3&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%2Fgx7j548txj0l495j4ztp.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%2Fgx7j548txj0l495j4ztp.png" alt=" " width="800" height="380"&gt;&lt;/a&gt;&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%2Fphdfgcryb8feotq6os3i.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%2Fphdfgcryb8feotq6os3i.png" alt=" " width="800" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/posts/roma-gupta-880526416_10daysofvoiceagents-voiceforbharat-10daysofvoiceagents-ugcPost-7493822168510889986-z0oD/?utm_source=share&amp;amp;utm_medium=member_desktop&amp;amp;rcm=ACoAAGnL62ABCXPHUcwL33BbbmynaukcX_dAI_w" rel="noopener noreferrer"&gt;https://www.linkedin.com/posts/roma-gupta-880526416_10daysofvoiceagents-voiceforbharat-10daysofvoiceagents-ugcPost-7493822168510889986-z0oD/?utm_source=share&amp;amp;utm_medium=member_desktop&amp;amp;rcm=ACoAAGnL62ABCXPHUcwL33BbbmynaukcX_dAI_w&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Monitoring voice calls and human-help requests.&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  5. Architecture
&lt;/h3&gt;

&lt;p&gt;Browser Voice Call ──┐&lt;br&gt;
                     │&lt;br&gt;
                     ├──&amp;gt; Call Analytics Database ──&amp;gt; Streamlit Dashboard&lt;br&gt;
SIP Outbound Call ───┘                                  │&lt;br&gt;
                                                        ├── Total Calls&lt;br&gt;
                                                        ├── SuccessfulCalls&lt;br&gt;
                                                        ├── Failed Calls&lt;br&gt;
                                                        ├── Success Rate&lt;br&gt;
                                                        ├── Browser Metrics&lt;br&gt;
                                                        └── SIP Metrics&lt;br&gt;
Voice Agent ──&amp;gt; Human Escalation ──&amp;gt; Escalation Database ──&amp;gt; Human Help Dashboard&lt;br&gt;
                                                              │&lt;br&gt;
                                                              ├── Open Requests&lt;br&gt;
                                                              ├── High Priority&lt;br&gt;
                                                              ├── Medium Priority&lt;br&gt;
                                                              └── Detailed Farmer Request&lt;/p&gt;


&lt;h1&gt;
  
  
  What I Learned
&lt;/h1&gt;

&lt;p&gt;Building Krishi Mitra changed how I think about voice agents.&lt;/p&gt;
&lt;h3&gt;
  
  
  1. A voice agent needs a clear job
&lt;/h3&gt;

&lt;p&gt;An LLM alone does not define an application.&lt;/p&gt;

&lt;p&gt;The agent needs objectives, boundaries, tools, and responsibilities.&lt;/p&gt;
&lt;h3&gt;
  
  
  2. Real-world data needs real-world tools
&lt;/h3&gt;

&lt;p&gt;If information changes frequently, connect the agent to an appropriate source instead of asking the model to guess.&lt;/p&gt;
&lt;h3&gt;
  
  
  3. Memory changes the experience
&lt;/h3&gt;

&lt;p&gt;A returning user should not always feel like a new user.&lt;/p&gt;
&lt;h3&gt;
  
  
  4. Guardrails are part of the architecture
&lt;/h3&gt;

&lt;p&gt;Safety should not be added after everything else is finished.&lt;/p&gt;
&lt;h3&gt;
  
  
  5. AI should know when to ask for help
&lt;/h3&gt;

&lt;p&gt;Human escalation provides a controlled path when the AI should not continue independently.&lt;/p&gt;
&lt;h3&gt;
  
  
  6. Specialist agents can simplify complex systems
&lt;/h3&gt;

&lt;p&gt;A focused specialist can be more useful than one giant agent responsible for every possible task.&lt;/p&gt;
&lt;h3&gt;
  
  
  7. Voice agents need observability
&lt;/h3&gt;

&lt;p&gt;Once the agent starts handling conversations, you need visibility into calls, failures, and human-help requirements.&lt;/p&gt;


&lt;h1&gt;
  
  
  What I Would Build Next
&lt;/h1&gt;

&lt;p&gt;Krishi Mitra is currently a learning/prototype project, so there is plenty of room for improvement.&lt;/p&gt;

&lt;p&gt;Some directions I would explore next include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;More Indian languages&lt;/li&gt;
&lt;li&gt;More agricultural tools&lt;/li&gt;
&lt;li&gt;More verified agricultural information sources&lt;/li&gt;
&lt;li&gt;Additional specialist agents&lt;/li&gt;
&lt;li&gt;Better farmer profile management&lt;/li&gt;
&lt;li&gt;Improved analytics&lt;/li&gt;
&lt;li&gt;More robust telephony&lt;/li&gt;
&lt;li&gt;Production deployment&lt;/li&gt;
&lt;li&gt;Better human expert workflows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are future directions, not features I am claiming as already completed.&lt;/p&gt;


&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;When I started this project, the goal sounded simple:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Make an AI voice agent talk to a farmer.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;But building Krishi Mitra taught me that voice is only the beginning.&lt;/p&gt;

&lt;p&gt;A useful voice agent needs to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Listen
   ↓
Understand
   ↓
Remember
   ↓
Use Tools
   ↓
Act
   ↓
Escalate
   ↓
Hand Off
   ↓
Be Monitored
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That was the biggest takeaway from building Krishi Mitra during the &lt;strong&gt;10 Days of Voice Agents – VoiceForBharat Edition&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I learned how speech-to-text, an LLM, text-to-speech, real-time communication, memory, tools, specialist agents, and human workflows can come together to create something much more useful than a simple chatbot.&lt;/p&gt;

&lt;p&gt;For me, the most important lesson was this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;AI becomes more useful when it knows not only how to answer, but also what to remember, what to verify, what to do, and when to ask a human for help.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Krishi Mitra is still evolving, but this project gave me a much deeper understanding of how to design and build voice-first AI systems.&lt;/p&gt;

&lt;p&gt;Thanks to &lt;strong&gt;Murf AI&lt;/strong&gt; for the &lt;strong&gt;10 Days of Voice Agents – VoiceForBharat Edition&lt;/strong&gt; challenge and for the opportunity to build with &lt;strong&gt;Murf Falcon&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;🌾🎙️🤖&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Build. Learn. Experiment. Share.&lt;/strong&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Project Links
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;GitHub Repository:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://github.com/roma2020-app/krishimitra-voice-agent" rel="noopener noreferrer"&gt;https://github.com/roma2020-app/krishimitra-voice-agent&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LinkedIn:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://www.linkedin.com/posts/roma-gupta-880526416_10daysofvoiceagents-voiceforbharat-10daysofvoiceagents-ugcPost-7493822168510889986-z0oD/?utm_source=share&amp;amp;utm_medium=member_desktop&amp;amp;rcm=ACoAAGnL62ABCXPHUcwL33BbbmynaukcX_dAI_w" rel="noopener noreferrer"&gt;https://www.linkedin.com/posts/roma-gupta-880526416_10daysofvoiceagents-voiceforbharat-10daysofvoiceagents-ugcPost-7493822168510889986-z0oD/?utm_source=share&amp;amp;utm_medium=member_desktop&amp;amp;rcm=ACoAAGnL62ABCXPHUcwL33BbbmynaukcX_dAI_w&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Suggested DEV Community Tags
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;#ai&lt;/code&gt; &lt;code&gt;#voiceai&lt;/code&gt; &lt;code&gt;#generativeai&lt;/code&gt; &lt;code&gt;#agenticai&lt;/code&gt; &lt;code&gt;#python&lt;/code&gt; &lt;code&gt;#agritech&lt;/code&gt; &lt;code&gt;#livekit&lt;/code&gt; &lt;code&gt;#gemini&lt;/code&gt; &lt;code&gt;#murfai&lt;/code&gt; &lt;code&gt;#voiceforbharat&lt;/code&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>voiceai</category>
      <category>python</category>
      <category>agriculture</category>
    </item>
  </channel>
</rss>
