<?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: Sakshi Chhetri</title>
    <description>The latest articles on DEV Community by Sakshi Chhetri (@sakshi_chhetri_7bc71d39a1).</description>
    <link>https://dev.to/sakshi_chhetri_7bc71d39a1</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%2F4078085%2F300d38c6-c8c8-42da-ae50-a55945a3c2d4.jpg</url>
      <title>DEV Community: Sakshi Chhetri</title>
      <link>https://dev.to/sakshi_chhetri_7bc71d39a1</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sakshi_chhetri_7bc71d39a1"/>
    <language>en</language>
    <item>
      <title>Building HealthSaathi: My 10-Day Journey Into Voice Agents</title>
      <dc:creator>Sakshi Chhetri</dc:creator>
      <pubDate>Fri, 14 Aug 2026 19:14:32 +0000</pubDate>
      <link>https://dev.to/sakshi_chhetri_7bc71d39a1/building-healthsaathi-my-10-day-journey-into-voice-agents-27gl</link>
      <guid>https://dev.to/sakshi_chhetri_7bc71d39a1/building-healthsaathi-my-10-day-journey-into-voice-agents-27gl</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;Introduction&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Over the past 10 days, I took part in the 10 Days of &lt;strong&gt;Voice Agents — #VoiceForBharat Edition&lt;/strong&gt;, where I built a voice agent from the ground up.&lt;/p&gt;

&lt;p&gt;For my project, I chose the Health Access track and built &lt;strong&gt;HealthSaathi&lt;/strong&gt;, a voice-based health assistant designed to make basic health guidance more accessible through natural conversations.&lt;/p&gt;

&lt;p&gt;The goal wasn't just to make an AI that could answer questions. Throughout the challenge, I worked on making &lt;strong&gt;HealthSaathi&lt;/strong&gt; more useful in a real-world setting by adding memory, tools, safety guardrails, outbound calling, and human escalation.&lt;/p&gt;

&lt;p&gt;This journey also taught me that building a voice agent involves much more than connecting an LLM to a microphone.&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%2Fmm5qw6681gvqnorjg9w2.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%2Fmm5qw6681gvqnorjg9w2.png" alt="_HealthSaathi's voice-agent interface._" width="800" height="626"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Healthcare can sometimes feel difficult to navigate, especially when someone doesn't know where to begin or simply wants basic guidance.&lt;/p&gt;

&lt;p&gt;I wanted to explore how voice could make this interaction simpler.&lt;/p&gt;

&lt;p&gt;Instead of requiring users to type everything into a chatbot, &lt;strong&gt;HealthSaathi&lt;/strong&gt; allows them to communicate through conversation. The idea is to make the experience feel more natural and accessible, especially for users who may prefer speaking over typing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;HealthSaathi&lt;/strong&gt; is not designed to replace doctors or provide professional medical diagnosis. Its purpose is to assist users with basic health-related guidance and direct them toward appropriate next steps when necessary.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;What is HealthSaathi?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;HealthSaathi&lt;/strong&gt; is a voice-based AI assistant that I built for the Health Access track of the challenge.&lt;/p&gt;

&lt;p&gt;The agent can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Have real-time voice conversations&lt;/li&gt;
&lt;li&gt;Respond using &lt;strong&gt;Murf&lt;/strong&gt; Falcon TTS&lt;/li&gt;
&lt;li&gt;Remember relevant information about returning users&lt;/li&gt;
&lt;li&gt;Use tools to perform useful tasks&lt;/li&gt;
&lt;li&gt;Make outbound follow-up calls&lt;/li&gt;
&lt;li&gt;Follow safety and conversation guardrails&lt;/li&gt;
&lt;li&gt;Escalate conversations when AI assistance is not enough&lt;/li&gt;
&lt;li&gt;Track the state of the conversation through the frontend&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The project gradually evolved from a simple voice conversation into a more complete voice-agent system.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;How the System Works&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;At a basic level, the system follows this flow:&lt;/p&gt;

&lt;p&gt;User speaks → Speech-to-Text → LLM → Memory/Tools → Response → &lt;strong&gt;Murf Falcon&lt;/strong&gt; TTS → User hears the response&lt;/p&gt;

&lt;p&gt;The different components have different responsibilities.&lt;/p&gt;

&lt;p&gt;Speech-to-Text (STT) converts the user's speech into text so that the language model can understand it.&lt;/p&gt;

&lt;p&gt;LLM processes the user's request, maintains the conversation, decides how to respond, and determines when tools are needed.&lt;/p&gt;

&lt;p&gt;Memory allows &lt;strong&gt;HealthSaathi&lt;/strong&gt; to retain relevant information instead of treating every conversation as completely new.&lt;/p&gt;

&lt;p&gt;Tools allow the agent to perform specific tasks instead of relying only on the LLM's generated response.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Murf&lt;/strong&gt; Falcon TTS converts the response back into speech so that the user can hear the answer naturally.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LiveKit&lt;/strong&gt; handles the real-time communication layer between the user and the voice agent.&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%2Fpv371f0ycktn4gewgdmb.jpg" 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%2Fpv371f0ycktn4gewgdmb.jpg" alt="_High-level architecture of HealthSaathi._" width="799" height="422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;The Important Features I Built&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Voice with Murf Falcon&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Voice is the core of &lt;strong&gt;HealthSaathi&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For the text-to-speech layer, I used &lt;strong&gt;Murf&lt;/strong&gt; Falcon, which the challenge describes as its fastest TTS API.&lt;/p&gt;

&lt;p&gt;Using a dedicated TTS system made the interaction feel much more natural than simply displaying text responses.&lt;/p&gt;

&lt;p&gt;This was also an important part of building a voice-first experience for the #VoiceForBharat challenge.&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%2Fewul1tpr9sfcg257t1fm.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%2Fewul1tpr9sfcg257t1fm.png" alt="_HealthSaathi responding through voice._" width="800" height="527"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Conversation States&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I also personalized the frontend to show what the agent was currently doing.&lt;/p&gt;

&lt;p&gt;The interface has states such as:&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;This made it easier for the user to understand whether the agent was listening, processing, speaking, or disconnected.&lt;/p&gt;

&lt;p&gt;I also added microphone permission handling so that users receive feedback when the browser cannot access the microphone.&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%2Fmj7xad603w43b1cg96nv.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%2Fmj7xad603w43b1cg96nv.png" alt="_Call Situation._" width="800" height="536"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Tools&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Another important step was giving &lt;strong&gt;HealthSaathi&lt;/strong&gt; access to tools.&lt;/p&gt;

&lt;p&gt;Instead of asking the LLM to generate every answer itself, tools allow the agent to perform specific actions or retrieve useful information.&lt;/p&gt;

&lt;p&gt;This makes the system more reliable because certain tasks can be handled by deterministic functions rather than relying entirely on generated text.&lt;/p&gt;

&lt;p&gt;The tools were integrated into the agent while keeping the existing voice pipeline intact.&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%2F1m2bm85gcg303stc1ocb.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%2F1m2bm85gcg303stc1ocb.png" alt="_HealthSaathi using tools during a conversation._" width="800" height="542"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;5. Outbound Calling&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;One of the biggest steps in the challenge was moving beyond browser-based conversations.&lt;/p&gt;

&lt;p&gt;Instead of always waiting for a user to open the application and start a conversation, I built an outbound calling flow for health follow-ups.&lt;/p&gt;

&lt;p&gt;I used &lt;strong&gt;LiveKit&lt;/strong&gt; telephony and &lt;strong&gt;Linphone&lt;/strong&gt; to test the phone-side interaction.&lt;/p&gt;

&lt;p&gt;The call begins by telling the person who is calling and why they are being contacted, and then gives them the option to continue the conversation.&lt;/p&gt;

&lt;p&gt;This made the project feel much closer to a real-world voice application.&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%2Fqv7vztw36g96g4mehmlj.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%2Fqv7vztw36g96g4mehmlj.png" alt="_Testing HealthSaathi through an outbound phone call._" width="800" height="536"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;The Challenges I Faced&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Building the project wasn't always straightforward.&lt;/p&gt;

&lt;p&gt;One of the biggest problems I faced happened while working on the outbound agent.&lt;/p&gt;

&lt;p&gt;During one call, the LLM tried to call an &lt;strong&gt;end_call&lt;/strong&gt; tool even though that tool wasn't included in the tools available for that particular request.&lt;/p&gt;

&lt;p&gt;The result was a tool-call validation error.&lt;/p&gt;

&lt;p&gt;Instead of changing the whole architecture, I investigated how tools were being passed to the LLM and focused specifically on the outbound agent's tool behaviour.&lt;/p&gt;

&lt;p&gt;This taught me an important lesson:&lt;/p&gt;

&lt;p&gt;An LLM can only reliably call tools that are actually available to it in the current request.&lt;/p&gt;

&lt;p&gt;It also showed me that voice agents require careful handling of tool availability and conversation logic. A normal chatbot might simply display an error, but in a live phone conversation, these failures directly affect the user experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Another Lesson: A Voice Agent Is More Than an LLM&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Before starting this challenge, it was easy to think of a voice agent as:&lt;/p&gt;

&lt;p&gt;Speech → LLM → Speech&lt;/p&gt;

&lt;p&gt;But after building &lt;strong&gt;HealthSaathi&lt;/strong&gt;, I realized that there are many more pieces involved.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Low-latency communication&lt;/li&gt;
&lt;li&gt;Speech recognition&lt;/li&gt;
&lt;li&gt;Natural text-to-speech&lt;/li&gt;
&lt;li&gt;Conversation logic&lt;/li&gt;
&lt;li&gt;Memory&lt;/li&gt;
&lt;li&gt;Tools&lt;/li&gt;
&lt;li&gt;Safety guardrails&lt;/li&gt;
&lt;li&gt;Error handling&lt;/li&gt;
&lt;li&gt;Telephony when phone calls are involved&lt;/li&gt;
&lt;li&gt;Human escalation when necessary&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All of these pieces have to work together.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;How Someone Can Build Their Own Voice Agent&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;If you want to build a similar project, the basic architecture can be broken into four main parts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Speech-to-Text&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You need a system that converts the user's speech into text.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Large Language Model&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The LLM understands the user's request and generates the response or decides when a tool should be used.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Text-to-Speech&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The generated response is converted back into audio. In my project, I used &lt;strong&gt;Murf&lt;/strong&gt; Falcon for this part.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Real-Time Transport&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You need something that can handle the real-time audio communication between the user and the agent. My project uses &lt;strong&gt;LiveKit&lt;/strong&gt; for this layer.&lt;/p&gt;

&lt;p&gt;Once these pieces are connected, you can start adding things like memory, tools, guardrails, and telephony.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Running HealthSaathi&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The source code for the project is available on GitHub.&lt;/p&gt;

&lt;p&gt;GitHub:&lt;br&gt;
👉 &lt;a href="https://github.com/sakshichhetri845-sys/10_days_murfaibuildathonn" rel="noopener noreferrer"&gt;https://github.com/sakshichhetri845-sys/10_days_murfaibuildathonn&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;What I Would Improve Next&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Although &lt;strong&gt;HealthSaathi&lt;/strong&gt; has come a long way during these 10 days, there is still a lot I would like to improve.&lt;/p&gt;

&lt;p&gt;Some of the things I would explore next are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Better support for Indian languages and code-mixed conversations&lt;/li&gt;
&lt;li&gt;More robust health-related tools&lt;/li&gt;
&lt;li&gt;Better conversation evaluation&lt;/li&gt;
&lt;li&gt;Improved response latency&lt;/li&gt;
&lt;li&gt;More detailed call analytics&lt;/li&gt;
&lt;li&gt;More specialist-agent handoffs&lt;/li&gt;
&lt;li&gt;Better handling of complex conversations&lt;/li&gt;
&lt;li&gt;More extensive real-world testing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The challenge gave me a working foundation, but there is still plenty of room to make the system more reliable and useful.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;What I Learned&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The biggest thing I learned during these 10 days is that building a voice agent isn't just about making an AI talk.&lt;/p&gt;

&lt;p&gt;It is about designing an entire interaction.&lt;/p&gt;

&lt;p&gt;I learned how memory changes the way an agent can interact with returning users, how tools extend what an LLM can actually do, how telephony introduces a completely different set of challenges, and how small tool-calling or latency issues can have a big impact on a real conversation.&lt;/p&gt;

&lt;p&gt;Most importantly, I learned by actually building, breaking, debugging, and rebuilding.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;HealthSaathi&lt;/strong&gt; started as an idea for a voice-based health assistant, but over these 10 days it became a much more complete system.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Project Links&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt;&lt;br&gt;
👉 &lt;a href="https://github.com/sakshichhetri845-sys/10_days_murfaibuildathonn" rel="noopener noreferrer"&gt;https://github.com/sakshichhetri845-sys/10_days_murfaibuildathonn&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/in/sakshi-chhetri-a962b6367/" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/sakshi-chhetri-a962b6367/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Challenge:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;10 Days of Voice Agents — #VoiceForBharat Edition&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;10 Days of Voice Agents — #VoiceForBharat Edition&lt;/strong&gt; was a great experience because it pushed me to think beyond simply building an AI application.&lt;/p&gt;

&lt;p&gt;I had to think about the user experience, memory, tools, safety, real-time communication, phone calls, and what happens when things don't work as expected.&lt;/p&gt;

&lt;p&gt;I'm happy with what &lt;strong&gt;HealthSaathi&lt;/strong&gt; became in these 10 days, and I'm excited to keep improving it beyond the challenge.&lt;/p&gt;

&lt;p&gt;Thanks for following along with my &lt;strong&gt;HealthSaathi&lt;/strong&gt; journey. 🎙️&lt;/p&gt;

</description>
      <category>ai</category>
      <category>murfai</category>
      <category>healthcare</category>
      <category>voiceai</category>
    </item>
  </channel>
</rss>
