Skip to content
← All work

AI voice receptionist for Indian businesses

Jawably

An AI receptionist that answers business calls in Hindi, English and Hinglish, books appointments into Google Calendar and confirms on WhatsApp, with sub-second latency.

My role: Design and full-stack development: voice agent, telephony, dashboard, billing and deployment

Visit jawably.in ↗
  • Voice AI
  • LiveKit
  • Sarvam AI
  • Gemini 2.5 Flash
  • Nuxt 4
Screenshot of Jawably, ai voice receptionist for indian businesses, built by Anshuman Verma

Overview

Jawably (जवाब्ली) is a voice AI SaaS that stops Indian small businesses such as clinics, salons, diagnostic labs and professional services from losing customers to missed calls. It picks up within seconds, talks in short natural turns in Hindi, English or code-mixed Hinglish, checks live availability, answers from verified business knowledge, confirms bookings by repeating them back, and hands over to a person or sends a WhatsApp confirmation when needed.

The challenge

Small Indian businesses lose customers every day to unanswered calls: the receptionist is busy, the clinic is closed, or the owner is with a client. Callers rarely leave voicemails; they call the next clinic or salon instead.

An AI receptionist only works here if it sounds natural in the way people actually speak, which is often a mix of Hindi and English, responds fast enough to feel like a conversation, lets callers interrupt, and books appointments correctly from phrases like “parso dopahar 3 baje”.

How it works

  1. 1Customer calls
  2. 2Plivo SIP → LiveKit
  3. 3Sarvam STT
  4. 4Gemini 2.5 Flash
  5. 5Sarvam TTS reply
  6. 6Booking + WhatsApp

Architecture

Calls arrive through Plivo SIP trunking into LiveKit, where a LiveKit Agents worker written in Python 3.12 runs in the Mumbai (ap-south) region. The agent reads the caller and trunk numbers from SIP attributes, forwards DTMF tones, and can warm-transfer to a person or take a message if no one is available.

Inside the agent, Silero VAD and LiveKit's turn detector decide when the caller has finished or is interrupting. Speech goes to Sarvam AI's saaras:v4 for transcription, Gemini 2.5 Flash (with gpt-4o-mini as fallback) reasons over Jinja2 prompts and the business's verified knowledge, and Sarvam's bulbul:v3 speaks the reply. Responses are kept to one or two sentences, with round trips under 1.2 s and barge-in under 300 ms.

Bookings go through a custom Indic date parser and an atomic slot-validation engine that syncs both ways with Google Calendar. After the call, Twilio sends confirmations on WhatsApp with SMS fallback. Business owners use a Nuxt 4 dashboard on Nitro and PostgreSQL with Drizzle for multi-tenant onboarding, diarized transcripts with waveform playback, sentiment tags, p50/p95 latency charts for STT, LLM and TTS, appointment calendars and Razorpay metered subscriptions. Agent-to-backend requests are signed with HMAC-SHA256.

What I built

Real-time Indic voice pipeline

Sarvam AI saaras:v4 speech-to-text and bulbul:v3 text-to-speech with Gemini 2.5 Flash on LiveKit Agents, hosted in Mumbai (ap-south) for under 1.2 s round trips and under 300 ms barge-in with Silero VAD.

Hindi, English and Hinglish

Handles code-mixed requests like “Kal 5 baje Dr. Sharma ke paas root canal ka slot milega kya?” with automatic language switching and natural Indian pronunciation.

Indic date parsing and booking

A custom parser for phrases like “kal subah”, “parso dopahar 3 baje” and “next Monday”, plus atomic slot validation synced both ways with Google Calendar.

Phone calls via SIP

Plivo SIP inbound trunking with LiveKit SIP attributes for caller and trunk numbers, DTMF forwarding, warm human transfer and fallback message taking.

WhatsApp and SMS confirmations

Twilio post-call workflows send booking confirmations, addresses with Google Maps links and notes on WhatsApp, with SMS as a fallback.

Owner dashboard and browser demo

A Nuxt 4 portal with diarized transcripts, waveform playback, sentiment tags, p50/p95 STT, LLM and TTS latency charts and Razorpay metered billing, plus a full-duplex WebRTC demo in the browser.

Engineering decisions

  • Host the voice pipeline in Mumbai so Indian callers get sub-second responses and natural interruptions.
  • Use Indic speech models (Sarvam) instead of English-first ones, so Hindi and Hinglish sound and transcribe naturally.
  • Parse Indian date and time phrases in code and validate slots atomically, rather than trusting the model with scheduling.
  • Sign agent-to-backend calls with HMAC-SHA256 so the voice agent and dashboard trust only each other.

Results

  • Live at jawably.in with a browser voice demo.
  • Under 1.2 s response latency and under 300 ms barge-in, hosted in Mumbai.
  • Natural conversations in Hindi, English and Hinglish, with automatic switching.
  • 41/41 unit and conversational evaluation tests passing, with mypy strict typing.

Stack

Voice
LiveKit Agents 1.8.5 (Python 3.12), LiveKit Cloud (Mumbai), LiveKit Client JS
Speech AI
Sarvam AI (saaras:v4 STT, bulbul:v3 TTS), Silero VAD, LiveKit turn detector, noise cancellation
LLM
Gemini 2.5 Flash, gpt-4o-mini fallback, Jinja2 prompts
Web
Nuxt 4 (Vue 3, TypeScript strict), Tailwind CSS v4, Nitro on Vercel
Telephony & data
Plivo SIP, Twilio WhatsApp & SMS, PostgreSQL (Supabase/Neon), Drizzle ORM
Integrations & QA
Google Calendar API, Razorpay subscriptions, Pytest (41/41), mypy strict, Ruff, Docker

Related services

Need something like this?

I can build a version of this for your product, your data and your stack.

Start a project