<?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: Purvi Tech</title>
    <description>The latest articles on DEV Community by Purvi Tech (@purvi_tech_4a639fddaccfc2).</description>
    <link>https://dev.to/purvi_tech_4a639fddaccfc2</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%2F4079237%2F78092020-9322-468d-a86b-74823712d062.png</url>
      <title>DEV Community: Purvi Tech</title>
      <link>https://dev.to/purvi_tech_4a639fddaccfc2</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/purvi_tech_4a639fddaccfc2"/>
    <language>en</language>
    <item>
      <title>Building a Voice Agent in 10 Days — My VoiceForBharat Journey</title>
      <dc:creator>Purvi Tech</dc:creator>
      <pubDate>Sat, 15 Aug 2026 16:50:36 +0000</pubDate>
      <link>https://dev.to/purvi_tech_4a639fddaccfc2/building-a-voice-agent-in-10-days-my-voiceforbharat-journey-l4h</link>
      <guid>https://dev.to/purvi_tech_4a639fddaccfc2/building-a-voice-agent-in-10-days-my-voiceforbharat-journey-l4h</guid>
      <description>&lt;p&gt;This document outlines the complete story, architecture, development log, challenges solved, and setup guide for &lt;strong&gt;Jan Sahay over 10 Days of Building Voice Agents.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;**&lt;/p&gt;

&lt;h2&gt;
  
  
  🏛️ The 4 Core Functional Pillars
&lt;/h2&gt;

&lt;p&gt;**&lt;br&gt;
Rather than building a generic open-ended chatbot, Jan Sahay is structured around four foundational pillars designed specifically for citizen welfare and digital safety:&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%2F4udns071ku1fadmu0nhr.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%2F4udns071ku1fadmu0nhr.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💰 &lt;strong&gt;Financial Literacy:&lt;/strong&gt; Jargon-free guidance on savings accounts, budgeting fundamentals, formal credit, interest rates, and long-term financial planning.&lt;br&gt;
🛡️** Fraud Prevention*&lt;em&gt;: Real-time coaching on OTP/PIN safety, identifying phishing messages, fake caller identification, and avoiding malicious screen-sharing APKs.&lt;br&gt;
🏛️ **Government Welfare Schemes&lt;/em&gt;&lt;em&gt;: Deterministic eligibility calculations and checklists for PMJDY, PMSBY, PMJJBY, Atal Pension Yojana (APY), Sukanya Samriddhi (SSY), PM Mudra Yojana, and PM-KISAN.&lt;br&gt;
📞 **Complaint &amp;amp; Emergency Triage:&lt;/em&gt;* Structured step-by-step incident response for cybercrime reporting (1930 / cybercrime.gov.in), bank dispute filing for RBI Zero-Liability protection, and consumer forum escalations.&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;🏗️ System Architecture &amp;amp; Real-Time Voice Flow&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Jan Sahay achieves sub-500ms voice turnaround times using real-time WebRTC audio streaming, streaming transcription, low-latency LLM reasoning, and natural Indian voice synthesis.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Real-Time Audio Pipeline Flow&lt;/strong&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%2F90owvdzzfjwo03sixcqx.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%2F90owvdzzfjwo03sixcqx.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Complete Multi-Tier Architecture&lt;/strong&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%2Fe8xs25jdesue3992jpn7.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%2Fe8xs25jdesue3992jpn7.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;**&lt;/p&gt;
&lt;h2&gt;
  
  
  🎙️ Meet the Team of AI Specialists
&lt;/h2&gt;

&lt;p&gt;**&lt;br&gt;
Jan Sahay uses a multi-agent federation where a main intake guide dynamically hands off the conversation to dedicated domain specialists, matching their persona with the optimal &lt;strong&gt;Murf Falcon voice profile&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Anisha:&lt;/strong&gt; Warm intake, 2-turn scoping, personalized greetings, banking basics.&lt;br&gt;
&lt;strong&gt;2. Samar&lt;/strong&gt;: Golden hour containment, 1930 reporting, bank helpline lookup.&lt;br&gt;
&lt;strong&gt;3. Pooja:&lt;/strong&gt; APY pension calculators, Sukanya Samriddhi (8.2%), PMJDY/PMSBY/PMJJBY.&lt;br&gt;
&lt;strong&gt;4. Samar:&lt;/strong&gt; PMMY Mudra loans (Shishu, Kishore, Tarun), PM SVANidhi vendor loans.&lt;br&gt;
&lt;strong&gt;5. Palak:&lt;/strong&gt; PMFBY 72-hr crop loss reporting, PM-KISAN e-KYC status, Kisan Credit Cards.&lt;/p&gt;

&lt;p&gt;**&lt;/p&gt;
&lt;h2&gt;
  
  
  📅 10-Day Development Journey &amp;amp; Log
&lt;/h2&gt;

&lt;p&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%2Fyi0l4dt3qpvu7aw461su.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%2Fyi0l4dt3qpvu7aw461su.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;**&lt;/p&gt;
&lt;h2&gt;
  
  
  🟢 Day 1 — The Problem: Financial Confusion Is Everywhere
&lt;/h2&gt;

&lt;p&gt;**&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Key Realization:&lt;/strong&gt; Financial information is available, but accessibility is broken. Ordinary citizens struggle with banking, digital safety (UPI fraud/phishing), welfare schemes, and dispute recourse.&lt;br&gt;
&lt;strong&gt;- Objective:&lt;/strong&gt; Build an AI assistant that feels less like a search engine and more like a patient, empathetic citizen-support counselor.&lt;br&gt;
&lt;strong&gt;- Core Pillars Defined:&lt;/strong&gt; Simple, Conversational, Multilingual, Trustworthy, and Voice-first.&lt;/p&gt;

&lt;p&gt;**&lt;/p&gt;
&lt;h2&gt;
  
  
  🟢 Day 2 — Designing the Citizen Experience
&lt;/h2&gt;

&lt;p&gt;**&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Structured the core 4-pillar interaction model (Financial Literacy, Fraud Prevention, Government Schemes, Complaint Assistance).&lt;/li&gt;
&lt;li&gt;Defined prompt rules prohibiting hallucinations and outlining empathetic responses for users facing financial distress&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;**&lt;/p&gt;
&lt;h2&gt;
  
  
  🟢 Day 3 — Giving the AI a Memory
&lt;/h2&gt;

&lt;p&gt;**&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Problem:&lt;/strong&gt; Stateless chatbots suffer from amnesia. If Ramesh calls today about his daughter's education fund and calls back tomorrow, repeating context causes friction.&lt;br&gt;
&lt;strong&gt;- Solution:&lt;/strong&gt; Built the Caller Memory Database (backend/caller_data.db using SQLite) with schema for user_id, name, language_pref, demographic_facts, and discussed_schemes.&lt;br&gt;
&lt;strong&gt;- Privacy First:&lt;/strong&gt; Integrated explicit verbal consent checks ("May I remember this for your next call?") before storing non-PII demographic facts.&lt;/p&gt;

&lt;p&gt;**&lt;/p&gt;
&lt;h2&gt;
  
  
  🟢 Day 4 — Building the Government Scheme Knowledge Layer
&lt;/h2&gt;

&lt;p&gt;**&lt;br&gt;
**&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Architecture Rule:** LLM handles dialogue $\rightarrow$ Deterministic Rules Engine guarantees official policy truth.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Implemented exact formula calculators for:&lt;/strong&gt;
&lt;strong&gt;- PMJDY:&lt;/strong&gt; Zero balance, RuPay debit card, ₹2L accident insurance cover.
&lt;strong&gt;- PMSBY:&lt;/strong&gt; Accidental death/disability cover (Age 18–70, ₹20/year premium, ₹2 Lakh cover).
&lt;strong&gt;- PMJJBY:&lt;/strong&gt; Life insurance cover (Age 18–50, ₹436/year premium, ₹2 Lakh cover).
&lt;strong&gt;- APY:&lt;/strong&gt; Atal Pension Yojana pension slabs (₹1,000–₹5,000/mo at age 60 based on entry age).
&lt;strong&gt;- SSY:&lt;/strong&gt; Sukanya Samriddhi Yojana (Girl child &amp;lt; 10 yrs, current 8.2% interest, tax exemptions).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;**&lt;/p&gt;
&lt;h2&gt;
  
  
  🟢 Day 5 — Turning Text Into a Real-Time Voice Conversation
&lt;/h2&gt;

&lt;p&gt;**&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Integrated LiveKit WebRTC Agents with Deepgram Nova-2 STT and Murf Falcon TTS.&lt;/li&gt;
&lt;li&gt;Enabled streaming bidirectional audio with Silero VAD (Voice Activity Detection) for seamless turn detection and low-latency interruptions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;**&lt;/p&gt;
&lt;h2&gt;
  
  
  🟢 Day 6 — Making Jan Sahay Multilingual &amp;amp; Code-Mixed
&lt;/h2&gt;

&lt;p&gt;**&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Configured STT and TTS mappings for English (en-IN), Hindi (hi-IN), and conversational Hinglish.&lt;/li&gt;
&lt;li&gt;Enforced single-language response purity per turn to eliminate double-audio slash artifacts ("Hello / नमस्ते").&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;**&lt;/p&gt;
&lt;h2&gt;
  
  
  🟢 Day 7 — Fraud Prevention as a First-Class Feature
&lt;/h2&gt;

&lt;p&gt;**&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Implemented Immediate Action Matrix for cyber safety:&lt;/li&gt;
&lt;li&gt;Strict alerts on OTP/PIN confidentiality.&lt;/li&gt;
&lt;li&gt;Screen-sharing warning triggers (AnyDesk, TeamViewer).&lt;/li&gt;
&lt;li&gt;Unverified QR code and UPI PIN receiving scam alerts.&lt;/li&gt;
&lt;li&gt;Golden Hour Protocols to halt fund movement.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;**&lt;/p&gt;
&lt;h2&gt;
  
  
  🟢 Day 8 — Action-Oriented Complaint Assistance
&lt;/h2&gt;

&lt;p&gt;**&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Developed structured escalation protocols:&lt;/strong&gt;
&lt;strong&gt;- Banking Disputes:&lt;/strong&gt; Card freeze, dispute filing within 3 days for RBI Zero-Liability.
&lt;strong&gt;- Cybercrime Reporting:&lt;/strong&gt; Guided walkthrough for cybercrime.gov.in and National Helpline 1930.
&lt;strong&gt;- Human Escalation:&lt;/strong&gt; Generates unique escalation reference IDs (e.g., ESC-XXXXX) logged to SQLite for officer review.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;**&lt;/p&gt;
&lt;h2&gt;
  
  
  🟢 Day 9 — Building the Web Portal &amp;amp; Telemetry Dashboard
&lt;/h2&gt;

&lt;p&gt;**&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Developed a high-performance Next.js web application with a single-click 🎙️ "Start Talking" interface.&lt;/li&gt;
&lt;li&gt;Built real-time telemetry tracking turn latency, outcome classifications (resolved/escalated), and active escalation queues at /api/dashboard.&lt;/li&gt;
&lt;li&gt;Added telephony SIP outbound calling capability (backend/src/outbound_call.py).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;**&lt;/p&gt;
&lt;h2&gt;
  
  
  🟢 Day 10 — Open-Source Release &amp;amp; Architecture Documentation
&lt;/h2&gt;

&lt;p&gt;**&lt;/p&gt;

&lt;p&gt;Packaged repository with automated startup scripts (start_app.ps1 / start_app.sh), comprehensive API documentation, and architecture diagrams.&lt;/p&gt;

&lt;p&gt;**&lt;/p&gt;
&lt;h2&gt;
  
  
  🚧 Challenges Faced &amp;amp; How We Solved Them
&lt;/h2&gt;

&lt;p&gt;**&lt;br&gt;
&lt;strong&gt;1. 🌐 Multilingual &amp;amp; Language Switching Inconsistencies&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Problem&lt;/strong&gt;: In bilingual English/Hindi environments, the agent sometimes randomly replied in Hindi to an English prompt or switched languages mid-conversation without user intent.&lt;br&gt;
&lt;strong&gt;How We Solved It:&lt;/strong&gt;&lt;br&gt;
Implemented session-level language tracking in SQLite memory.&lt;br&gt;
Enforced strict prompt guidelines: detect user language preference, maintain it consistently across turns, and switch languages only when explicitly requested by the citizen.&lt;br&gt;
Required native Devanagari script output for Hindi responses to ensure Murf Falcon TTS synthesizes authentic intonation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. 🧠 Hallucination-Free Financial Reasoning&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;The Problem:&lt;/strong&gt; Financial queries involving age limits, cutoff dates, premium tiers, and pension returns must be 100% accurate. LLMs can hallucinate calculation schedules.&lt;br&gt;
&lt;strong&gt;How We Solved It:&lt;/strong&gt;&lt;br&gt;
Decoupled conversational empathy from calculations.&lt;br&gt;
Gemini extracts parameters (age, target pension, child age) and calls deterministic Python functions (calculate_apy_contribution, get_scheme_details).&lt;br&gt;
Verified math is returned to Gemini to format as a spoken response.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. 🔄 Dynamic Voice Profile Switching in WebRTC&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;The Problem:&lt;/strong&gt; Tearing down WebRTC rooms when switching from Anisha to Samar or Pooja caused noticeable audio stutters and 2–3s delays.&lt;br&gt;
&lt;strong&gt;How We Solved It:&lt;/strong&gt; Kept the WebRTC audio transport live while dynamically swapping the Murf Falcon voice profile parameters in-flight during tool execution.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. 🛡️ Accidental PII Memorization&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;The Problem:&lt;/strong&gt; Panicked callers reporting fraud frequently blurt out card numbers or PINs.&lt;br&gt;
&lt;strong&gt;How We Solved It:&lt;/strong&gt; Built an automated sanitization regex layer in save_caller_facts and create_escalation that automatically scrubs card numbers, OTPs, PINs, and passwords before database commits.&lt;/p&gt;

&lt;p&gt;**&lt;/p&gt;
&lt;h2&gt;
  
  
  🔮 What's Next on the Roadmap
&lt;/h2&gt;

&lt;p&gt;**&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;📞 Telephony &amp;amp; IVR Toll-Free Access:&lt;/strong&gt;&lt;br&gt;
SIP Trunking integration with Exotel / Twilio so citizens without smartphones can dial a toll-free number from any basic feature phone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🗣️ Hyper-Local Regional Dialects&lt;/strong&gt;:&lt;br&gt;
Expand beyond Hindi/English to regional languages (Bhojpuri, Maithili, Bengali, Marathi, Tamil, Telugu).&lt;br&gt;
Acoustic noise suppression tuned for busy Indian environments (markets, bus stops, railway stations).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;📄 DigiLocker &amp;amp; Voice-Guided Application:&lt;/strong&gt;&lt;br&gt;
Voice OTP authorization for instant eligibility verification via DigiLocker.&lt;br&gt;
Voice-guided form pre-filling for PM-KISAN and Sukanya Samriddhi portals.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;📲 Multi-Channel Follow-ups (WhatsApp / SMS):&lt;/strong&gt;&lt;br&gt;
Automated post-call summary SMS with verified helpline links, scheme forms, and grievance reference IDs.&lt;br&gt;
Instant downloadable PDF checklist generated at the end of the voice call.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🚨 Proactive Outbound Alerts:&lt;/strong&gt;&lt;br&gt;
Automated voice alerts when subsidy installments (PM-KISAN, APY pensions) are credited.&lt;br&gt;
Geo-targeted voice broadcasts warning citizens about emerging phishing scams in their district.&lt;/p&gt;

&lt;p&gt;**&lt;/p&gt;
&lt;h2&gt;
  
  
  🛠️ Step-by-Step Quickstart Guide
&lt;/h2&gt;

&lt;p&gt;**&lt;br&gt;
&lt;strong&gt;Prerequisites&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1. Python 3.10+&lt;/li&gt;
&lt;li&gt;2. uv (Fast Python package manager)
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="c"&gt;# Windows (PowerShell)&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;powershell&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-ExecutionPolicy&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;ByPass&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-c&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"irm https://astral.sh/uv/install.ps1 | iex"&lt;/span&gt;&lt;span class="w"&gt;

  &lt;/span&gt;&lt;span class="c"&gt;# macOS/Linux&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;curl&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-LsSf&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;https://astral.sh/uv/install.sh&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;sh&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Node.js&lt;/strong&gt; 18+ and &lt;strong&gt;pnpm&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; pnpm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;LiveKit Cloud Account: cloud.livekit.io&lt;/li&gt;
&lt;li&gt;Murf AI API Key: murf.ai/api/dashboard&lt;/li&gt;
&lt;li&gt;Google AI Studio API Key: aistudio.google.com&lt;/li&gt;
&lt;li&gt;Deepgram API Key: deepgram.com&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Clone the Repository &amp;amp; Configure Secrets&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/your-username/jan-sahay-voice-agent.git
&lt;span class="nb"&gt;cd &lt;/span&gt;jan-sahay-voice-agent/murf-livekit-starter
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create .env.local files in both backend/ and frontend/:&lt;/p&gt;

&lt;p&gt;backend/.env.local:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight conf"&gt;&lt;code&gt;&lt;span class="n"&gt;LIVEKIT_URL&lt;/span&gt;=&lt;span class="n"&gt;wss&lt;/span&gt;://&lt;span class="n"&gt;your&lt;/span&gt;-&lt;span class="n"&gt;project&lt;/span&gt;.&lt;span class="n"&gt;livekit&lt;/span&gt;.&lt;span class="n"&gt;cloud&lt;/span&gt;
&lt;span class="n"&gt;LIVEKIT_API_KEY&lt;/span&gt;=&lt;span class="n"&gt;your_livekit_key&lt;/span&gt;
&lt;span class="n"&gt;LIVEKIT_API_SECRET&lt;/span&gt;=&lt;span class="n"&gt;your_livekit_secret&lt;/span&gt;
&lt;span class="n"&gt;MURF_API_KEY&lt;/span&gt;=&lt;span class="n"&gt;your_murf_falcon_api_key&lt;/span&gt;
&lt;span class="n"&gt;DEEPGRAM_API_KEY&lt;/span&gt;=&lt;span class="n"&gt;your_deepgram_api_key&lt;/span&gt;
&lt;span class="n"&gt;GOOGLE_API_KEY&lt;/span&gt;=&lt;span class="n"&gt;your_gemini_api_key&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;frontend/.env.local:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight conf"&gt;&lt;code&gt;&lt;span class="n"&gt;LIVEKIT_URL&lt;/span&gt;=&lt;span class="n"&gt;wss&lt;/span&gt;://&lt;span class="n"&gt;your&lt;/span&gt;-&lt;span class="n"&gt;project&lt;/span&gt;.&lt;span class="n"&gt;livekit&lt;/span&gt;.&lt;span class="n"&gt;cloud&lt;/span&gt;
&lt;span class="n"&gt;LIVEKIT_API_KEY&lt;/span&gt;=&lt;span class="n"&gt;your_livekit_key&lt;/span&gt;
&lt;span class="n"&gt;LIVEKIT_API_SECRET&lt;/span&gt;=&lt;span class="n"&gt;your_livekit_secret&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 2: Install Backend Dependencies&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;backend
uv &lt;span class="nb"&gt;sync
&lt;/span&gt;uv run python src/agent.py download-files
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 3: Install Frontend Dependencies&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ../frontend
pnpm &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 4: Run the Application&lt;br&gt;
Option A: One-Click Startup Script (Recommended)&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Windows (PowerShell):&lt;/span&gt;
.&lt;span class="se"&gt;\s&lt;/span&gt;tart_app.ps1

&lt;span class="c"&gt;# Linux / macOS:&lt;/span&gt;
&lt;span class="nb"&gt;chmod&lt;/span&gt; +x start_app.sh
./start_app.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Option B: Separate Terminals&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Terminal 1: Backend Voice Worker&lt;/span&gt;
&lt;span class="nb"&gt;cd &lt;/span&gt;backend
uv run python src/agent.py dev

&lt;span class="c"&gt;# Terminal 2: Frontend Web UI &amp;amp; Dashboard&lt;/span&gt;
&lt;span class="nb"&gt;cd &lt;/span&gt;frontend
pnpm dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open &lt;strong&gt;&lt;a href="http://localhost:3000" rel="noopener noreferrer"&gt;http://localhost:3000&lt;/a&gt;&lt;/strong&gt; in your browser, click "Start talking", grant microphone access, and begin speaking with Anisha!&lt;/p&gt;

&lt;p&gt;**&lt;/p&gt;

&lt;h2&gt;
  
  
  📁 Repository Structure
&lt;/h2&gt;

&lt;p&gt;**&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;jan-sahay/
├── README.md                           # Main documentation &amp;amp; 10-day build story
└── murf-livekit-starter/
    ├── start_app.ps1                   # Windows 1-click startup script
    ├── start_app.sh                    # Linux/macOS 1-click startup script
    ├── backend/
    │   ├── caller_data.db              # SQLite Caller Memory &amp;amp; Escalations DB
    │   ├── src/
    │   │   ├── agent.py                # Main LiveKit Agent &amp;amp; Multi-Specialist logic
    │   │   ├── db.py                   # SQLite memory CRUD, calculators &amp;amp; PII sanitizer
    │   │   ├── prompt.py               # Anisha persona &amp;amp; system guardrails
    │   │   ├── specialist_prompts.py   # Prompts for Samar, Pooja, and Palak
    │   │   └── outbound_call.py        # Telephony SIP outbound dialer
    │   └── pyproject.toml              # uv Python dependencies
    └── frontend/
        ├── app/
        │   ├── page.tsx                # Next.js Voice Assistant Web Interface
        │   └── api/dashboard/route.ts  # Observability &amp;amp; Escalations API
        └── package.json                # Frontend dependencies (pnpm)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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