Most AI voice demos fall over on the first real phone call. We build the telephony layer underneath them — carrier audio, interruption handling, retry semantics and per-call latency you can actually see.
Building an agent that holds a conversation in a browser tab takes an afternoon. Putting it on a real phone number is a different problem: 8kHz μ-law audio, carrier jitter, sockets that drop mid-sentence, and a caller who talks over the agent three seconds in.
We hit this concretely. ElevenLabs' own Twilio endpoint connects the carrier's media stream straight to their ConvAI socket — but Twilio emits {event:"media",media:{payload}} while ConvAI expects {user_audio_chunk}. The mismatch closes the socket with code 1008 on every single call.
So we built the bridge that translates frames in flight, with no buffering, and instrumented every hop. That is the difference between a voice agent that demos and one that answers your phone on a Tuesday afternoon.
We separate the latency we own from the latency we broker. Frame translation and barge-in happen inside our process and are measured in microseconds. Model and speech synthesis time belongs to the upstream provider. Reporting them as one number would flatter us and mislead you.
Answers on the first ring, qualifies, books into a real calendar, and escalates when it should. Replaces the voicemail nobody returns.
Queue-backed dialling with rate limits, business-hours windows and per-contact pacing. Built on BullMQ so a failed call retries instead of vanishing.
The caller interrupts, the agent stops — because interruption flushes the carrier's audio buffer, not just the model's context.
Server-side calls into CRM, availability, booking, SMS and WhatsApp. Idempotent, so a retried turn never double-books.
Per-call latency percentiles, transcripts, tool traces and recordings. When a call goes wrong you can find out why.
English and Arabic in the same agent, switching mid-call on caller preference. Built for UAE and wider GCC deployments.
Humans start perceiving a pause as awkward at roughly 500ms and as a dropped call at around 1.5s. The number that matters is end of the caller's turn to first audio out — not model inference time, which is what most vendors quote. We instrument the full path and report p50, p95 and p99, because the p99 is what your customers remember.
Both, depending on the requirement. ElevenLabs ConvAI gets you to production fastest and its voices are the best available. When you need model choice, on-prem inference, or per-turn cost control, we assemble the pipeline directly — Deepgram or Whisper for ASR, your choice of LLM, Cartesia or ElevenLabs for TTS. The telephony and orchestration layer we build is the same either way.
Interruption handling, almost always. A demo agent talks over people because nobody wired barge-in to flush the carrier's audio buffer. After that: no retry semantics when the socket drops mid-call, no idempotency on tool calls so a booking gets made twice, and no observability, so when a call goes wrong there is no way to find out why.
Do things. Tool calls run server-side against your systems — CRM lookup, availability checks, booking, SMS and WhatsApp follow-up, invoice dispatch, warm transfer to a human. The conversation is the interface; the value is in the actions behind it.
Warm transfer with context. The agent detects the handoff condition, dials the human, and passes the transcript and extracted fields so nobody has to repeat themselves. Escalation rules are explicit configuration, not emergent model behaviour.
A scoped pilot on one call flow, typically four to six weeks to production traffic. You own the code and the provider accounts. From there most clients move to a retainer covering new flows, prompt and latency tuning, and on-call for the telephony layer.
We'll put you on a live call with a working agent, then walk you through the latency trace from that exact conversation.