<?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: Vaibhav Aran</title>
    <description>The latest articles on DEV Community by Vaibhav Aran (@vaibhav_aran_73384c30ac12).</description>
    <link>https://dev.to/vaibhav_aran_73384c30ac12</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%2F4079008%2Fcf457e6e-3b57-4eb3-98f0-961830500517.png</url>
      <title>DEV Community: Vaibhav Aran</title>
      <link>https://dev.to/vaibhav_aran_73384c30ac12</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vaibhav_aran_73384c30ac12"/>
    <language>en</language>
    <item>
      <title>Building an AI Learning Companion for Bharat: My 10-Day Voice Agent Journey</title>
      <dc:creator>Vaibhav Aran</dc:creator>
      <pubDate>Sat, 15 Aug 2026 13:39:54 +0000</pubDate>
      <link>https://dev.to/vaibhav_aran_73384c30ac12/building-an-ai-learning-companion-for-bharat-my-10-day-voice-agent-journey-233i</link>
      <guid>https://dev.to/vaibhav_aran_73384c30ac12/building-an-ai-learning-companion-for-bharat-my-10-day-voice-agent-journey-233i</guid>
      <description>&lt;p&gt;From a Simple Voice Agent to a Complete AI Learning Support System&lt;/p&gt;

&lt;p&gt;Over the last 10 days, I participated in 10 Days of Voice Agents – VoiceForBharat Edition, where the goal was to build an AI voice agent around a grassroots-level problem in India.&lt;/p&gt;

&lt;p&gt;I chose the Learning &amp;amp; Literacy track and built an AI Learning Companion designed to help learners through voice-based interaction.&lt;/p&gt;

&lt;p&gt;What started as a simple voice agent gradually became a complete learning support system with memory, practice tools, outbound calls, human escalation, analytics, and specialist-agent handoffs.&lt;/p&gt;

&lt;p&gt;The interesting part wasn't having access to these technologies—everyone participating in the challenge had access to the same core resources. The challenge for me was figuring out how to connect them into one meaningful learner experience.&lt;/p&gt;




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

&lt;p&gt;Learning support is often designed around screens, typing, and formal communication.&lt;/p&gt;

&lt;p&gt;For many learners, especially those who are more comfortable speaking than typing or communicating in a mixture of Indian languages and English, a conversational voice interface can make learning feel more natural.&lt;/p&gt;

&lt;p&gt;My goal was therefore not to build another chatbot that simply answers questions.&lt;/p&gt;

&lt;p&gt;I wanted to build an assistant that could support a learner throughout the learning process:&lt;/p&gt;

&lt;p&gt;Understand → Explain → Practice → Remember → Follow up → Escalate → Measure&lt;/p&gt;

&lt;p&gt;The agent is designed around the Learning &amp;amp; Literacy track and supports natural interaction across English, Hindi, and Hinglish.&lt;/p&gt;




&lt;p&gt;*&lt;em&gt;What I Built&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
The final AI Learning Companion brings together several capabilities into one system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Voice-first learning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The learner can communicate naturally with the agent instead of relying only on text.&lt;/p&gt;

&lt;p&gt;The voice pipeline uses Murf Falcon for fast text-to-speech, allowing the agent to respond naturally during conversations.&lt;/p&gt;

&lt;p&gt;The frontend also provides clear states such as connecting, listening, speaking, and ending a call so the learner knows what the system is doing.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;2. A defined personality and boundaries&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The agent isn't designed to answer everything without limits.&lt;/p&gt;

&lt;p&gt;It has a specific role as a learning companion, defined objectives, and guardrails for the Learning &amp;amp; Literacy use case.&lt;/p&gt;

&lt;p&gt;For example, the agent should never shame a learner for giving a wrong answer and should not claim that a learner has a learning disability.&lt;/p&gt;

&lt;p&gt;It also knows when a request is outside its role instead of pretending to know everything.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;3. Consent-based memory&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A learner shouldn't have to introduce themselves from scratch every time.&lt;/p&gt;

&lt;p&gt;I added persistent memory so the agent can remember useful learning information such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Learner name&lt;/li&gt;
&lt;li&gt;Current learning level&lt;/li&gt;
&lt;li&gt;Topics covered&lt;/li&gt;
&lt;li&gt;Areas where the learner struggles&lt;/li&gt;
&lt;li&gt;Language preference&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The agent asks for permission before saving information.&lt;/p&gt;

&lt;p&gt;When the learner returns, the agent can use that information to continue the learning experience instead of starting from zero.&lt;/p&gt;




&lt;p&gt;*&lt;em&gt;4. Learning tools instead of relying only on the LLM&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
One of the important steps was teaching the agent to use an actual function.&lt;/p&gt;

&lt;p&gt;I created a "fetch_practice_question(topic, level)" tool.&lt;/p&gt;

&lt;p&gt;Instead of placing every possible question directly into the prompt, the agent can call the tool when a learner requests practice.&lt;/p&gt;

&lt;p&gt;The tool searches a hand-built local practice-question dataset covering subjects and difficulty levels.&lt;/p&gt;

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

&lt;p&gt;«"I'm a beginner. Give me a science practice question."»&lt;/p&gt;

&lt;p&gt;The agent can call the tool with the learner's topic and level, receive the result, and then speak the question.&lt;/p&gt;

&lt;p&gt;The tool also has a strict failure path. If the requested topic or level isn't available, the agent does not invent a question and instead tells the learner that suitable content isn't currently available.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;5. Outbound learning calls&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Learning doesn't have to end when the learner closes the browser.&lt;/p&gt;

&lt;p&gt;I also added outbound calling capabilities for the Learning &amp;amp; Literacy use case.&lt;/p&gt;

&lt;p&gt;The idea is simple: a learner can receive a scheduled practice call and continue their learning through voice.&lt;/p&gt;

&lt;p&gt;Because an outbound call is unexpected from the user's perspective, the agent clearly explains who is calling, why it is calling, and how the learner can stop the interaction.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;6. Human teacher escalation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AI shouldn't try to solve every learning problem.&lt;/p&gt;

&lt;p&gt;I added a human-help flow for situations where a learner is struggling or specifically needs help from a teacher.&lt;/p&gt;

&lt;p&gt;The agent first explains that it can create a request for human assistance and asks for permission before sharing the relevant information.&lt;/p&gt;

&lt;p&gt;If the learner agrees, the system creates a short escalation request containing useful context rather than sending the entire conversation.&lt;/p&gt;

&lt;p&gt;The learner receives a reference ID and an honest explanation of what happens next.&lt;/p&gt;

&lt;p&gt;This creates a simple AI + human support loop instead of treating the AI as a replacement for teachers.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;7. Call analytics&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I also added a simple analytics dashboard to measure whether conversations actually achieve their intended goal.&lt;/p&gt;

&lt;p&gt;For the Learning &amp;amp; Literacy agent, I defined a successful call as a learner completing a practice exercise.&lt;/p&gt;

&lt;p&gt;The dashboard tracks:&lt;/p&gt;

&lt;p&gt;Total Calls | Successful Calls | Failed Calls&lt;/p&gt;

&lt;p&gt;The values come from actual agent sessions rather than hardcoded numbers.&lt;/p&gt;

&lt;p&gt;This provides a basic way to measure whether the voice agent is actually accomplishing its learning objective.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;8. Specialist agent handoff&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The main agent doesn't need to be an expert at everything.&lt;/p&gt;

&lt;p&gt;For Day 9, I introduced a separate Maths Practice Specialist.&lt;/p&gt;

&lt;p&gt;The main Learning Companion handles general learning conversations. When a learner needs focused mathematics practice, the main agent can announce the handoff and transfer the conversation to the specialist.&lt;/p&gt;

&lt;p&gt;The specialist continues with the context of the conversation, so the learner doesn't have to explain the problem again.&lt;/p&gt;

&lt;p&gt;This creates a simple multi-agent architecture:&lt;/p&gt;

&lt;p&gt;Main Learning Agent → Maths Specialist&lt;/p&gt;

&lt;p&gt;while keeping each agent's responsibility focused.&lt;/p&gt;




&lt;p&gt;*&lt;em&gt;The Technology Behind It&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
The voice agent combines the major components required for a real-time voice AI system:&lt;/p&gt;

&lt;p&gt;Speech-to-Text&lt;/p&gt;

&lt;p&gt;Converts the learner's spoken words into text that the AI agent can understand.&lt;/p&gt;

&lt;p&gt;Large Language Model&lt;/p&gt;

&lt;p&gt;The LLM handles conversation, decides what the learner needs, follows the agent's instructions, and decides when tools or specialist agents are required.&lt;/p&gt;

&lt;p&gt;Tools and Functions&lt;/p&gt;

&lt;p&gt;Functions allow the agent to interact with external logic and data instead of relying entirely on generated responses.&lt;/p&gt;

&lt;p&gt;Examples include:&lt;/p&gt;

&lt;p&gt;"fetch_practice_question"&lt;/p&gt;

&lt;p&gt;and the memory and human-escalation functions.&lt;/p&gt;

&lt;p&gt;Text-to-Speech&lt;/p&gt;

&lt;p&gt;Murf Falcon converts the agent's responses into natural speech.&lt;/p&gt;

&lt;p&gt;Real-Time Transport&lt;/p&gt;

&lt;p&gt;The voice interaction is handled through the real-time voice-agent infrastructure, allowing the learner and agent to communicate conversationally.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;The Hard Parts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The challenge definitely wasn't a straight line from idea to working product.&lt;/p&gt;

&lt;p&gt;One of the earliest problems I faced was getting the voice agent to consistently respond during conversations. At one point, the agent could respond to the first interaction but fail to continue properly.&lt;/p&gt;

&lt;p&gt;I tested different configurations and investigated whether the problem was related to the LLM and agent setup.&lt;/p&gt;

&lt;p&gt;Another important lesson came while implementing tools.&lt;/p&gt;

&lt;p&gt;It isn't enough to create a function and assume the AI will use it correctly. The tool description matters because the model uses that description to decide when the function should be called.&lt;/p&gt;

&lt;p&gt;I also had to make sure that a failed lookup didn't turn into a hallucinated answer. For example, if a requested learning topic isn't available in the dataset, the agent should say that rather than inventing content and presenting it as if it came from the dataset.&lt;/p&gt;

&lt;p&gt;The same principle became even more important when building human escalation. The agent needed to know when to stop, ask permission, create a useful summary, and give the learner a reference ID instead of pretending it could solve everything.&lt;/p&gt;

&lt;p&gt;These problems taught me that building an AI agent isn't just about connecting APIs.&lt;/p&gt;

&lt;p&gt;The difficult part is designing reliable behavior around the AI.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;How You Can Build Your Own Voice Agent&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A basic voice agent can be broken into a few core components:&lt;/p&gt;

&lt;p&gt;User Speech&lt;br&gt;
     ↓&lt;br&gt;
Speech-to-Text&lt;br&gt;
     ↓&lt;br&gt;
LLM / Agent&lt;br&gt;
     ↓&lt;br&gt;
Tools / Memory / Business Logic&lt;br&gt;
     ↓&lt;br&gt;
Text-to-Speech&lt;br&gt;
     ↓&lt;br&gt;
   User&lt;/p&gt;

&lt;p&gt;For real-time interaction, you also need a transport layer that connects the user and the voice agent.&lt;/p&gt;

&lt;p&gt;In my project, the implementation is based on the Murf LiveKit starter architecture, with the agent logic, tools, memory, and frontend built around that foundation.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Getting Started&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
Clone the public repository:&lt;/p&gt;

&lt;p&gt;git clone &lt;a href="https://github.com/VaibhavAran/murf-livekit-starter.git" rel="noopener noreferrer"&gt;https://github.com/VaibhavAran/murf-livekit-starter.git&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then follow the setup instructions in the repository's "README.md" to install the required dependencies and start the backend and frontend.&lt;/p&gt;

&lt;p&gt;API Keys&lt;/p&gt;

&lt;p&gt;Keep API keys in environment variables.&lt;/p&gt;

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

&lt;p&gt;.env&lt;/p&gt;

&lt;p&gt;Never place API keys directly inside source code and never commit ".env" files containing real credentials to GitHub.&lt;/p&gt;

&lt;p&gt;Running the Agent&lt;/p&gt;

&lt;p&gt;After configuring the required environment variables, start the backend and frontend using the commands documented in the repository README.&lt;/p&gt;

&lt;p&gt;Open the frontend, allow microphone access, connect to the agent, and start a conversation.&lt;/p&gt;

&lt;p&gt;A good first test is simply:&lt;/p&gt;

&lt;p&gt;«"Hello, can you help me learn something?"»&lt;/p&gt;

&lt;p&gt;Then test one feature at a time—memory, practice tools, escalation, and specialist handoff.&lt;/p&gt;




&lt;p&gt;*&lt;em&gt;What I Learned&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
The biggest lesson from this challenge is that building a voice agent is much more than making an LLM speak.&lt;/p&gt;

&lt;p&gt;A useful agent needs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A clear job&lt;/li&gt;
&lt;li&gt;Well-defined limits&lt;/li&gt;
&lt;li&gt;Reliable tools&lt;/li&gt;
&lt;li&gt;Memory with consent&lt;/li&gt;
&lt;li&gt;Human escalation&lt;/li&gt;
&lt;li&gt;Good user feedback&lt;/li&gt;
&lt;li&gt;Measurable outcomes&lt;/li&gt;
&lt;li&gt;Focused specialist capabilities&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And perhaps most importantly, the agent needs to know when it should not act on its own.&lt;/p&gt;

&lt;p&gt;Everyone participating in this challenge had access to many of the same resources. The interesting part was deciding how to use those building blocks to create a coherent experience.&lt;/p&gt;

&lt;p&gt;For me, the goal was to connect every capability around one learner journey instead of treating each feature as an isolated demo.&lt;/p&gt;




&lt;p&gt;*&lt;em&gt;What I'd Build Next&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
There is still a lot I'd like to improve.&lt;/p&gt;

&lt;p&gt;I'd like to expand the curriculum and support more Indian languages, make the learning experience more adaptive, improve low-bandwidth behavior, introduce more specialist agents, and build a stronger teacher dashboard.&lt;/p&gt;

&lt;p&gt;I'd also like to measure actual learning progress over longer periods rather than focusing mainly on individual calls.&lt;/p&gt;

&lt;p&gt;The long-term goal would be to move from an AI that simply helps a learner during a conversation to a system that can understand how that learner is progressing over time.&lt;/p&gt;




&lt;p&gt;*&lt;em&gt;Final Thoughts&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
The 10 Days of Voice Agents – VoiceForBharat Edition gave me a chance to build something from a simple voice interaction into a much more complete system.&lt;/p&gt;

&lt;p&gt;The final AI Learning Companion can:&lt;/p&gt;

&lt;p&gt;Talk → Understand → Remember → Practice → Use Tools → Follow Up → Escalate → Measure → Delegate&lt;/p&gt;

&lt;p&gt;But the biggest takeaway isn't the number of features.&lt;/p&gt;

&lt;p&gt;It's learning how to make AI behave responsibly and usefully in a real user journey.&lt;/p&gt;

&lt;p&gt;I'm grateful to Murf AI for creating a challenge that pushed me to build, debug, experiment, and think beyond a basic chatbot.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Links&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;GitHub Repository:&amp;nbsp;"&lt;a href="https://github.com/VaibhavAran/murf-livekit-starter.git" rel="noopener noreferrer"&gt;https://github.com/VaibhavAran/murf-livekit-starter.git&lt;/a&gt;" (&lt;a href="https://github.com/VaibhavAran/murf-livekit-starter.git" rel="noopener noreferrer"&gt;https://github.com/VaibhavAran/murf-livekit-starter.git&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Built as part of 10 Days of Voice Agents – VoiceForBharat Edition, powered by Murf Falcon.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>learning</category>
    </item>
  </channel>
</rss>
