๐ช๏ธ Building Suraksha Sathi: A Hindi/Hinglish Voice Agent for Responsible Disaster Response
Building a Hindi/Hinglish voice agent designed to provide responsible disaster-response assistance through real-time voice conversations.
What if, during a disaster, someone could simply speak to an AI assistant instead of navigating complicated interfaces?
That question became the starting point for my project, Suraksha Sathi, built during the 10 Days of Voice Agents โ VoiceForBharat Edition challenge.
Over 10 days, I gradually evolved the project from a basic voice conversation into a more complete disaster-response voice system with:
- ๐๏ธ Real-time voice conversations
- ๐ฎ๐ณ Hindi, English, and Hinglish interaction
- ๐ง Persistent user memory
- ๐ง Disaster-response tools
- ๐ Outbound welfare calls
- ๐ค Human escalation
- ๐ Call analytics
- ๐ค Specialist-agent handoffs
- ๐ก๏ธ Safety-focused disaster-response guardrails
This article covers the problem, architecture, challenges, implementation approach, and lessons I learned while building Suraksha Sathi.
๐ช๏ธ Why Disaster Response?
During a disaster, information can be just as important as physical resources.
People may need answers to questions such as:
- What should I do right now?
- What safety precautions should I follow?
- What verified information is available?
- Where can I find shelter information?
- When should I seek human assistance?
- Can someone check on a family member?
In stressful situations, typing through menus or searching through multiple websites may not always be convenient.
Voice provides another interface.
Instead of navigating:
Open website
โ
Search
โ
Read information
โ
Figure out what applies
the interaction becomes:
Speak
โ
Suraksha Sathi understands
โ
Verified information / guidance
โ
Voice response
The goal was not to create an AI that could replace emergency services.
The goal was to create a responsible conversational layer for disaster-response information and assistance.
๐๏ธ Why Voice Matters in Emergencies
Voice can make interaction more immediate.
A user may be:
- Stressed
- In a hurry
- Unable to type comfortably
- More comfortable speaking Hindi or Hinglish
- Looking for a quick explanation
A voice agent can provide a conversational interface without requiring the user to navigate a complex UI.
But disaster response introduces an important constraint:
๐ก๏ธ A voice agent must be especially careful about what it claims.
That became one of the central design principles of Suraksha Sathi.
๐ก๏ธ Safety First: The Most Important Guardrail
Disaster-response AI is not an area where an agent should confidently make things up.
Suraksha Sathi therefore has strict boundaries.
It must never:
- โ Issue an evacuation order
- โ Declare an area safe
- โ Issue an all-clear
- โ Claim that a disaster has ended
- โ Invent emergency alerts
- โ Invent shelter availability
- โ Invent shelter capacity
- โ Claim that someone has been rescued
- โ Claim that emergency responders have been dispatched unless actually confirmed
Instead, the agent should distinguish between:
Verified information
and
General safety guidance.
For example, if current information is unavailable, the agent should say that it cannot verify the information rather than inventing an answer.
This became one of the biggest lessons of the challenge:
In safety-critical systems, knowing what not to say is just as important as knowing what to say.
๐ฎ๐ณ Hindi, English and Hinglish
Disaster-response assistance needs to be accessible to users with different language preferences.
A user might say:
"Flood aa raha hai, mujhe abhi kya precautions lene chahiye?"
Or:
"Mere area ka current alert status kya hai?"
Or:
"What should I do if water level is increasing?"
The system should understand these different conversational styles without forcing users to communicate in one particular language.
The goal was simple:
Let people communicate naturally.
๐๏ธ The Suraksha Sathi Architecture
The project gradually evolved into a multi-component voice-agent system.
At a high level:
โโโโโโโโโโโโโโโโโ
โ User โ
โโโโโโโโโฌโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโ
โ Voice โ
โ Interface โ
โโโโโโโโโฌโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโ
โ Real-Time โ
โ Communication โ
โโโโโโโโโโโโฌโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโ
โ Suraksha Sathi โ
โ Main Agent โ
โโโโโโโโโโโโฌโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโ
โ โ โ
โผ โผ โผ
โโโโโโโโโโ โโโโโโโโโโ โโโโโโโโโโโโโโโโ
โ Memory โ โ Tools โ โ Human โ
โ โ โ โ โ Escalation โ
โโโโโโโโโโ โโโโโฌโโโโโ โโโโโโโโโโโโโโโโ
โ
โผ
Verified / Available
Data
โ
โโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโ
โ Specialist Agent โ
โ ShelterSathi โ
โโโโโโโโโโโฌโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโ
โ Murf Falcon โ
โ Text-to-Speech โ
โโโโโโโโโโโฌโโโโโโโโโโโ
โ
โผ
User
๐ Outbound Call Architecture
For outbound calls, the architecture additionally involves SIP:
Frontend
โ
Outbound Call Request
โ
Backend
โ
LiveKit Room
โ
SIP Trunk
โ
Phone
โ
Suraksha Sathi
This architecture helped me understand that a voice agent is much more than an LLM.
It is a complete system involving communication, reasoning, tools, memory, safety, telephony, and monitoring.
โก Why Murf Falcon?
A voice agent needs to respond quickly enough that the interaction still feels natural.
For this project, I used Murf Falcon as the text-to-speech layer.
The objective wasn't simply to convert text into audio.
It was to make the system feel conversational.
The difference is between:
"The system generated a response."
and:
"The agent is actually talking to me."
For a real-time disaster-response assistant, that conversational experience matters because the user should be able to ask follow-up questions naturally instead of interacting with a static information system.
๐ง Giving Suraksha Sathi Memory
On Day 4, I introduced persistent memory.
Without memory, every interaction starts from zero.
With memory, the agent can retain useful conversational context across interactions.
A simplified structure can look like:
{
"user_id": "user_123",
"name": "Example User",
"language_preference": "Hinglish",
"facts": {
"preferred_language": "Hinglish"
},
"last_interaction": "timestamp"
}
The important principle is that memory should be intentional.
The system shouldn't store everything simply because it can.
It should store information that is actually useful for future interactions and appropriate to retain.
This led to an important design rule:
Memory should improve the conversation without becoming unnecessary data collection.
๐ง Giving the Agent Disaster-Response Tools
A language model alone should not be expected to know current disaster-response information.
That is where tools become important.
The general flow is:
User Question
โ
Suraksha Sathi
โ
Does this require available external information?
โ
Yes
โ
Tool Call
โ
Verified / Available Data
โ
Suraksha Sathi explains the result
Tools can provide structured information that the model should not simply guess.
This is particularly important in disaster response.
If information is unavailable, the system should communicate that limitation rather than hallucinating.
For example:
"I couldn't verify the latest shelter information right now."
is much safer than inventing a shelter location.
๐ Outbound Welfare Calls
Day 6 introduced outbound calling.
Instead of waiting for a user to start a conversation, Suraksha Sathi could proactively initiate a call.
The simplified architecture became:
Outbound Request
โ
Backend
โ
LiveKit
โ
SIP
โ
Phone
โ
Suraksha Sathi
The disaster-response context makes outbound calling particularly interesting.
Possible applications include:
- Welfare checks
- Follow-up calls
- Status checks
- Information reminders
- Proactive assistance
However, outbound calls also require transparency.
The agent should clearly identify itself and explain why it is calling.
It should not pretend to be a human emergency responder.
๐ค Human Escalation
One of the most important capabilities of Suraksha Sathi is knowing when AI is not enough.
Disaster situations can involve circumstances where human assistance is required.
For example:
- A person may need urgent human support.
- A situation may require intervention.
- The AI may not have enough verified information.
- The user may explicitly request human assistance.
In such cases, the system should follow the existing human-escalation workflow rather than pretending to solve the problem.
The key principle is:
AI assistance should complement human response, not pretend to replace it.
The escalation workflow can be represented as:
User needs human help
โ
Suraksha Sathi recognizes the situation
โ
Explains the escalation
โ
Requests permission where required
โ
Creates escalation request
โ
Provides reference information
The system should also avoid passing unnecessary sensitive information.
๐ Measuring the Calls
On Day 8, I introduced call analytics.
Instead of simply saying:
"The agent works."
I wanted to understand what actually happened during calls.
The system tracks outcomes such as:
- Total Calls
- Successful Calls
- Failed Calls
- Success Rate
The data comes from actual call outcomes.
The architecture becomes:
Voice Call
โ
Call Outcome
โ
Database
โ
Analytics
โ
Dashboard
This was an important shift.
I wasn't just building a voice demo anymore.
I was building a system that could be observed and evaluated.
๐ค Introducing ShelterSathi
Day 9 introduced one of the biggest architectural changes.
Suraksha Sathi shouldn't try to become an expert in every possible disaster-response topic.
So I introduced a specialist agent:
๐ ShelterSathi
ShelterSathi is focused specifically on shelter-related information.
The architecture becomes:
Suraksha Sathi
โ
โโโโโโโโโโโดโโโโโโโโโโ
โ โ
Normal Question Shelter Question
โ โ
โผ โผ
Suraksha Sathi ShelterSathi
Normal Question
"Flood ke time ghar mein kya precautions lene chahiye?"
Suraksha Sathi handles it directly.
Specialist Question
"Mere area ke paas available shelter kahan hai aur capacity kitni hai?"
Suraksha Sathi recognizes that the request requires shelter-specific assistance.
It announces the handoff.
ShelterSathi then takes over.
๐ Context-Preserving Specialist Handoff
A specialist handoff is only useful if the user doesn't have to start over.
A bad experience would be:
User:
"Mere area ke paas shelter kahan hai?"
โ
Suraksha Sathi:
"I'll connect you to a specialist."
โ
ShelterSathi:
"Hello. How can I help?"
The user now has to repeat the question.
Instead, the desired flow is:
User:
"Mere area ke paas shelter kahan hai?"
โ
Suraksha Sathi:
"I'll connect you to the Shelter Information Specialist."
โ
ShelterSathi:
"Aapne nearby shelter ke baare mein poocha tha.
Main wahi se continue karta hoon."
The specialist receives the relevant conversation context.
This makes the handoff feel like one continuous conversation rather than two separate chatbots.
๐จ A Critical Disaster-Response Guardrail
One of the strongest safety rules in the project is that the agent must never issue an all-clear or evacuation instruction.
This distinction is extremely important.
The agent can provide:
- General safety guidance
- Verified information
- Available shelter information
- Guidance on seeking appropriate human or official assistance
But it should not independently declare:
"You are safe now."
or:
"You should evacuate immediately."
or:
"The emergency is over."
Those decisions belong to appropriate authorities and verified emergency-response channels.
This limitation is intentional.
A responsible disaster-response agent should inform and assist without pretending to have authority it does not possess.
๐งฉ What Building Suraksha Sathi Taught Me
At the beginning of the challenge, it was easy to think of a voice agent as:
LLM + TTS
After building Suraksha Sathi, the architecture looks much more like:
Voice
+
Real-Time Communication
+
LLM
+
Prompting
+
Tools
+
Memory
+
Safety Guardrails
+
Error Handling
+
Telephony
+
Human Escalation
+
Analytics
+
Specialist Routing
Each layer solves a different problem.
| Component | Purpose |
|---|---|
| ๐ง LLM | Reasoning and conversation |
| ๐ง Tools | External / available information |
| ๐ง Memory | Conversational continuity |
| ๐ Telephony | Reach beyond the browser |
| ๐ Analytics | Measurement and evaluation |
| ๐ค Human escalation | Support beyond AI authority |
| ๐ค Specialist agents | Focused expertise |
| ๐ก๏ธ Guardrails | Safety boundaries |
And that taught me to think much more like a systems engineer.
๐งฏ The Difficult Parts
Building the system wasn't completely smooth.
And those difficulties were some of the most valuable parts of the experience.
1. Outbound Calling
Outbound calling involved several interconnected components:
Frontend
โ
Backend
โ
LiveKit
โ
SIP Trunk
โ
Telephony Client
โ
Agent
A problem anywhere in that chain could affect the final call.
This taught me to debug from the infrastructure layer upward instead of immediately blaming the AI model.
2. Tool Reliability
A tool can fail even when the agent correctly understands the user's request.
That means the agent needs explicit fallback behavior.
Instead of inventing an answer, it should explain that the required information could not be verified.
This is particularly important in disaster response because inaccurate information can have serious consequences.
3. Specialist Context
Creating a second agent is easy compared with making the handoff feel natural.
The specialist needs to understand:
- Why it was called
- What the user asked
- What context is relevant
- What it should do next
Without context transfer, the user has to repeat themselves.
That defeats the purpose of delegation.
๐ ๏ธ How to Build Your Own Voice Agent
If you want to build a similar system, don't start by implementing every feature at once.
Start with the smallest possible voice loop.
1. Understand the Core Architecture
At minimum:
Speech-to-Text
โ
LLM
โ
Text-to-Speech
โ
Real-Time Audio Transport
Once this works, add:
Memory
Tools
Guardrails
Telephony
Human Escalation
Analytics
Specialist Agents
Build incrementally.
This makes debugging much easier.
2. Create the Project Structure
A simple structure can look like:
disaster-response-agent/
โ
โโโ backend/
โ โโโ src/
โ โโโ agent.py
โ โโโ prompt.py
โ โโโ tools/
โ โโโ database/
โ โโโ outbound_call.py
โ
โโโ frontend/
โ โโโ app/
โ โโโ components/
โ
โโโ .env.local
โโโ .gitignore
โโโ README.md
Keep the agent logic separate from the frontend.
This makes the project easier to maintain and extend.
๐ 3. Protect API Keys and Private Data
Never hardcode credentials inside your application.
Use environment variables:
MURF_API_KEY=your_murf_api_key
LIVEKIT_API_KEY=your_livekit_api_key
LIVEKIT_API_SECRET=your_livekit_api_secret
Add environment files to .gitignore:
.env
.env.local
.env.*.local
Commit only a safe example:
MURF_API_KEY=your_api_key_here
LIVEKIT_API_KEY=your_api_key_here
LIVEKIT_API_SECRET=your_api_secret_here
Never publish:
- ๐ API keys
- ๐ SIP credentials
- ๐ Phone numbers
- ๐ค User information
- ๐ Private call data
- ๐๏ธ Database credentials
4. Get the Basic Voice Loop Working
Before adding advanced features:
- Start the backend.
- Start the frontend.
- Connect the real-time communication layer.
- Open the voice interface.
- Grant microphone permission.
- Speak to the agent.
- Verify speech recognition.
- Verify that the agent responds with audio.
The first milestone should simply be:
Speak โ Understand โ Respond
Only move forward once that works reliably.
5. Add Memory
Once the basic voice interaction works, add persistent memory.
Store only information that genuinely improves future conversations.
Do not treat memory as permission to collect everything.
A good rule is:
Store useful context, not unnecessary personal data.
6. Add Disaster-Response Tools
Tools should be used when the agent needs information that must be retrieved or verified.
For example:
User asks for information
โ
Agent determines that verification is required
โ
Tool call
โ
Available / verified information
โ
Agent explains result
If the tool fails:
Don't guess.
Tell the user that the information could not currently be verified.
7. Add Disaster-Response Guardrails
Before adding advanced capabilities, define the agent's boundaries.
The Agent CAN:
- Provide general safety guidance
- Explain verified information
- Use available disaster-response tools
- Provide available shelter information
- Ask clarifying questions
- Escalate to humans
The Agent CANNOT:
- โ Issue an evacuation order
- โ Issue an all-clear
- โ Declare an area safe
- โ Invent alerts
- โ Invent shelter information
- โ Claim rescue has occurred
- โ Pretend to be an emergency authority
These boundaries should be part of the architecture from the beginning.
8. Add Outbound Calling
Once browser-based conversations work, add telephony.
A simplified architecture is:
Phone
โ
SIP
โ
Real-Time Communication
โ
Voice Agent
โ
TTS
โ
Phone
Start with a test number you control.
First verify:
Call โ Answer โ Agent speaks โ Conversation โ End
Only then add more complicated outbound workflows.
9. Add Human Escalation
Teach the agent when it should stop trying to solve the problem itself.
Human escalation can be appropriate when:
- The user needs human assistance
- The situation requires intervention
- The AI lacks sufficient verified information
- The user explicitly requests human support
The key principle is:
The AI should complement human emergency response, not pretend to replace it.
10. Add Specialist Agents
Once the main agent works, create focused specialists.
For a disaster-response system, examples could include:
Main Agent
โ
โโโโโโโโโโโโโโโผโโโโโโโโโโโโโโ
โ โ โ
โผ โผ โผ
Shelter Information Support
Specialist Specialist Specialist
Each specialist should have:
- A focused role
- Separate instructions
- Clear boundaries
- A defined handoff trigger
The main agent should only delegate when specialist expertise is genuinely required.
11. Add Analytics
Finally, measure what happens.
For example:
Total Calls
Successful Calls
Failed Calls
Success Rate
Use real call events:
Call
โ
Outcome
โ
Database
โ
Analytics Dashboard
This turns the project from a demonstration into a measurable system.
๐ฎ What's Next for Suraksha Sathi?
The challenge may be complete, but the project can continue evolving.
Some possible future directions include:
- ๐ช๏ธ More disaster types
- ๐ฎ๐ณ Better multilingual support
- ๐ More verified data sources
- ๐ Stronger shelter-information workflows
- ๐ค Improved human escalation
- ๐จ Better real-time alerts integration
- ๐งช More robust evaluation
- ๐ Better observability
- ๐ Stronger privacy controls
- ๐ Production deployment
- ๐ค More specialized disaster-response agents
The goal isn't to make Suraksha Sathi replace emergency services.
The goal is to make it a useful, accessible, and responsible conversational layer for disaster-response assistance.
๐ What I Learned
1. Voice Is More Than Speech
Latency, turn-taking, interruptions, pronunciation, and conversational flow all matter.
2. Safety Is More Important Than Confidence
In disaster response, an uncertain but honest answer is better than a confident false one.
3. Tools Reduce Guessing
If information needs verification, the agent should use available tools rather than inventing information.
4. Memory Needs Boundaries
Remembering useful context can improve conversations, but unnecessary data collection should be avoided.
5. Human Escalation Is a Strength
An AI agent asking for human help is not necessarily failing.
Sometimes that is exactly the correct behavior.
6. Specialist Agents Make Systems More Focused
Instead of making one agent responsible for everything, specialized agents can handle narrower tasks.
7. AI Engineering Is Systems Engineering
The hardest part isn't just making the model respond.
It is connecting:
Voice
+
LLM
+
Tools
+
Memory
+
Safety
+
Telephony
+
Human Support
+
Analytics
+
Specialist Agents
into one reliable system.
๐ Final Thoughts
Ten days ago, this project started as an idea for a disaster-response voice agent.
Today, Suraksha Sathi has evolved into a much broader voice-agent system.
It can:
- ๐๏ธ Hold real-time voice conversations
- ๐ฎ๐ณ Support Hindi, English, and Hinglish
- ๐ง Remember useful user context
- ๐ง Use disaster-response tools
- ๐ Make outbound welfare calls
- ๐ค Escalate to human support
- ๐ Track call outcomes
- ๐ค Hand shelter-related requests to a specialist agent
- ๐ก๏ธ Follow strict disaster-response safety boundaries
But the biggest lesson isn't the number of features.
It is understanding that responsible AI is also about knowing what the system should never claim to know or do.
Suraksha Sathi should provide assistance.
It should provide verified information when available.
It should clearly communicate uncertainty.
It should escalate when human intervention is needed.
And most importantly, it should never pretend to have emergency authority that it does not have.
In disaster response, being helpful isn't about sounding confident. It's about being accurate, responsible, and honest about your limits.
๐ฎ๐ณ 10 Days of Voice Agents โ VoiceForBharat Edition
This challenge gave me the opportunity to explore voice AI beyond a basic conversational demo.
Across 10 days, I worked through voice interaction, memory, tools, outbound calling, human escalation, analytics, and specialist-agent handoffs.
Each day added another layer to the system.
More importantly, each layer introduced another engineering and safety consideration.
The experience pushed me to think not only about how an AI agent talks, but also about:
- How it uses information
- How it handles uncertainty
- How it remembers users
- How it communicates limitations
- How it interacts with humans
- How it delegates work
- How its performance can be measured
A huge thanks to the organizers and Murf AI for creating the 10 Days of Voice Agents โ VoiceForBharat Edition challenge.
This challenge was a great opportunity to learn by building, testing, debugging, and iterating.
The 10 days may be over.
The project doesn't have to be. ๐
๐ Thanks for Reading!
If you're building voice agents or working on AI for emergency-response use cases, I'd love to hear what you're building.
Feel free to share your project or experience in the comments.
Let's build AI systems that are not only capable, but also responsible and useful for Bharat. ๐ฎ๐ณ๐๏ธ
#VoiceForBharat #10DaysOfVoiceAgents #VoiceAI #AI #DisasterResponse #AgenticAI #GenerativeAI #MurfAI #LiveKit
๐ป GitHub Repository
[https://github.com/arhamsajid2812-cell/Sonix-AI/tree/day10]
๐ฅ Demo Video


Top comments (0)