Vani OS
One AI conversion engine, configured — not rebuilt — for every high‑volume enrollment business.
Vani AI · OpenWorker · a fully self‑hosted voice stack — one outcome‑based platform, already running in production, now generalized past university admissions to test‑prep, coaching, and any lead‑to‑phone‑call conversion floor. What actually changes per industry is the State Machine and the Counsellor Definition Language (CDL) — not a rebuild.
The thesis
The mechanics of “inquiry to enrolled” are the same whether the outcome is a university seat, a JEE batch, or a motorcycle booking. Score the pool, brief the closer, log every touch, chase the SLA.
This isn't a pitch tool with an AI feature bolted on — it's one outcome‑based platform. Vani AI already runs the intelligence loop (scoring, briefing, CRM sync) against automotive dealer‑network accounts today. OpenWorker already runs the background automation. None of that was built for a lecture hall — it was built for anyone who converts inbound interest into a paid outcome by phone.
What's new in this briefing is twofold: a voice channel we own outright end‑to‑end, and the two pieces that actually change per industry — the State Machine that drives the conversation's stages, and the Counsellor Definition Language (CDL) that defines what gets said and when. Swap those two, keep everything else. Sections 01–03 show what already exists and how it generalizes; 04–05 show the owned voice stack and how it ships; 06 closes on the commercial model in its vertical‑agnostic form.
What's already in production
Three components, one working system today — not a roadmap slide. Every row below maps to a file in the working repositories. There's no separate desktop "cockpit" product in this stack — the counsellor‑facing surface (hit lists, pre‑call briefings, live Sales Assist, pipeline stages) lives inside Vani AI itself, driven by the State Machine and CDL, not a standalone app.
| Component | What it does | Evidence |
|---|---|---|
| Vani AI Vibe Prospecting |
Account & lead intelligence, hit‑list scoring, CRM sync, research agents (Vivek, Vigil, Vibe, Vidya) — plus the counsellor‑facing surface itself: contextual pre‑call briefings, live Sales Assist, pipeline stages, the daily floor rhythm. Next.js + Supabase, multi‑org. In active use across two operating entities; account data already spans automotive OEM dealer‑network prospects (Hero MotoCorp, Maruti Suzuki, Royal Enfield) alongside the university‑admissions design. | src/lib/crm-push.ts, src/lib/usage.tsHitListPanel.tsx, PitchAdvisorPanel.tsx,FollowUpIntelPanel.tsx, PipelinePanel.tsx,TheFloorPanel.tsx, CrmApprovalPanel.tsx |
| OpenWorker Volt AI |
Always‑on AI coworker: 25+ tool connectors, approval‑gated writes, scheduled automations. Provider‑agnostic — any model, or fully local via Ollama. | coworker/engine.pycoworker/connectors/ |
| vaniai‑bridge | MCP integration layer wiring OpenWorker into Vani AI's accounts, hit‑lists, signals, and WhatsApp messaging. | mcp-server.js |
Architecture
This is what's actually running, not a reference design for later. The new layer is the voice channel — self‑hosted end to end. Everything else below it is already running; everything above it is a State Machine + CDL config, not a rewrite.
FIG. 1 — DATA & CALL FLOW
One engine, many verticals
Strip the labels off any of these businesses and the pipeline underneath is
identical: five stages, one scoring step, one assignment, one SLA clock. What actually
changes between them is the State Machine (which stage follows which, what triggers
an escalation) and the CDL (what gets said at each stage) — not the engine underneath.
OpenWorker's own personas/ extension point follows the same pattern on the
automation side — the mechanism that lets it act as a solutions engineer today can carry an
“enrollment coworker” persona tomorrow, no change to its core engine.
FIG. 2 — SAME SHAPE, DIFFERENT VOCABULARY
Career Launcher and similar coaching networks run the same franchise/center model as the 20–25 seat BPO floor this platform targets. Market and company figures: Technavio, India test preparation market, Indian Television, test prep market to FY30, Inc42, PhysicsWallah FY25. Figures are third‑party estimates, not internal projections.
Owning the wire
The original design leaned on Torbi.AI and cloud model APIs for the voice channel. That's history now, not a plan — the replacement owns every node in the pipeline — orchestration, hearing, thinking, and speaking — on hardware that sits inside the building, and it's the box actually taking real calls today, not a diagram.
FIG. 3 — CLOUD‑DEPENDENT vs. OWNED
Telephony still runs through Exotel or Plivo — both licensed for Indian PSTN, both publish Pipecat integrations, at roughly ₹0.60/minute outbound. That's the only per‑call cost left in the system; everything behind it is owned.
/api/start-call path, not synthetic. Default
Whisper STT degrades under load — time-to-first-transcription climbs 2.9s→5.6s from
N=1 to N=5. Swapping in Deepgram STT (already a real code path, just needed its
credential wired through) holds ≤1.5s flat across the same range — the fix is a
provider swap, not new hardware.Deployment path
Same containers, three real tiers — the first is live, not a plan.
Lenovo (native Docker, WSL2)
- GTX 1650 Ti, 4GB VRAM — LLM pinned to GPU
- Deepgram STT (not Whisper) — the real fix for §04's load-test finding
- LiveKit self-hosted here too, via Cloudflare Tunnel + TURN‑over‑TLS — no GCP hop
- Real-load-tested to 5 concurrent calls (2026‑09‑05); 2 confirmed in real production use
AGX Orin 64GB — pilot box
- NVIDIA Jetson AGX Orin 64GB Developer Kit — $3,499, 275 TOPS, 204.8 GB/s bandwidth
- Kcube Labs-owned, shipped to a pilot university's site — zero hardware CapEx to them
- 4–8 concurrent calls, reasoned from component benchmarks — not yet load-tested itself
Growth box / hybrid cloud
- RTX 4090‑class tower (~10–12 concurrent) or full LiveKit SFU + cloud STT/LLM/TTS
- Exotel / Plivo trunk for real PSTN traffic either way
- Same Docker images — copy, not rebuild
Commercial model, generalized
The outcome‑fee structure built for university admissions already generalizes without changing its logic — only the label on the outcome event changes.
| Vertical | Baseline metric | Outcome event |
|---|---|---|
| University admissions | Same‑period‑last‑year admits, matched cohort | Enrolled student, above baseline |
| Test‑prep / coaching | Trailing‑term seat bookings | Fee paid, batch seat confirmed |
| Auto dealer network | Trailing‑quarter bookings per showroom | Booking confirmed, above baseline |
Fee is payable only above a baseline locked in writing before the campaign starts, and only for a student, learner, or booking with at least one logged Vani OS touch — audited the same way regardless of vertical.