Case study

KOTA

Conversation as infrastructure.

Turns restaurant phone calls into structured, actionable orders without requiring the restaurant to replace or deeply integrate its POS.

Built for environments where missed calls mean lost revenue, and speed matters more than perfect inputs. This page documents how the system works, and where it does not.

Voice Agent · LLM Orchestration · Menu Intelligence · Real-time Streaming · Order Sync

Messy speech becomes a menu-verified ticket with confidence checks.

Customer says

“uh yeah can I get like two orange chickens and... wait do you guys have chow mein?”
hesitationfiller wordsmenu ambiguitymid-sentence correction

Structured result

itemOrange Chicken ×2
itemChow Mein ×1 (confirmed)
confidencehigh
missing infonone

Restaurants miss calls during peak hours.

Lost orders. Lost revenue. No record of what was missed.

Staff are forced to choose between phone and counter.

Inconsistent handling. Customers repeat themselves. Errors compound.

Existing solutions require POS lock-in or workflow rewrites.

Adoption fails because the cure is more invasive than the disease.

The design had to fit into a working kitchen without asking it to change. Every constraint below is a line the system does not cross.

No POS replacementStructured tickets reach the kitchen workflow directly, without replacing or deeply integrating the point-of-sale system.
No new hardwareThe system answers the existing phone line. There is nothing new to install on site.
No staff retrainingStaff see completed orders arrive. Intervention is optional, not required.
Peak-hour firstDesigned for the moments when phone volume exceeds staff capacity and calls would otherwise go unanswered.
01Call
inIncoming phone call
transformTelephony capture via streaming
outRaw audio stream
02Speech
inRaw audio stream
transformDeepgram Nova-2 real-time transcription
outUnstructured text with timestamps
03Intent
inUnstructured transcript
transformLLM extracts items, quantities, modifiers
outStructured intent object
04Menu Grounding
inIntent object
transformValidated against live menu data, resolves ambiguity
outMenu-verified order items
05Resolution
inVerified items
transformConfidence check, missing-info detection, confirmation loop
outComplete order ticket
06Output
inOrder ticket
transformDirect integration to kitchen workflow
outActive order, no staff intervention

The core rule is clarify before commit. Each item is scored independently, missing information is detected, and the system runs a confirmation loop before a ticket is committed. Operators can see what it heard, what it interpreted, and what it decided at every step.

Trust

Operators see what the system heard, what it interpreted, and what it decided at every step. No black boxes.

Visibility

Live transcription, confidence indicators, and order state are surfaced in real time. The system is legible while running.

Operator clarity

Staff don't need to learn the system. They see completed orders arrive. Intervention is optional, not required.

Awaiting measured results

Latency, call volume, and accuracy will be published here from verified live logs. Until that data is instrumented and confirmed, this slot stays empty. No estimates.

One clean callRecording comingA straightforward order, captured and committed end to end.
One messy callRecording comingHesitation, corrections, and menu ambiguity resolved in real time.
One failure and the fixRecording comingWhere the system broke, and the change that handled it.
Unclear input“give me the usual”: no context, no history
Overlapping items“chicken fried rice... no wait, shrimp”: item swap mid-sentence
Missing modifiers“large lo mein”: size not on menu, only one size exists
Background noiseKitchen clatter, multiple speakers, phone static
Clarification loopSystem asks targeted follow-ups instead of failing silently
Fallback promptsWhen confidence drops below threshold, rephrase and re-confirm
Confidence thresholdsEach item scored independently, so partial orders can proceed
Structured retriesFailed extractions re-enter the pipeline with accumulated context
agent protocol