Anas Aqeel
← All work
CASE STUDY · CALLTURA

AI voice agents that handle real phone calls.

Calltura is my own product: AI agents that answer, qualify, and route inbound calls for businesses. The interesting part isn't that they talk. It's that they keep working when the phones don't stop.

ROLE
Founder & engineer
DOMAIN
Real-time AI voice
FOCUS
Reliability & latency
STATUS
Live
AI voice agents that handle real phone calls. hero

UK sole-trader plumbers, heating engineers, and cosmetic clinics run their businesses off the phone. When a boiler dies at 8pm on a Tuesday, the customer dials the first number, and if nobody picks up they dial the second. Voicemail loses the job. Calltura picks up on the first ring, sounds British, books straight into the calendar, and stays up when the phones do not stop.

01
THE PROBLEM

Silence is the failure

On a live phone call there is no spinner to hide behind. No "processing..." message. Every gap the caller hears is either a bad connection or a broken system, and they cannot tell the difference. A caller who thinks the line is dead hangs up. A caller who hangs up is a lost job for the operator paying for the receptionist.

The operator is a sole trader. The gas engineer who covers three postcodes. The clinic manager who books two dozen consultations a week. They cannot answer during appointments and they cannot afford a human receptionist. Off-the-shelf voicemail bots do not book. Off-the-shelf voice agents sound American, hallucinate emergency triage, or freeze for four seconds when the LLM stalls. None of them survive a real Tuesday.

What the operator needs is simple to describe and hard to build. A voice that sounds like the receptionist they wish they had. Answers on the first ring. Books straight into their calendar. Warm-transfers a gas-leak call to their mobile. Never hangs on the caller, never sounds robotic, never books over an existing appointment.

02
THE BUILD

Sub-second, or the call breaks

An inbound call hits Telnyx over SIP. Audio streams into a LiveKit room. Three services run in a coordinated loop behind a single agent process: streaming STT that fires partial transcripts before the caller finishes talking, an LLM (Anthropic Claude) with a per-tenant system prompt and access to the operator's calendar and business rules, and streaming TTS that plays audio back into the room while the LLM is still generating.

The whole loop targets sub-second turn latency. Above one second the call starts to feel like a bad video call. Above two seconds the caller talks over the agent because they think it did not hear them. Every stage has an independent budget: 150ms for STT end-of-utterance, 400ms for LLM first-token, 150ms for TTS first-audio, plus network jitter and headroom. When any stage exceeds its budget, the trace flags the specific stage. Reliability work is targeted, not guessed.

Interruption is the tell. A real receptionist stops talking mid-word when the caller starts. Calltura does the same: when STT detects caller voice while TTS is speaking, TTS cancels, the current LLM generation aborts, pipeline state resets, and the new caller utterance runs as a fresh turn. Handled naively, the agent processes both the original sentence and the interrupt and replies twice. Handled correctly, the caller does not clock it as software.

For heating and gas engineers, some calls are real emergencies. The agent asks two specific questions early ("Do you smell gas?", "Is there active flooding?") and warm-transfers to the on-call mobile if either answer is yes. Every other call gets booked straight into Cal.com, Google Calendar, or the operator's existing scheduler, with the slot confirmed to the caller in the same turn. No callback needed.

03
THE OUTCOME

What the operator gets

Calltura is live and handling real inbound calls for UK small businesses. Every call gets picked up on the first ring. Every call has a full transcript, an audio recording, a duration, an outcome (booked, transferred, message taken, callback requested), and a real cost figure per call in the operator's dashboard. Search by phone number, date range, or outcome. Click any call and see which prompts fired, which tools were called, what the model returned, and how long each stage took.

The whole business runs off the phone. When the phone answers, the business runs. When it does not, the business does not.

Nothing about a call is a black box. If a booking landed on the wrong day, the operator replays the transcript and audits the model's reasoning. If a call felt slow, the trace shows which stage blew its budget. Every operator's agent is configured through the dashboard, not through code: greeting, hours, services, pricing, emergency triage rules. Business logic changes are one dashboard entry, not a redeploy.

The tenant boundary is at the database. Supabase row-level security means one operator cannot see another operator's call transcripts, no matter how the query is crafted. The isolation is not a UI convention. It is a schema-level guarantee. Cost per call, drift on the British TTS voice, and every retry against every provider are all tracked continuously. The unit economics are a known number, not a hope.

The demo was the easy part.

Anas

calls handled: metric pendinguptime: metric pendingavg response: metric pending