Maître
An AI assistant that takes restaurant bookings by phone and web chat, in French, English and Spanish, with every rule enforced by tested code.
- Role
- Design and development
- Team
- Own project
- Period
- Oct 2026
- Stack
- TypeScript, Python, Cloudflare Workers and Durable Objects, Astro, LiveKit, Claude Haiku
- Status
- Live public demo
Why it's built this way
Voice booking assistants are often shown working once, on a live call, and called done. In one such demo, the agent read the caller's number back with a digit wrong and booked the table under it. Nothing noticed, because nothing was checking.
Maître starts from the other end. What must always be true is written in code and covered by tests, and the language model only does the talking. Guests book by phone or web chat; the staff run the day's service from a dashboard with the floor plan.
Rules the code enforces
The last table goes to one guest
Finding a table and booking it is a single step, so two guests can never end up with the same table.
Dates that don't slip
The guest says “on Friday” or “the day after tomorrow”, the code works out the day, and every answer reads the full date back.
Allergens from the kitchen's sheet
The answer comes from the sheet, word for word. When the sheet doesn't say, the answer is “we don't know” and the question goes to the team.
The model never sees the number
The number comes from the channel itself (caller ID, the keypad or a form), never from speech recognition.
Asking twice books once
If the model repeats an action, no second booking is made.
Data stays in the EU
Each restaurant's data is stored in the EU, and conversations are deleted after 90 days.
How it's evaluated
The model was chosen with a rule written before the tests. Every conversation had to be right in all three runs; after that came the shortest wait for the guest and, between close candidates, an independent benchmark of conversations with tools. Several real models were compared this way, and Claude Haiku came out ahead.
Today the suite holds 41 conversations written in advance in French, English and Spanish, 26 of them also played on the phone. Each one runs three times and only passes if all three do. In the latest run all 41 passed, with a median reply of 1.6 seconds.
Several failures turned into code. One model filled in a date with the wrong month, so the model no longer handles dates (the code works them out). Another promised to have a guest called back and recorded nothing, so now the code passes the request to the team itself.
Known limits
It doesn't join tables yet, so parties bigger than the largest table go to a person. There is no staff login, and a real deployment would put Cloudflare Access in front of the dashboard. WhatsApp is designed but not built.
No real restaurant uses it yet. The demo runs an invented bistro with invented data, and the evaluation catches regressions without proving the assistant right in every possible conversation.
- 41/41
- conversations passed in the latest run
- 1.6 s
- median reply, latest evaluation
- 26
- conversations also tested by phone
- 90 days
- before conversations are deleted

Test call with invented data 
Test call with invented data 
Test call with invented data 
Restaurant dashboard with invented data 
Restaurant dashboard with invented data 
Restaurant dashboard with invented data