- hospitality
- allergens
- ai agents
A per-dish allergen sheet an AI agent can read without errors
· 7 min read
How to structure your restaurant's allergen sheet by component, dated and signed off by the kitchen, so an AI agent answers from data and knows when to stop.
Saturday, 1:40pm, a full dining room. A WhatsApp message comes in: "Hi, does the black rice have any dairy in it? My daughter is allergic to cow's milk protein." Whoever picks up the phone front-of-house doesn't know off the top of their head, walks into the kitchen, interrupts the section chef and comes back three minutes later with "I don't think so". That "I don't think so" is the problem. This article is for anyone running a restaurant, a bar with a kitchen or a bakery who wants an AI agent to answer allergen questions without making anything up. By the end you'll know how to build a per-dish allergen sheet so the answer comes from data, not from someone's memory.
What the law already asks of you (and what it doesn't tell you)
In Spain, and across the EU, if you serve unpackaged food you must be able to tell customers about the 14 allergens listed in Regulation (EU) 1169/2011. Spain sets out how that applies to non-prepacked food in Royal Decree 126/2015, and the Spanish food safety agency AESAN has a plain summary. The list, in case it's not in front of you: cereals containing gluten, crustaceans, eggs, fish, peanuts, soy, milk, tree nuts, celery, mustard, sesame, sulphites, lupin and molluscs.
Most restaurants already have something: a menu with little icons, a laminated chart behind the bar, or a PDF your food safety consultant put together. For a customer reading it calmly, that works. For an agent that has to answer "does the black rice have dairy?" in ten seconds, it rarely does, for three reasons:
- Icons don't say where the allergen comes from. The agent sees a milk drop next to the rice and can't tell whether it's the butter at the end or the shop-bought stock, which is exactly what the customer needs to know if they want to order it without.
- They mix "contains" with "may contain". For someone with a severe allergy, that difference is everything.
- They have no date. Nobody knows whether they reflect this month's menu or last spring's.
One row per dish isn't enough: think in components
The most common mistake when tidying the sheet is one row per dish with a grid of ticks. It works until you change a sauce that goes into four dishes and have to remember all four.
The structure that holds up has two levels:
- Base components: stocks, sauces, doughs, batters, dressings, sides. Each with its own ingredients and allergens.
- Dishes: each dish lists which components it uses and any loose ingredients added at the end.
A dish's allergens are the sum of its parts. Any ordinary spreadsheet can do that, and if your aioli supplier changes their recipe tomorrow, you fix one row and every dish that uses it updates.
For the black rice it would look something like this:
Dish: Black rice
- Fish stock (house) → fish, crustaceans, celery
- Sofrito base → —
- Squid ink (supplier X) → molluscs
- Cuttlefish → molluscs
- Aioli (house) → egg
Contains: fish, crustaceans, molluscs, celery, egg
May contain: —
Milk: NO
Can be ordered without: aioli (removes egg)
Checked: 2 Oct, Marta (kitchen)
Now the agent can answer precisely: "The black rice has no dairy. It does contain fish, shellfish, molluscs, celery and egg (the egg is in the aioli, which we can serve on the side)." And it can say that because a named person checked it on a specific date.
The columns that make the difference
On top of the 14 allergens, give each dish these columns. They're what turn a compliance chart into something an agent can actually work with:
- Contains / May contain / Doesn't contain. Three values, never a blank cell. Blank means "nobody has looked", and the agent should treat it that way.
- Where the allergen comes from. Which component or ingredient. That's what lets it answer "and without the sauce?".
- Can be adapted. What the kitchen can genuinely leave out or swap during service. If it can't, say so: "the dough contains egg, there's no version without".
- Cross-contact risk. Shared fryer, shared griddle, flour in the air of the bakery. This never shows up in the recipe and it's what worries a coeliac most.
- Supplier product. Brand and reference for anything you don't make yourself. If you switch supplier, that row gets flagged for review.
- Checked by and date. Someone from the kitchen, not front-of-house or the office.
With that in place, a rule as simple as "if the row is more than 60 days old or has any blank cell, the agent doesn't answer and passes the question to the manager" already protects you from most nasty surprises.
What the agent answers and what it never answers
A good sheet doesn't turn the agent into an allergy expert. It turns it into something that reads a record properly and knows when to stay quiet. Write these limits down:
- It answers which allergens a dish contains, where each one comes from and which adaptations are approved.
- It answers "we can't say for certain, a member of the team will confirm" when data is missing or out of date.
- It never says "that's safe for you" or "you can eat it without worrying". It informs; the customer decides.
- It never improvises a substitution that isn't on the sheet, however obvious it seems.
- It always adds the cross-contact warning when the row flags it, even if the customer didn't ask.
- It always hands over severe or multiple allergies ("anaphylaxis", "allergic to all nuts and legumes") and group bookings with several allergies to a person, so the kitchen sees them before service.
Notice that half the rules are about not answering. That's deliberate.
Keeping it current without adding a job
The best moment to build the sheet is when you change your menu, because you're already going through recipes. After that, three habits are enough:
- Every delivery with a new product or a brand change triggers a check of that row. It's the most common source of errors: your usual breadcrumbs run out and the replacement contains sesame.
- Every off-menu special goes on the sheet before it's offered, even if it's only on for the weekend. If it's not on the sheet, the agent says it doesn't know.
- A quick monthly review: fifteen minutes, the head chef and the list of rows the system flags as out of date.
The agent itself can help here too, by flagging which rows expire this week or which dishes got the most allergen questions so you check those first. But the sign-off always belongs to the kitchen.
When it's better not to let an agent answer
Not every kitchen will find this worth it:
- If your menu changes daily (a market-driven set lunch, rotating seasonal plates), keeping the sheet as current as an agent needs is more work than answering by hand. In that case the agent should just record the allergy on the booking and alert the kitchen.
- If cross-contact is the norm in your kitchen (one fryer, one griddle, very little space), the honest move is for the agent to say up front that you can't guarantee the absence of traces, and hand the conversation to a person.
- If nobody in the kitchen will sign the sheet off, don't connect it. A record that looks official but that nobody has checked is more dangerous than no record at all.
The upside is that tidying the sheet pays off even if you never automate anything: your floor staff give better answers from day one.
Where to start
Pick your ten best-selling dishes and move them into the component format this week, with your head chef. Once those ten are signed off, you've got enough for an agent to handle most of the allergen questions that come in via WhatsApp or your website.
Answering from the data, flagging bookings with allergies to the kitchen and passing you anything uncertain is part of what an AI receptionist does. You decide what can be adapted; it makes sure the customer gets the right answer at 1:40pm on a Saturday.
