1 · Get found
Someone asks an AI assistant where to eat tonight.
Most restaurant websites were built in a page builder that blocks crawlers, so assistants quietly answer with the delivery apps. The system publishes a machine-readable menu, hours and facts, measures how often assistants name the restaurant, and runs a weekly engine that proposes pages from real search demand and ships only what the owner approves.
On the system
- 7 of 10 AI answers to local food questions name the restaurant
- 74 pages in the sitemap, one per dish, suburb and occasion
- Weekly proposals from search data; owner approves by email
Site blocks crawlers
Site readable by machines
One proposal this week. A page for "biryani catering Spring TX".
- Owner replies "yes"
- Page written from the live menu and real terms, checked for invented facts
- Published, sitemap updated, search engines pinged
- Measured: orders from that page, not visits
What the engine reads
Google Search data, sales by dish and hour, the weather, the calendar and the live site. It proposes at most a few pages a week and refuses to write a page it cannot ground in a real price or a real term.
What it will not do
Invent a fact, publish a rating as markup, make a near-duplicate page per suburb, or ship without the owner's yes. Visibility that does not turn into orders is retired.
2 · Win the order
A table of six, a phone call in Urdu, and a catering request at 11:46 PM. Same brain.
The guest's own phone becomes the server, and Haniya is the digital server behind it: at the table you hold a button and talk to her; on the phone she answers, knows the whole menu, the hours and the caller, takes the order, texts a pay link and stays on the line while they pay. Catering is booked and paid while the owner sleeps.
On the system
- 7 languages at the table
- Almost every dine-in order now placed on the guest's phone
- Open while closed: after-hours orders are scheduled for opening
Try it
- Pick a language
- Hold to talk to Haniya, your digital server, or tap a dish
- Pay with the test card
- Watch it land in the kitchen in chapter 4
What prints in the restaurant
At the real table
Most guests never type. They hold the button and tell Haniya what they want, in their own language, the way they would tell a server. She adds it to the cart and reads it back; the guest taps pay. Older guests who do not like screens get a person-shaped way in. Several phones at one table share one cart and one ticket. Voice is off here only because it costs money per minute.
Three real situations from our line, replayed on the sample menu.
Behind the call
- Pick a call to see each step
3 · Take the money
Nothing reaches the kitchen until it is paid. Then the system chases what is not.
Table, pickup, phone and catering all pay online first. A phone order becomes a pre-built cart link by text. A declined card is explained in plain words with another way to pay, and every decline is logged by cause, which is how the restaurant found out its own fraud rules were refusing more cards than the banks were.
On the system
- Every app order paid before it cooked, 60 days running
- 15 of 19 phone pay links paid without a human chasing
- 6 in 10 app orders pay with Apple Pay or Google Pay
The unpaid phone order
Haniya took the order at 6:40 PM and texted the link. The caller got distracted. Run the ladder.
- 6:40 PMPay link texted. "I'll stay on the line while you pay."
- 6:50 PMNot paid. One reminder text: the order is held for 20 more minutes.
- 7:00 PMStill unpaid. Haniya calls back once; if there is no answer, the cart is kept for next time.
- 7:03 PMPaid. Ticket prints now, pickup time recalculated from what the kitchen has in hand.
The declined card
Tap to see what the guest sees, and what the owner sees.
67 of 95 declines were caused by the restaurant's own rules or page, not the guest's bank. Both were fixed the week this was measured. Red bars are ours.
Also running
- A money watcher checks every 30 minutes that each order was paid in full
- Every refund texts the owner
- One price rule per channel: delivery-app menus at pickup price x1.30, so the apps pay their own commission
- A chargeback pulls the receipt, the refund record and camera stills into one evidence file
4 · Cook and serve
One ticket stream. Table, phone, website and three delivery apps, in cooking order.
Before: a tablet per delivery app, staff re-keying each order into the register so a ticket would print, and in a rush, orders lost, late or wrong. Now every door lands in one queue with the table number, the guest's own words and a pickup time computed from what the kitchen has in hand.
On the system
- 1 in 6 app tickets carries a note the guest typed themselves
- Honest pickup times from the last 30 minutes of kitchen load
- A text to the owner if a paid order fails to print
5 · The owner's day
The owner states an outcome in one line. Haniya plans the job, runs it, repeats what repeats, and reports.
This is not a chat box. Every ask becomes a job: a plan built from a registry of what she can do, steps that run in parallel where they can, a gate only where money, food or something destructive is touched, a schedule for the parts that repeat, and a report of what was done, what was assumed and what could not be done. Every step is logged with its cost. When a capability is missing, a step builds it. When she sees something in sales, reviews or calls, she proposes the job herself.
On the system
- Outcomes, not tasks: she picks the channels and the steps
- Plan once, "Do it": outward steps run; money, food and deletes wait for his tap
- Every step logged with model, latency and cost
- Missing a capability? A step builds it
Today so far vs a typical Friday
Where orders came from
The real dashboard fuses the register with the books: true net after app fees and processing, not the card-only number the register shows. No dollar figures appear in this demo.
6 · Keep the guest, grow the margin
The delivery apps keep the customer. The system knows every guest by name.
Every order through any door adds to one guest record: name, language, usual order, spice, last visit. Texts go out on each guest's own rhythm, never a discount to a regular, with a holdout to measure the truth. Reviews, ads and the documents the brand rests on are watched the same way.
On the system
- Thousands of guests known by name, 9 in 10 reachable
- Never percent-off, never a discount to a regular
- Ads judged on net profit per order and switched off by themselves
What the app shows the restaurant
- Name
- Customer
- Phone
- Hidden
- Orders
- 1 (this one)
- Can you text them?
- No
What the system knows
- Name
- Ayesha R.
- Language
- Urdu on the phone, English in the app
- Usual
- Goat karahi, medium, two garlic naan
- Visits
- 11 · dines in Fridays, orders pickup Tuesdays
- Last seen
- 38 days ago (her rhythm is 16)
- Notes
- Asked for less oil once; it stuck
Win-back, on her rhythm
Overdue by 22 days. Sent at the hour she usually orders, in her language. A free side on a $25 pickup, never a percent off.
Ads judged on profit
Spend, free items and food cost against the orders those clicks produced.
Reviews, read every few hours
A 2-star came in at 9:40 PM: "waited 25 minutes for takeout."
Trust documents watched
Health permit, food-handler cards, insurance, the halal certificate. Warned 60 days ahead, because renewal is someone else's paperwork.
Catering buyers found
Offices, clinics, mosques, temples and schools within ten miles, written to in the owner's own words, replies texted to him.
Outage protection
Every service checked every five minutes. One text per outage, a rescue script, nightly backups. The phone line never cold-starts.
7 · Under the hood
What runs where, and what this page fakes.
The real stack
| Phone | Vapi for the call leg, Deepgram multilingual ear, the restaurant's own brain behind a custom-LLM endpoint. 28 tools, every call recorded and replayable. |
| Brain | Claude. One prompt stack: engine rules, an industry playbook, the restaurant's settings, and house rules it learned from the owner. |
| Server | Python on Fly.io, one machine, one volume, one gunicorn worker with threads. 20 watcher jobs inside it. |
| Till | Clover. Menu synced out to every channel; paid orders written in; delivery-app menus repriced from one rule. |
| Texts | Twilio. STOP covers every channel; test and staff numbers can never receive guest texts. |
| Site and ordering | Static pages on GitHub Pages, one ordering app built four ways (dine-in, takeout, tables, catering) from one source. |
| Engines | Cron: the SEO engine, reviews reader, ads tuner, morning brief, nightly recap, certificate watch. An always-on operator proposes work; the owner approves numbered items. |
| Deploys | A push requests a deploy; it waits until no call and no checkout is live, then ships. Never over a live call. |
What this page fakes
- Everything. The page's security policy is
default-src 'none'. No fetch, no fonts, no images from anywhere. Open the Network tab. - The restaurant. Mehfil Grill does not exist. Menu, prices, guests and numbers inside the widgets are sample data.
- The brain. Haniya's answers here are scripted. On the real line she reasons over the live menu, the caller's history and the kitchen's load.
- Voice. Off, because it costs money per minute. The real table and the real phone both take speech.
What is measured, not faked
- The numbers in the scoreboard at the top and the "On the system" facts are from the real restaurant, re-checked in October 2026.
- The decline breakdown, the pay-link ladder, the call situations and the owner commands are real events, replayed on the sample menu.