<?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: Naman</title>
    <description>The latest articles on DEV Community by Naman (@naman5858).</description>
    <link>https://dev.to/naman5858</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%2F4078429%2F5c5bae34-6387-4e38-a746-3a8c1056003b.jpg</url>
      <title>DEV Community: Naman</title>
      <link>https://dev.to/naman5858</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/naman5858"/>
    <language>en</language>
    <item>
      <title>Building Shiksha: My 10-Day Voice Agent Journey with Murf Falcon</title>
      <dc:creator>Naman</dc:creator>
      <pubDate>Sat, 15 Aug 2026 03:46:41 +0000</pubDate>
      <link>https://dev.to/naman5858/building-shiksha-my-10-day-voice-agent-journey-with-murf-falcon-ok5</link>
      <guid>https://dev.to/naman5858/building-shiksha-my-10-day-voice-agent-journey-with-murf-falcon-ok5</guid>
      <description>&lt;p&gt;For the last 10 days, I have been building a voice agent called &lt;strong&gt;Shiksha&lt;/strong&gt; as part of the &lt;strong&gt;10 Days of Voice Agents — VoiceForBharat Edition&lt;/strong&gt; challenge by Murf AI.&lt;/p&gt;

&lt;p&gt;My original idea was simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Build a voice agent that can help students learn through natural conversation.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Over the challenge, that idea grew into a complete voice-based learning system with &lt;strong&gt;memory, tools, human escalation, call analytics, and a specialist agent&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  What is Shiksha?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Shiksha is a voice-based learning partner for students.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Instead of typing questions and reading answers, a student can simply talk to Shiksha.&lt;/p&gt;

&lt;p&gt;A student can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ask learning questions&lt;/li&gt;
&lt;li&gt;Take quizzes&lt;/li&gt;
&lt;li&gt;Continue learning with their saved profile&lt;/li&gt;
&lt;li&gt;Get help when they are stuck&lt;/li&gt;
&lt;li&gt;Practice mathematics&lt;/li&gt;
&lt;li&gt;Get transferred to a Maths Specialist when needed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The main goal was to make the experience feel more like a conversation than a traditional chatbot.&lt;/p&gt;




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

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Technology&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&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;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LLM&lt;/td&gt;
&lt;td&gt;Gemini&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;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Backend&lt;/td&gt;
&lt;td&gt;Python&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Memory&lt;/td&gt;
&lt;td&gt;SQLite&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Call analytics&lt;/td&gt;
&lt;td&gt;Flask + SQLite&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;External data&lt;/td&gt;
&lt;td&gt;Open Trivia Database&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The voice experience is powered by &lt;strong&gt;Murf Falcon&lt;/strong&gt;, which was one of the main parts of the challenge.&lt;/p&gt;




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

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                    STUDENT
                       │
                       ▼
                  LiveKit
              Real-time Audio
                       │
                       ▼
                  Deepgram
                Speech-to-Text
                       │
                       ▼
                   Gemini
                Agent Reasoning
                       │
          ┌────────────┼─────────────┐
          │            │             │
          ▼            ▼             ▼
       Memory         Tools       Handoff
       SQLite       Quiz API    Maths Specialist
          │            │             │
          └────────────┴─────────────┘
                       │
                       ▼
                  Murf Falcon
                 Text-to-Speech
                       │
                       ▼
                    STUDENT
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This was the basic architecture that I built and expanded throughout the challenge.&lt;/p&gt;




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

&lt;h2&gt;
  
  
  1. Student Memory
&lt;/h2&gt;

&lt;p&gt;One of the first things I added was a simple memory system using SQLite.&lt;/p&gt;

&lt;p&gt;Shiksha can store:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Student name&lt;/li&gt;
&lt;li&gt;Current learning level&lt;/li&gt;
&lt;li&gt;Topics covered&lt;/li&gt;
&lt;li&gt;Last interaction&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This means the agent can use information from previous conversations instead of starting from zero every time.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Real Tool Calling
&lt;/h2&gt;

&lt;p&gt;For quizzes, I didn't want the agent to always generate questions from memory.&lt;/p&gt;

&lt;p&gt;Instead, I added a tool that can fetch a question from an online source.&lt;/p&gt;

&lt;h3&gt;
  
  
  Example
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Student:
"Give me a quiz question."

        ↓

Shiksha
        ↓

fetch_educational_quiz()
        ↓

Open Trivia Database
        ↓

Question returned
        ↓

Shiksha speaks the question
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I also added a local fallback question.&lt;/p&gt;

&lt;p&gt;So if the live source is unavailable, the agent can still continue the conversation instead of staying silent.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Guardrails
&lt;/h2&gt;

&lt;p&gt;The agent has clear instructions about how it should behave.&lt;/p&gt;

&lt;p&gt;Some of the important rules are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Speak only in English for this version of the project&lt;/li&gt;
&lt;li&gt;Keep responses short and speech-friendly&lt;/li&gt;
&lt;li&gt;Use the quiz tool instead of inventing quiz questions&lt;/li&gt;
&lt;li&gt;Don't expose technical errors to the student&lt;/li&gt;
&lt;li&gt;Use fallback data when a live source fails&lt;/li&gt;
&lt;li&gt;Don't mark an exercise as complete unless the student actually answers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These rules made the agent more predictable.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Human Escalation
&lt;/h2&gt;

&lt;p&gt;Another feature I added was a human escalation flow.&lt;/p&gt;

&lt;p&gt;Sometimes the agent should know when &lt;strong&gt;not to solve everything itself&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For example, if a student is clearly stuck or asks for a teacher, Shiksha can ask for permission and create a human-help request.&lt;/p&gt;

&lt;h3&gt;
  
  
  Flow
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Student needs help
        ↓
Shiksha asks for permission
        ↓
Student agrees
        ↓
Escalation created
        ↓
Human can follow up
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I also kept the escalation information limited so that unnecessary private conversation data is not sent.&lt;/p&gt;




&lt;h1&gt;
  
  
  5. Call Analytics Dashboard
&lt;/h1&gt;

&lt;p&gt;For Day 8, I wanted to know whether the conversations were actually achieving the goal.&lt;/p&gt;

&lt;p&gt;I built a small dashboard using &lt;strong&gt;Flask + SQLite&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Dashboard metrics
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Total Calls&lt;/td&gt;
&lt;td&gt;Total calls made by the agent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Successful Calls&lt;/td&gt;
&lt;td&gt;Calls where the learning exercise was completed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Failed Calls&lt;/td&gt;
&lt;td&gt;Calls where the success condition was not reached&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Success Rate&lt;/td&gt;
&lt;td&gt;Successful calls as a percentage of total calls&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Recent Calls&lt;/td&gt;
&lt;td&gt;Recent call outcomes and details&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For this project, I defined:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Successful call = the student completes a learning exercise by answering a quiz question.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The dashboard reads data directly from the agent's SQLite database, so the numbers are not hardcoded.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Maths Practice Specialist
&lt;/h2&gt;

&lt;p&gt;Day 9 was one of my favorite parts of the challenge.&lt;/p&gt;

&lt;p&gt;I didn't want one agent to pretend to be an expert at everything.&lt;/p&gt;

&lt;p&gt;So I created a dedicated &lt;strong&gt;Maths Practice Specialist&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Main Agent vs Specialist
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Shiksha&lt;/th&gt;
&lt;th&gt;Maths Specialist&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;General learning partner&lt;/td&gt;
&lt;td&gt;Maths-focused assistant&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Student memory&lt;/td&gt;
&lt;td&gt;Maths practice&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;General questions&lt;/td&gt;
&lt;td&gt;Maths questions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Quiz tools&lt;/td&gt;
&lt;td&gt;Evaluate answers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Human escalation&lt;/td&gt;
&lt;td&gt;Focused maths guidance&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The idea is simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Student
   │
   ▼
Shiksha
   │
   ├── General question
   │      ↓
   │   Shiksha answers
   │
   └── Maths practice
          ↓
   Maths Specialist
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The student should not have to explain their request again after the handoff.&lt;/p&gt;




&lt;h1&gt;
  
  
  One of the Hardest Parts
&lt;/h1&gt;

&lt;p&gt;The biggest technical challenge for me was the &lt;strong&gt;specialist handoff&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The main agent was correctly understanding that the student wanted maths help, but the transition to the specialist did not always work smoothly.&lt;/p&gt;

&lt;p&gt;At different points, I had to look at:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Agent session state&lt;/li&gt;
&lt;li&gt;Conversation context&lt;/li&gt;
&lt;li&gt;Tool execution&lt;/li&gt;
&lt;li&gt;Specialist initialization&lt;/li&gt;
&lt;li&gt;Voice configuration&lt;/li&gt;
&lt;li&gt;Handoff behavior&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This taught me something important:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A voice agent is not only about the model response. The real-time orchestration around the model is equally important.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I also had to deal with API failures and incomplete calls.&lt;/p&gt;

&lt;p&gt;Those cases forced me to think about what happens when things go wrong, not just when everything works.&lt;/p&gt;




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

&lt;p&gt;The biggest lesson from these 10 days is that a useful voice agent needs more than an LLM and a voice.&lt;/p&gt;

&lt;p&gt;You need to think about the complete flow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Speech
   ↓
Understanding
   ↓
Reasoning
   ↓
Tools / Memory
   ↓
Decision
   ↓
Response
   ↓
Voice
   ↓
Outcome
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And because the interaction is voice-first, small problems become much more noticeable.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Long answers sound worse when spoken&lt;/li&gt;
&lt;li&gt;Delayed responses feel awkward&lt;/li&gt;
&lt;li&gt;A failed API call can make the agent feel broken&lt;/li&gt;
&lt;li&gt;A bad handoff can interrupt the whole conversation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These were some of the most useful lessons from the project.&lt;/p&gt;




&lt;h1&gt;
  
  
  How to Build Your Own Voice Agent
&lt;/h1&gt;

&lt;p&gt;You don't need a huge system to start.&lt;/p&gt;

&lt;p&gt;At the basic level, you need four main components:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Speech-to-Text&lt;/td&gt;
&lt;td&gt;Understand what the user says&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LLM&lt;/td&gt;
&lt;td&gt;Decide how the agent should respond&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Text-to-Speech&lt;/td&gt;
&lt;td&gt;Turn text into spoken audio&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Real-time transport&lt;/td&gt;
&lt;td&gt;Connect the user and the agent&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For my project, I used:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Deepgram&lt;/strong&gt; for Speech-to-Text&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemini&lt;/strong&gt; for the LLM&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Murf Falcon&lt;/strong&gt; for Text-to-Speech&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LiveKit&lt;/strong&gt; for real-time communication&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Python&lt;/strong&gt; for agent logic&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SQLite&lt;/strong&gt; for memory and analytics&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Environment Variables
&lt;/h2&gt;

&lt;p&gt;Keep your API keys in a local &lt;code&gt;.env.local&lt;/code&gt; file.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;LIVEKIT_URL=your_livekit_url
LIVEKIT_API_KEY=your_livekit_api_key
LIVEKIT_API_SECRET=your_livekit_api_secret

MURF_API_KEY=your_murf_api_key
DEEPGRAM_API_KEY=your_deepgram_api_key
GOOGLE_API_KEY=your_google_api_key
&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;Add &lt;code&gt;.env.local&lt;/code&gt; to &lt;code&gt;.gitignore&lt;/code&gt; before publishing your repository.&lt;/p&gt;




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

&lt;p&gt;Once the environment is configured, start the backend and connect the browser client to your LiveKit room.&lt;/p&gt;

&lt;p&gt;Then test the agent with simple conversations.&lt;/p&gt;

&lt;h3&gt;
  
  
  Example 1 — Normal question
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"What is photosynthesis?"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Shiksha handles it directly.&lt;/p&gt;

&lt;h3&gt;
  
  
  Example 2 — Quiz
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"Give me a quiz question."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The quiz tool is triggered.&lt;/p&gt;

&lt;h3&gt;
  
  
  Example 3 — Maths specialist
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"I want to practice maths."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Shiksha routes the conversation to the Maths Specialist.&lt;/p&gt;

&lt;h3&gt;
  
  
  Example 4 — Human support
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"I want to talk to a teacher."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The human escalation flow can be triggered after the required permission step.&lt;/p&gt;




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

&lt;p&gt;Throughout the challenge I recorded and captured different parts of the system, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Voice agent conversations&lt;/li&gt;
&lt;li&gt;Tool calling&lt;/li&gt;
&lt;li&gt;Student memory&lt;/li&gt;
&lt;li&gt;Human escalation&lt;/li&gt;
&lt;li&gt;Call analytics dashboard&lt;/li&gt;
&lt;li&gt;Specialist handoff&lt;/li&gt;
&lt;li&gt;Architecture and workflow&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These demos helped me verify that the features were actually working rather than just existing in the code.&lt;/p&gt;




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

&lt;p&gt;The project is working, but there is still a lot more I want to improve.&lt;/p&gt;

&lt;h3&gt;
  
  
  Next ideas
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;More specialist agents&lt;/li&gt;
&lt;li&gt;Better learning recommendations&lt;/li&gt;
&lt;li&gt;More realistic learning exercises&lt;/li&gt;
&lt;li&gt;Better student progress tracking&lt;/li&gt;
&lt;li&gt;More detailed analytics&lt;/li&gt;
&lt;li&gt;More robust multi-agent routing&lt;/li&gt;
&lt;li&gt;Better handoff recovery&lt;/li&gt;
&lt;li&gt;More real-world testing with different conversations&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;I started this challenge with a simple goal:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Build a voice agent that can help students learn.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;After 10 days, Shiksha became much more than a basic voice chatbot.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Talk with students&lt;/li&gt;
&lt;li&gt;Remember student information&lt;/li&gt;
&lt;li&gt;Use external tools&lt;/li&gt;
&lt;li&gt;Handle API failures&lt;/li&gt;
&lt;li&gt;Ask humans for help&lt;/li&gt;
&lt;li&gt;Track call outcomes&lt;/li&gt;
&lt;li&gt;Analyze real calls&lt;/li&gt;
&lt;li&gt;Hand maths conversations to a specialist&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The biggest thing I learned is that &lt;strong&gt;building a voice agent is really about building the whole system around the conversation.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The model is only one part of it.&lt;/p&gt;

&lt;p&gt;The memory, tools, guardrails, real-time communication, analytics, error handling, and handoffs are what make the experience actually useful.&lt;/p&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;GitHub Repository:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://github.com/Naman579/murf-livekit-starter/tree/Day-1" rel="noopener noreferrer"&gt;https://github.com/Naman579/murf-livekit-starter/tree/Day-1&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LinkedIn:&lt;/strong&gt;&lt;br&gt;
&lt;a href="http://www.linkedin.com/in/naman-kanojia-37654a39a" rel="noopener noreferrer"&gt;www.linkedin.com/in/naman-kanojia-37654a39a&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Built with
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;LiveKit&lt;/code&gt; · &lt;code&gt;Python&lt;/code&gt; · &lt;code&gt;Gemini&lt;/code&gt; · &lt;code&gt;Deepgram&lt;/code&gt; · &lt;code&gt;SQLite&lt;/code&gt; · &lt;code&gt;Flask&lt;/code&gt; · &lt;code&gt;Murf Falcon&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Thanks to the &lt;strong&gt;Murf AI&lt;/strong&gt; team for organizing the &lt;strong&gt;10 Days of Voice Agents — VoiceForBharat Edition&lt;/strong&gt; challenge.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>buildinpublic</category>
      <category>devchallenge</category>
    </item>
  </channel>
</rss>
