Building NEONPLUS: My Journey Through the 10 Days of AI Voice Agents Challenge 🚀 Over the past ten days, I took part in the 10 Days of AI Voice Agents (VoiceForBharat Edition) challenge. The goal was simple yet ambitious: build a production-ready, highly responsive voice agent tailored for Indian users from scratch. Throughout this journey, every single voice component was powered by Murf Falcon, the fastest TTS API, using expressive and natural voices like Anisha, Samar, and Pooja. Here is the complete story of what I built, the hurdles I faced, and how you can build your own. 1. Introducing NEONPLUS: The Problem & Solution The Problem: Many automated support and interactive systems fail to handle Indian multi-locale contexts, often forcing unnatural English accents or failing to recognize code-mixed conversations. Who it is for: Indian users seeking instant, natural, and localized voice assistance in their native language scripts. Why Voice? Voice removes literacy barriers, making technology instantly accessible, conversational, and intuitive for everyday users. 2. Core Features Built Over 10 Days Ultra-Fast TTS: Integrated Murf Falcon for lightning-fast speech synthesis, delivering crisp and human-like delivery using recommended voices. Multilocale & Native Script Compliance: Configured Deepgram STT (language="multi") and enforced strict prompt guidelines so the LLM responds in native scripts (e.g., Hindi in Devanagari like नमस्ते instead of romanized text). Advanced Capabilities: Equipped the agent with memory for returning users, custom tools for fetching data, automated outbound calling, human escalation/hand-offs, and specialist agent routing. Analytics Dashboard: Built a tracking backend using Python, SQLite, and Chart.js to monitor call metrics and outcomes. 3. The Hardest Part & How I Solved It The Challenge: While building the call analytics dashboard and testing local endpoints, I ran into an annoying environment glitch where my local frontend interface refused to load or show up properly on localhost:3000. What I Tried & The Fix: Initially, I checked my port bindings and routing rules. After debugging the Flask application structure and ensuring proper template rendering paths, I cleared the local port conflict and successfully re-hosted the SQLite-backed analytics dashboard, bringing the entire monitoring system online. 4. How You Can Build Your Own Voice Agent If you want to start building, here is a quick practical guide: Main System Components: Speech-to-Text (STT): Deepgram (configured for multi-language detection). LLM: Google Gemini (for processing logic and conversation flow). Text-to-Speech (TTS): Murf Falcon (for low-latency, hyper-realistic voice output). Real-Time Transport: LiveKit Agents framework. python import logging from dotenv import load_dotenv from livekit.agents import JobContext, WorkerOptions, cli from livekit.agents.multimodal import MultilingualModel from livekit.agents.voice import AgentSession from livekit.plugins import deepgram, google, murf, silero, tokenize

load_dotenv() logger = logging.getLogger("voice-agent")

async def entrypoint(ctx: JobContext): vad = silero.VAD.load()

system_prompt = (
    "You are a helpful voice assistant. "
    "LANGUAGE & SCRIPT: Always write every language in its own native script. "
    "Hindi -> Devanagari (नमस्ते), never romanized."
)

session = AgentSession(
    stt=deepgram.STT(model="nova-3", language="multi"),
    llm=google.LLM(model="gemini-3.5-flash-lite", system_instruction=system_prompt),
    tts=murf.TTS(
        voice="Anisha",
        style="Conversation",
        tokenizer=tokenize.basic.SentenceTokenizer(min_sentence_len=2),
        text_pacing=True,
    ),
    turn_detection=MultilingualModel(),
    vad=vad,
    preemptive_generation=True,
)

await session.start(room=ctx.room)
logger.info("Voice Agent started successfully with Murf Falcon!")

if name == "main": cli.run_app(WorkerOptions(entrypoint_fnc=entrypoint))