Inspiration
There is a small clinic in Vadodara. I watched the receptionist miss calls constantly, not because she was lazy, but because she was already handling someone at the counter. Those callers just... left. Called someone else. The clinic never knew. That bothered me more than any textbook problem ever did.
Small businesses in Gujarat run on relationships and appointments. The phone is how those relationships start. If nobody picks up, the relationship never happens.
What it does
Awaaz answers inbound calls for small businesses, books appointments, and talks to callers in Hindi, English, or Gujarati. Not through a menu system, an actual conversation. It checks the business owner's Google Calendar for availability, books the slot, and sends the customer a WhatsApp confirmation. Everything gets logged so the owner can see every call, transcript, and booking from a dashboard.
How we built it
The core pipeline is: Twilio receives the call, Sarvam AI converts speech to text (it handles Indian languages properly, not as an afterthought), Groq runs the LLM inference fast enough that the pause does not feel weird on a phone call, Sarvam converts the response back to speech, and Twilio plays it to the caller. Google Calendar handles availability and booking. WhatsApp confirmation goes out through Twilio.
Frontend is React and TypeScript on Vercel. The telephony server is Express on Render, kept alive with a GitHub Actions cron job that pings the health endpoint every 5 minutes because Render's free tier spins down otherwise.
We kept everything on infrastructure APIs rather than voice AI wrapper platforms because we wanted actual control over the pipeline, especially latency, which matters a lot in voice.
Challenges we ran into
Latency was the main one. A 3-second pause in a chat app is fine. On a phone call, it sounds like the line dropped. Every part of the pipeline had to be fast, and getting that right on a free-tier setup took more work than expected.
The other challenge was language. People in Gujarat do not speak clean Hindi or clean Gujarati. They mix them, sometimes mid-sentence. Getting the STT layer to handle that without breaking took real tuning.
Another big problem that we faced was exhaustion of the API tokens immediately after a few calls (because we are on a free tier)
Accomplishments that we're proud of
Getting a real phone call to flow through the entire pipeline and come out the other end as a booked appointment in CRM. That moment worked and it genuinely felt like the thing was real.
Also the design. We wanted Awaaz to feel like it was built for this market, not just translated for it. The Mughal jaali motif and the color choices were intentional. It is a product for Indian small businesses and it should look like one.
What we learned
Serverless does not work for this. You cannot hold a multi-turn voice conversation across functions that spin down between calls. We confirmed this the hard way and it is now a core architectural principle.
We also learned that the product pitch to a business owner is not about AI. It is about not losing customers. When we framed it that way, the conversation changed completely.
What's next for Awaaz
Getting it in front of actual businesses in Vadodara. We want to run 3 to 5 real pilots with dental clinics or salons, get real call volume through the system, and see where it breaks. That feedback matters more right now than any new feature.
After that, the quality of the Gujarati language is the priority. The model handles it but there is room to make it feel more natural and less like it is trying.
Built With
- express.js
- gemini
- github
- groq
- node.js
- react
- render
- sarvamai
- supabase
- tailwind
- telephony
- twilio
- typescript
- vercel
- vite
Log in or sign up for Devpost to join the conversation.