Aurra Case study
An AI voice agent that calls leads and qualifies them
A voice AI platform we designed and built for a client, who runs it as a product for their own customers. It calls a list, holds a real conversation in Tamil, Hindi or English, qualifies the person and books the callback. It has placed 192,493 calls in production and answers in about two seconds.
- Our role
- Design, build, operate
- Languages
- Tamil, Hindi, English
- Sectors
- Property, education, motor
- Status
- Live and iterating

One real call, as the platform recorded it. Names, numbers and brands are replaced; the latency, token and timing figures are not.
192,493
calls placed in production
456
hours of live conversation
1.9s
median response time
$204
cloud cost, busiest month
The agent
It holds a conversation
The agent listens and answers from a knowledge base the account supplies. It handles being interrupted, and has to reply in about two seconds; past three, people say “hello?” and hang up. It decides whether someone is interested, books a callback, and hangs up politely.
It can open a call in English and carry on in Tamil the moment the person answers in Tamil.
Mixing is the harder half. The transcript beside this is Tamil grammar carrying English nouns inside one sentence. That is how people speak in Chennai.
வணக்கம் Arjun சார், நான் Preethi, Northline Homes-ல இருந்து பேசுறேன். நீங்க Facebook-ல எங்க property ad பார்த்து enquire பண்ணிருந்தீங்க, அதைப்பத்தி ஒரு நிமிஷம் பேசலாமா?
spoke 9.2s · 5,357 tokens in / 45 out
ஓகே.
நன்றி Arjun. உங்க வயது என்னன்னு தெரிஞ்சுக்கலாமா?
replied in 1,861ms · model first byte 892ms · spoke 2.7s
29.
ஓகே Arjun. இப்போ நீங்க எங்க இருக்கீங்க? எந்த ஊர்ல இருக்கீங்கன்னு சொல்ல முடியுமா?
replied in 2,285ms · model first byte 964ms · spoke 4.2s
The flow
From lead to result
No account’s business logic lives in the code. Their script, knowledge, voice and calling policy are settings. They are edited in the dashboard and live on the next call.
The call starts
Outbound from a list, or inbound to the account’s own number.
The dialer decides
Calling window, legal hours, retries, concurrency, budget.
The agent talks
Interruptions, language switches, and the questions the account needs answered.
The call is classified
Interested, callback, appointment, or not.
The result goes back
Transcript, recording and metrics into the account’s systems, and a WhatsApp follow-up where they use one.
Control plane and voice plane
Two parts. The control plane decides who to call, when and with what. The voice plane runs one conversation and knows nothing about the others.
Control plane · stateful, on Kubernetes
- Campaigns
- Leads
- Dial queue
- Auto-dialer
- Calling windows
- Prompts and personas
- Credits and billing
- Carrier integrations
- Script compiler
- Safety validator
- Outcome classifier
- Webhook delivery
- Audit log
Exactly two HTTP calls per conversation
Config at call start, completion report at the end. Everything else between them is audio.
Voice plane · Python, one Pipecat pipeline per call
Carrier audio
wss, 8 kHz
STT
speech to text
LLM
the model
TTS
speech synthesis
Carrier audio
back to the caller
Swappable per call 3 speech-to-text, 4 model and 9 speech vendors, plus 3 carriers.
Observers session timeline, per-turn latency, frame trace.
Inside the platform
A record of every call
Every call produces a full record on its own. Nothing has to be switched on first.

Per-call diagnostics
A full record of every call
A speaking timeline, and the response time for every turn. Time to first byte is split out for speech recognition, the model and speech synthesis. Token counts, the recording and the transcript sit alongside. When a call goes badly there is a cause to point at.

Outbound calls
Every call recorded, transcribed and classified
Filter by campaign, lead, outcome or duration. The recording plays in the row, and each call links through to its full session log.

Prompts
Changing what the agent says
Each persona is a versioned prompt, with a diff and a rollback. A change applies on the next call. Adding an account is a database row.
More of the platform

Dashboard

Campaign creation

Inbound calls

Audit log
In production
456 hours of live conversation
No human placed any of these calls. On the busiest day the platform made 6,100 of them, starting 32 inside a single minute.
It produced 2,981 qualified conversations: interested prospects, booked callbacks, fixed appointments and requests for information.
Outcomes across 192,493 calls
- No answer
- 109,162
- 56.7%
- Connected
- 67,615
- 35.1%
- Missed callback captured
- 10,565
- 5.5%
- Failed
- 5,128
- 2.7%
- Busy
- 23
- 0.0%
Clients
Businesses running it in production
None of them needed a code change. An account is a prompt, a knowledge base, a voice and a set of providers.

Hindustan College of Arts & Science
Admissions enquiries
Haritham Group
Property enquiries
Circuits99
Used luxury car enquiries

Dhilli Builders
Property enquiries
Need something like this built?
Tell us what the system has to do and what it has to connect to. Thirty minutes is usually enough to say what we would build first and roughly what it would cost.