Skip to content

AI phone ordering that fills every table's takeout slot

A voice agent that answers every takeout call, takes orders straight into the POS, and upsells like a trained host, even at the dinner rush.

Tonight's calls
Friday rush from 6 PM · every call on (503) 555-0148 answered by the agent · 7:44 PM
1 on the lineFri, 09/11/2026NF
Calls since 6 PM14all answered
Missed0peak hour
Orders in POS10payment attached
Held for staff1allergy to acknowledge

Calls as they land

Newest first
TimeCallLengthOutcomeNoteTicket
7:44 PMCL-44710:21On the lineBuilding order · 2 items—
7:39 PMCL-44701:48Held for staffDairy allergy · awaiting ack$61.00
7:36 PMCL-44691:12In POSPickup 8:00 PM$44.00
7:31 PMCL-44680:38No orderAsked about parking—
7:27 PMCL-44672:05In POSPickup 7:55 PM$87.00
7:19 PMCL-44661:31In POSAsked for lasagna · 86'd$39.00
7:14 PMCL-44651:02In POSPickup 7:40 PM$27.00
7:02 PMCL-44641:54In POSHalf & half read back$72.00
6:55 PMCL-44631:20In POSPickup 7:20 PM$51.00
6:41 PMCL-44620:44No orderAsked closing time—
6:33 PMCL-44611:39In POSPickup 7:00 PM$58.00
6:20 PMCL-44601:15In POSGluten-free crust$36.00
6:08 PMCL-44592:12In POSPickup 6:45 PM$94.00
6:01 PMCL-44581:07In POSAsked for burrata · 86'd$33.00

Open line · CL-4471

Built during the call
Maya R. · ••• 01930:21 · pickup
0:00
AgentThanks for calling Via Corvina, this is the ordering line. Is this for pickup?
0:04
Callerheard at 0.96Yeah, pickup. Can I get a Diavola and the rigatoni alla vodka?
0:09
AgentA Diavola and a rigatoni alla vodka. Anything you'd like changed on those?
0:14
Callerheard at 0.93No hot honey on the pizza, and extra crispy. And add chicken to the rigatoni.
0:21
AgentDiavola with no hot honey, baked well done. Rigatoni with chicken added, that's five dollars more. Is that right?
Order on the open lineReading back
Diavola$19.00Toppings › Remove › Hot honey · “no hot honey”Bake › Well done · “extra crispy”
Rigatoni alla Vodka$22.00Protein › Add › Chicken · “add chicken”+$5.00
Line items, not a transcript to parse later$46.00

How the work was scoped

Industry
Restaurants & Hospitality
Duration
9 weeks
Cooperation model
Fixed price
Services
Voice ordering agentPOS integrationMenu automation
Integrations
StripeSendGridSegmentSentry
Technologies
PythonFastAPIDeepgramTwilioOpenAI GPT-4oToast POS API
Team
1 Project lead1 Product designer1 ML engineer1 Backend engineer1 Data engineer

Client name withheld under NDA. Engagement details are shown to the extent our agreement permits.

Direct POS Order Injection

Injects confirmed takeout orders and payments directly into the POS without staff intervention.

The agent reads the Toast menu live, so an item eighty-sixed at six o'clock isn't offered at six-oh-one. Orders are built as structured line items while the caller talks, then written into the POS with payment attached as one transaction. The kitchen sees a ticket identical to one a staff member would have keyed, with the call recording linked for disputes.

What shipped
  • Live Toast menu: eighty-sixed items disappear at once
  • Structured line items assembled during the call
  • Tickets identical to staff-keyed ones, recording attached
Menu & POS
Read live from the POS: prices, specials, what's run out tonight, and the words the agent uses per dish
Last POS change 7:18 PMFri, 09/11/2026NF

Tonight's menu, as the agent sees it

14 dishes · 2 eighty-sixed
DishPriceAgent saysModsTonight
DiavolaPizza$19.00“spicy salami, fior di latte, hot honey”7Available
MargheritaPizza$17.00“tomato, fior di latte, basil”6Available
Funghi e SalsicciaPizza$21.00“fennel sausage and roasted mushrooms”7Available
Rigatoni alla VodkaPasta$22.00“rigatoni in a creamy tomato vodka sauce”5Available
Cacio e PepePasta$19.00“spaghetti, pecorino and black pepper”4Available
Lasagna della CasaPasta$24.00“our beef and pork ragù lasagna”286’d 7:18 PM
Burrata & HeirloomsStarters$14.00“tonight's special: burrata with heirloom tomatoes”186’d 6:00 PM
Garlic KnotsStarters$8.00“six garlic knots with marinara”2Available
Saffron AranciniStarters$11.00“tonight's special: three saffron arancini”1Special
CaesarStarters$12.00“little gem Caesar with breadcrumbs”3Available
TiramisuDessert$10.00“house tiramisu”0Available
Pistachio CannoliDessert$9.00“two cannoli with pistachio”0Available
House LemonadeDrinks$5.00“house lemonade”1Available
AranciataDrinks$4.00“a can of blood orange soda”0Available

Ticket #2318

Same as a staff-keyed ticket
Pickup · Maya R.8:05 PM
Diavola$19.00Toppings › Remove › Hot honey · “no hot honey”Bake › Well done · “extra crispy”
Rigatoni alla Vodka$22.00Protein › Add › Chicken · “add chicken”+$5.00
House Lemonade ×2$10.00
Total$56.00
Paid, card ending 4418, in the same transaction
Allergy fieldTree nut · “My son has a tree nut allergy.”
Acknowledged by Marisol 7:46 PM, then firedRecording CL-4471 · 1:26 · linked for disputes

POS changes the agent picked up

Tonight
7:18 PMLasagna della Casa 86'd · no longer offered
7:12 PMLasagna della Casa last offered on a call
6:01 PMCaller asked for the burrata: told it's out
6:00 PMBurrata & Heirlooms 86'd · no longer offered
4:30 PMSaffron Arancini set as tonight's special
On screen

The menu the agent reads from the POS: prices, tonight's specials, two dishes eighty-sixed and the exact wording used per dish, beside the ticket it wrote with payment in the same transaction and the recording linked.

Upsells
Which wording works, when, and what each offer added · as of 7:47 PM
One offer per callFri, 09/11/2026NF

Taken by wording

Last ten offers
A What sells with it4 of 5“Most {dish} orders here come with {item}. Would you like some tonight?”
B Plain add-on1 of 3“Would you like to add {item} for {price}?”
C Tonight's special2 of 2“Tonight's special is {special}. Want to add it?”

Taken by hour

Last ten offers
2 of 36 PM
5 of 77 PM

Average ticket

Same period
+14%agent-taken vs staff-taken
Staff-takenAgent-taken
Bars indexed, not dollar amounts. It offers on every order.

Last ten offers

Offered once; no is final
TimeCallIn the basketOfferedWordingResultAdded
7:45 PMCL-4471Diavola, RigatoniGarlic KnotsANo, thanks—
7:40 PMCL-4470Margherita ×2, CaesarTiramisuAAdded+$10.00
7:37 PMCL-4469Cacio e Pepe, DiavolaGarlic KnotsAAdded+$8.00
7:29 PMCL-4467Funghi ×2, RigatoniSaffron AranciniCAdded+$11.00
7:20 PMCL-4466Rigatoni, CaesarAranciataBNo, thanks—
7:15 PMCL-4465MargheritaHouse LemonadeBAdded+$5.00
7:04 PMCL-4464Diavola ×2, Cacio e PepeGarlic KnotsAAdded+$8.00
6:57 PMCL-4463Funghi, RigatoniTiramisuAAdded+$10.00
6:35 PMCL-4461Margherita, Cacio e PepeSaffron AranciniCAdded+$11.00
6:21 PMCL-4460Margherita (GF crust)House LemonadeBNo, thanks—

What sells with what

Via Corvina's own orders
Diavola Garlic Knots41%
Any pasta Tiramisu24%
Funghi e Salsiccia Saffron Arancini22%
Margherita House Lemonade19%

Rules the agent follows

Set by the owner
One offer per callNever repeated within a call
No is finalOwner's rule, from the week-two review
Specials read from the POSNothing the kitchen has stopped making
On screen

Which upsell wording works: taken by wording and by hour across the last ten offers, what each added, the attach rates the suggestions come from, and the one-offer rule.

AI Upsell Engine

Suggests popular drinks, appetizers, and desserts based on order contents and live specials.

Upsells come from the venue's own attach-rate data, so it offers what actually sells alongside what's already in the cart. It suggests once, takes no for an answer and never repeats within a call. That rule came from the owner, after hearing what a persistent upsell does to a regular. Specials are pulled from the POS, so nothing is offered that the kitchen has stopped making.

What shipped
  • Suggestions driven by the venue's own attach rates
  • One offer per call; no is final
  • Specials read from the POS, never hard-coded
Transcript CL-4471
Maya R. · 7:44 PM · 1:26 · ticket #2318 · scored per turn
Recording 1:26Fri, 09/11/2026NF

Turn by turn

Caller turns scored for how clearly they were heard
0:00AgentThanks for calling Via Corvina, this is the ordering line. Is this for pickup?
0:04CallerYeah, pickup. Can I get a Diavola and the rigatoni alla vodka?heard 0.96
0:09AgentA Diavola and a rigatoni alla vodka. Anything you'd like changed on those?
0:14CallerNo hot honey on the pizza, and extra crispy. And add chicken to the rigatoni.Modifiersheard 0.93
0:21AgentDiavola with no hot honey, baked well done. Rigatoni with chicken added, that's five dollars more. Is that right?Read back
0:28CallerPerfect.heard 0.98
0:30CallerOh, and my son has a tree nut allergy.Allergyheard 0.91
0:34AgentI've noted: “My son has a tree nut allergy.” That goes on the ticket as an allergy, and a staff member confirms it before it's made.Allergy
0:43CallerGreat, thank you.heard 0.97
0:45AgentMost Diavola orders here come with garlic knots. Would you like some tonight?Offer 1 of 1
0:49CallerNo, we're good.heard 0.97
0:51AgentNo problem.
0:53CallerTwo lemonades too. When will it be ready?heard 0.94
0:58AgentTwo house lemonades. It'll be ready at 8:05, and your total is $56.00. I can take a card now.Card, redacted
1:04Caller[card details redacted from transcript and recording]
1:22AgentYou're all set, Maya. Pickup at 8:05 at Via Corvina.

Modifiers, matched to the POS tree

Diavola: “no hot honey”In treeToppings › Remove › Hot honey
Diavola: “extra crispy”Read backBake › Well done
Rigatoni alla Vodka: “add chicken”In treeProtein › Add › Chicken+$5.00

Allergy handling

Its own class
Caller said, at 0:30“My son has a tree nut allergy.”
Repeated to the caller word for word at 0:34
Allergy fieldTree nut
NotesNot used for allergies
7:45 PMWritten to ticket #23187:45 PMHeld: the kitchen doesn't see it yet7:46 PMAcknowledged by Marisol on the floor7:46 PMFired to the kitchen

Dietary & Modifier Handler

On screen

One call turn by turn, each caller turn scored, with the modifiers matched to the POS tree, the one read back, and the tree nut allergy repeated verbatim, written to its own field and held until staff acknowledged it.

Understands complex order modifications, allergies, and custom preparation notes accurately.

Modifiers are matched against the POS's own modifier tree, so a custom request either maps to something the kitchen can actually make or is read back for confirmation. Allergy mentions are treated as a distinct class: they're repeated to the caller verbatim, written into the ticket's allergy field (never the notes), and flagged for staff acknowledgment before the ticket fires.

What shipped
  • Modifiers matched to the POS's own tree
  • Allergies read back verbatim and written to their own field
  • Staff acknowledgment required before an allergy ticket fires
Introduction

What we were brought in to do

The restaurant lost takeout revenue every Friday because staff couldn't answer the phone and run the floor. We built a voice agent that takes orders straight into the POS.

A single venue doing about forty percent of its revenue as takeout, with one phone and no one free to answer it between six and nine on a Friday. The owner had counted a month of missed calls off the phone bill before commissioning anything. The other half of the cost was invisible in that number: every answered call was a server leaving a table mid-service.

AI & Integration

Where the old way broke

During peak hours, phone orders went to voicemail and walk-in service suffered whenever staff stopped to take a call.

Peak-hour calls went to voicemail, and takeout customers who reach voicemail order elsewhere instead of leaving a message. Worse, the calls that were answered came out of floor service: the venue was choosing between the order on the phone and the table waiting to pay, and losing money whichever it chose.

We deployed a natural-sounding voice agent that answers instantly, reads the live menu, takes and upsells orders, and drops them directly into the venue's POS with payment.

What we built together

  1. 01

    Integrated with the POS for live menu, pricing, and order injection

    POS integration went first because an agent that can't see the live menu will eventually sell something the kitchen has stopped making.

  2. 02

    Tuned the agent's voice and upsell prompts per location

    Each location gets its own voice and upsell prompts, tuned to what that venue's customers tend to add to an order.

  3. 03

    Handled modifiers, allergies, and pickup times reliably

    Modifiers match the POS's own modifier tree, and allergies are read back verbatim and written to their own field for staff acknowledgment.

  4. 04

    Monitored and refined against real call recordings

    Real recordings were reviewed weekly, with the owner deciding what had gone wrong. That's where the offer-once upsell rule came from.

Process

Phase by phase

  1. Phase 1: POS API Integration

    Live POS Injection Engine

    Integrated live menu data, pricing rules, and direct order injection APIs into the venue's POS system.

    • POS Integration API
    • Menu Sync Engine
    • Payment Injection Bridge
  2. Phase 2: Conversational Scripting

    Voice AI & Upsell Prompt Engineering

    Configured natural-sounding voice prompts trained to handle dietary allergies, item modifiers, and intelligent host upselling.

    • Voice Prompt Architecture
    • Upsell Script Matrix
    • Modifier Parser
  3. Phase 3: High-Noise Audio Tuning

    Speech Recognition & Noise Filtering

    Tuned speech-to-text noise cancellation filters to accurately process phone calls made from noisy environments during dinner rushes.

    • Noise Filter Benchmarks
    • Audio Model Tuning
    • Speech Recognition Audit
  4. Phase 4: Multi-Site Launch & Analytics

    Restaurant Deployment & Call Logger

    Deployed across multi-location restaurant sites with real-time call recording, transcript logging, and ticket analytics.

    • Multi-Site Launch Clearances
    • Call Log Dashboard
    • Revenue Impact Tracking
Call review · week 2
Real recordings, reviewed with Nico Ferrante. The owner decides what went wrong.
6 calls pulledFri, 09/11/2026NF

Pulled for review

Owner's verdict and what changed
CallWhat we heard · verdictChange
CL-3120Fri 6:52 PMA second upsell after the caller said noWrong. A regular heard it twice.New ruleRule: offer once per call; no is final
CL-3094Fri 7:31 PMStreet noise; “rigatoni” first heard as “rigate”Caught on read-back, but slow.Audio tuningAdded to the noise benchmark set
CL-3102Fri 7:48 PMHalf-and-half pizza, not in the modifier treeRight to read it back.POS treeOwner added Half & half to the POS tree
CL-3077Fri 6:24 PMDairy allergy mentioned mid-orderCorrect: verbatim, own field, held.KeepKeep as is
CL-3141Sat 6:10 PM“Extra crispy” mapped to Bake › Well doneCorrect; the kitchen agrees.KeepKeep as is
CL-3156Sat 8:02 PMKitchen clatter behind the caller on every turnTwo items misheard, both corrected.Audio tuningAdded to the noise benchmark set
Voice & prompts for this locationSet per venueGreeting“Thanks for calling Via Corvina, this is the ordering line.”Upsell sourceVia Corvina attach rates, refreshed from the POSNoise handlingRush-hour benchmark set · street and kitchen noise

Recording CL-3120

Fri 6:52 PM
AgentWould you like to add a tiramisu for ten dollars?CallerNo thanks.AgentAre you sure? It's our most popular dessert.CallerI said no. I order from you every Friday.
Nico Ferrante, reviewing“That’s a regular. Ask once. If they say no, that’s the answer.”
Rule added, week 2Offer once per call. No is final.Applies to every call from the next service
On screen

The weekly review of real recordings with the owner's verdict on each, and the call where a second upsell to a regular became the offer-once rule.

Outcome

Operational results after launch

+100%

Phone orders captured

+14%

Average ticket

0

Peak-hour missed calls

Phone orders captured is measured against the telephony log of inbound calls, so unanswered calls are in the denominator. Average ticket compares agent-taken orders with staff-taken orders over the same period, because the historic average had a different mix. Missed calls is a count, not a rate.

Client name withheld under NDA. Figures are approximate, drawn from the engagement’s own reporting.

About our collaboration

01
  1. 01

    A cross-functional team of 5 worked on a fixed price basis over 9 weeks, covering Voice ordering agent, POS integration, Menu automation. We ran two-week increments, each one shippable, reviewed live before it merged. Decisions were recorded as they were made, so the reasoning survived the people who made it.

    The agent was tuned against real call recordings weekly, and the owner, not a metric, decided what had gone wrong. The upsell rule (offer once, take no for an answer) came from that review in week two, after the owner heard what a persistent second offer sounded like to a regular.

What we'd carry into the next one

  1. 01

    100% phone order capture eliminated lost takeout revenue during peak Friday dinner rushes.

    The recovered revenue was almost entirely the peak hour: off-peak calls had always been answered, so the agent added nothing there and everything between six and nine.

  2. 02

    Intelligent upsell prompts increased average ticket size by +14%.

    The ticket rise came from consistency more than persuasion: the agent offers on every order, where staff offered when they remembered and had time.

  3. 03

    Direct POS injection freed floor staff to focus on in-person dining guests.

    The floor benefit was the one the owner hadn't priced in: nobody leaves a table to take an order now, and that showed up in table turn before it showed up anywhere else.

One takeout call, six stretches

The order is built while the caller talks, not worked out afterward.

Step through a pickup order: the modifier that has to be read back, the allergy that gets its own field, the one upsell and its no, and the ticket that waits for a person before the kitchen sees it. Switch tabs, use the arrow keys once one is focused, or play the call.

Call CL-4471 · Maya R. · pickup · started 7:44 PMTurn times illustrative
0:00
AgentThanks for calling Via Corvina, this is the ordering line. Is this for pickup?
0:04
Callerheard at 0.96Yeah, pickup. Can I get a Diavola and the rigatoni alla vodka?
0:09
AgentA Diavola and a rigatoni alla vodka. Anything you'd like changed on those?

Two dishes become two line items the moment they're said, priced from the live POS menu. Nothing waits to be parsed from a transcript after the call.

Order so farBuilding on the open line
Diavola$19.00
Rigatoni alla Vodka$22.00
So far$41.00

A worked example with an invented caller and menu. Offsets into the call are illustrative, not measured.

Architecture

From a ringing phone to a ticket the kitchen can make

The POS integration went in first: an agent that can't see the live menu will eventually sell something the kitchen has stopped making. Everything else reads from it and writes back to it.

  1. 01 · Trigger
    The takeout line ringsAnswered instantly, every call, including the six-to-nine rush when nobody on the floor could pick up.
  2. 02 · Ingest
    Speech to text, tuned for noiseRecognition tuned and benchmarked against calls made from noisy places during the dinner rush.
  3. 03 · Engine
    Conversation, modifiers, upsellLine items built during the call; modifiers matched to the POS tree; one offer from the venue's own attach rates.
  4. 04 · State
    Live POS menuPrices, specials and eighty-sixed items read live, so nothing is offered that the kitchen has stopped making.
  5. 05 · Deliver
    Ticket into the POSOrder and payment written as one transaction, recording linked. Allergy tickets wait for staff acknowledgment.
Allergies, modifiers, the live menu

What the agent won't get wrong on a busy Friday

An allergy never fires unseen

Allergy mentions are repeated to the caller verbatim, written to the ticket's allergy field (never the notes), and held for staff acknowledgment before the ticket fires.

No free-text guesses in the kitchen

Modifiers are matched against the POS's own modifier tree. A request that doesn't map to something the kitchen can make is read back to the caller for confirmation.

Only what the kitchen is making

Menu, prices and specials are read live from the POS, so an item eighty-sixed at six isn't offered at one minute past. Every ticket links its call recording for disputes.

Losing orders to a phone nobody can answer at the rush? Scope your build in 3 minutes.

Scope your build
Have a project?

Let's talk

Running a large platform, shaping a first MVP, or getting a product ready for a funding round? Tell us where you are. We'll shape the process around it, and stay with you after launch.