A deterministic execution layer for enterprise voice AI. Graph-based routing, contract-enforced state, and hybrid TTS caching make voice automation predictable, testable, and economical at scale — without giving up what LLMs are actually good at.
Not hypothetical — observed firsthand building and operating voicebots for regulated enterprise customers.
Every response generated by an LLM at runtime — no caching, no pre-computation.
The same utterance can produce different responses on different calls — unacceptable in regulated industries.
A prompt change for one flow can silently alter behavior in another — a butterfly effect, not modular.
No way to turn "does the model do the right thing" into a systematic regression suite.
Generic TTS mispronounces exactly what an enterprise cares about — its own brand and product names.
Runtime generation via a single LLM provider makes cost grow linearly with volume, with no way to optimize.
The LLM is invoked once per turn to classify intent. A statically-validated graph — not the model — decides what happens next.
The LLM answers one question per turn — "what did the customer mean?" — and returns a named intent. The graph, not the model, decides what happens next. Given a sequence of intents, the output is completely predictable.
Every node declares what it requires, what it produces, and its success condition. A pure-Python static validator checks every graph before it can be saved — a structurally defective graph simply cannot exist.
Most of what a bot says is identical across calls. Static segments are pre-synthesized at startup; only customer-specific tokens are synthesized live. Measured: ~600ms → ~150ms per utterance.
LLM, STT, TTS, and telephony each sit behind a configurable interface. A live Model Settings console lets an operator switch providers for a running deployment with zero code changes and zero restart.
Conversation flows are data, not code. Compliance teams can review the graph itself — not a black-box prompt — for certification.
| Capability | Status |
|---|---|
| Audio in → audio out (full pipeline) | ✔ Working end to end |
| Bank collections reference bot (15+ intents) | ✔ All paths exercised |
| Hybrid TTS cache | ✔ ~75% latency reduction, measured |
| Dual-LLM failover (Mistral → Nemotron) | ✔ Automatic on primary failure |
| Twilio WebSocket telephony transport | ✔ End-to-end phone call completed |
| Barge-in detection | ✔ Silero VAD stops TTS mid-playback |
| Automatic call quality scoring (Auto QA) | ✔ Runs on every completed call |
| Live provider hot-swap (STT/LLM/TTS) | ✔ From Studio, no restart |
| PostgreSQL live call store | ✔ Calls, turns, slots, QA, analytics |
Founder & Engineer, Vaartalaap
Built while working on an enterprise voicebot in a regulated industry — an entirely LLM-driven stack that worked in demos and failed in production in ways that were extremely difficult to debug or audit. Vaartalaap is the architectural answer: a deterministic graph engine, contract-enforced state, and static validation, designed and built solo, self-funded, with no external capital raised to date.
shubham.subodh@gmail.com · Source code available under NDA on request