From a ringing phone to a signed receipt.
What happens between the caller's first word and the booking, and what stays on record afterwards.
The call path, stage by stage.
Audio comes in at 8 kHz, Prisma turns it into text, the turn manager decides what happens next, the model answers from the business's documents and checks its schedule, and Timbre speaks the reply back down the same line.
- Built
Caller on a Vobiz line
8 kHz audio over a WebSocket
- Inbound call, or Vakya calls out
- A missed call triggers a call back (tested with fakes, not yet on a live number)
- A browser web call joins here too
- Being wired
Gnani Prisma v3
wss://api.vachana.ai/stt/v3/stream
- format=codemix, so English stays Latin
- keyterms from the business's documents
- REST per utterance on the phone today; the socket is being wired in
- Built
Turn manager
- Barge-in: the caller can talk over the agent
- Waits longer after the agent asks for a number or date
- Read-back, then commit only on a spoken yes
- Slot memory for this call, caller memory across calls
- Built
Language model with tools
a hosted language model
- Answers from the business's documents (hosted embeddings, keyword search as backup)
- Tools: check a time, list free times, book, cancel, knowledge search, end call
- Syncs to Google Calendar when connected
- Integrated, not live-tested
Gnani Timbre
POST /api/v1/tts/inference
- Raw 8 kHz audio straight to the line
- Cloned voices use vachana-vc-v1 embeddings
- Indian numbers and dates spoken naturally
Side rail
Consent, label, receipt
Around every clip Vakya speaks: a consent tick before any voice is cloned, an AI label with a C2PA content manifest, and a signed Ed25519 receipt that anyone can check at /verify with no login.
Side rail
Live monitor and takeover
Beside the turn manager: a staff member sees the live transcript, and can take the call over. The agent can ask for a person but never picks the number it transfers to.
Prisma and Timbre have run against the live API since 5 Nov 2026, and the noise report card is measured on Prisma v3. Voice cloning, the realtime stream and a real phone call have not run live yet.The model that writes replies is not Gnani's: it is a hosted language model, set in backend/.env. There is no second speech model: when Gnani is busy or down, the caller hears a short pre-rendered Timbre line and is offered a callback.
Rules that make a phone call work.
- It starts early
- A reply begins to form after 250 ms of silence, but its audio waits for the full pause (500 ms by default), so the caller is not cut off.
- It waits for digits
- After asking for a phone number or a date, it waits 1.1 s before deciding the caller is done, and longer when the answer ends in "and" or holds only part of a number.
- It reads back, then commits
- A booking tool first answers "not done" with the resolved day, date and time. The agent reads them aloud and runs the tool only after a yes.
- It remembers
- What the caller said (name, number, day, time) stays in a small form for the whole call. A returning caller is greeted from their profile.