Hajik Renaa
← All work

Case 01Voice AILive

Zillion Connects

An AI calling platform that phones candidates in eleven Indian languages

A multi-tenant SaaS that runs outbound AI phone campaigns. The agent speaks natural Tanglish or Hinglish, answers from a knowledge base, books callbacks, and has the call report written before the next number dials.

Client
Zillion Connects
Role
Engineering lead: voice pipeline, platform, infrastructure
Year
2026
Stack
FastAPI, OpenAI Realtime, Gemini Live, Vobiz
Zillion Connects: product screenshot

01The numbers

300–500 msreply latency on a live phone line
11Indian languages, including code-mixed speech
−36%cost per minute after the model switch
138API routes, with 60 test files behind them

02The problem

Zillion Connects screens and follows up with large candidate lists by phone. Human callers were the bottleneck, and the people on the other end speak Tamil, Hindi or a mix of either with English, often in the same sentence.

Off-the-shelf voice bots failed in two ways. They sounded robotic in Indian languages, and they took two to three seconds to reply. On a phone line that gap means people talk over the bot or hang up.

03What I built

The first version was a pilot on Twilio: speech-to-text, then GPT-4o, then ElevenLabs. It worked, but every hop added latency. I rebuilt the voice path around speech-to-speech models (OpenAI Realtime and Gemini Live) and bridged the Vobiz telephony stream straight to them over WebSocket, with no audio transcoding in between.

The platform sits around that. Companies create agents, scripts and knowledge bases, run multi-day campaigns, and watch transcripts arrive live. During a call the model can search the knowledge base, mark a lead as interested, schedule a callback or end the call. After it, a worker writes the summary, scores the conversation and pulls out the answers question by question.

When the client moved off AWS I ran the migration as a scripted runbook: checksummed backups, a restore test, a freeze window, and a data comparison that had to match before cutover. Schedulers stayed off on the new server until go-live so no one got called twice.

04Architecture

system sketch
PHONE CALLPSTN · outboundVOBIZμ-law · WebSocketFASTAPI BRIDGEbarge-in · VADREALTIME MODELOpenAI · GeminiTOOL CALLSKB · lead · recallLIVE CONSOLERedis → WSPOST-CALLsummary · scorePHONE CALLPSTN · outboundVOBIZμ-law · WebSocketFASTAPI BRIDGEbarge-in · VADREALTIME MODELOpenAI · GeminiTOOL CALLSKB · lead · recallLIVE CONSOLERedis → WSPOST-CALLsummary · score

05Engineering notes

  • Barge-in that understands backchannels. ‘Seri’, ‘aama’ and ‘ok’ don't stop the agent; a real interruption does, and it waits for its own audio to finish before hanging up.
  • Prewarmed model sockets and a 160 ms greeting prebuffer, so the first word lands the moment the call connects.
  • Voicemail detection (leave a message or drop), Do-Not-Call gating, and automatic purge of recordings after 60 days.
  • Per-call cost metering. Super-admins decide which models and voices each account can use.
  • Worker concurrency went from 1 to 4 only after measuring 137 samples of dead time between calls (median 1.35 s, p90 2.8 s).
  • Pilot measurements: 266 ms to first audio in English, 579 ms in Tamil. Moving to the realtime-mini model cut cost per minute by 36%.

06Stack

FastAPIOpenAI RealtimeGemini LiveVobizElevenLabsSarvam AIPostgreSQLRedisCeleryReactDockerCaddy

Need something like this? Let’s talk about your version.

Book a free call ↗