A domain-specific assurance module that sits with the quality layer. It reads the whole menu, recipe and allergen corpus continuously, catches the contradictions — a dish flagged "gluten-free" whose recipe contains soy sauce, a guest-facing answer that doesn't match the source — logs the food-safety checks with timestamps, and blocks a bad edit before it reaches a guest. Allergen safety you can audit, not merely assert. Read by Eleanor Marlowe & Tommo Finch · against SFA guidance
| Dish ↕ | Published claim ↕ | What the recipe contains ↕ | Confidence ↕ | Check status ↕ |
|---|---|---|---|---|
| Saltbush lamb tartare | Marked gluten-free | Recipe step 3 folds in light soy sauce (contains wheat) into the dressing — and the dish already carries gluten egg on record. | Flagged | |
| Charred broccolini, anchoïade | fish tree-nut missing | Recipe finishes with macadamia; the anchoïade carries anchovy (fish, on record) but the published list omits the tree-nut. | Flagged | |
| Smoked Tasmanian ocean trout | fish tree-nut dairy | Recipe lists bunya nut and macadamia (both tree-nut) and a cultured-cream finish — claim matches the recipe exactly. | Reconciled | |
| Crocodile boudin blanc | egg dairy | A boudin blanc normally implies pork — recipe confirms a crocodile forcemeat with no pork; gribiche carries the egg, the panade the dairy. Claim correct. | Reconciled | |
| Lamington soufflé | gluten dairy egg | Sponge (gluten, egg), crème pâtissière (dairy, egg); coconut sorbet is dairy-free. Claim matches; coconut noted as not a tree-nut under SFA listing. | Reconciled |
The headline catch. Someone added a "gluten-free option" tag to the saltbush lamb tartare — but the recipe folds light soy sauce (wheat) into the dressing, and the dish already declares gluten. A coeliac guest reading "gluten-free" would be misled. The guardian reconciles the claim against the recipe, names the offending ingredient, and proposes the fix: drop the tag, or swap to tamari and re-test. Colour never stands alone — every chip is labelled.
| Timestamp | Check | Reading / detail | Signed | Result |
|---|---|---|---|---|
| 03 Jun · 06:48 | Cold-store temperature | Walk-in fridge — fish & dairy zone 3.1 °C (limit ≤ 4 °C) | K. Devi | In range |
| 03 Jun · 06:50 | Cold-store temperature | Dessert reach-in 6.4 °C (limit ≤ 4 °C) — door seal logged, moved stock, re-checked 07:20 at 3.6 °C | K. Devi | Out of range · resolved |
| 03 Jun · 07:05 | Allergen-station check | Tree-nut prep board segregated; dedicated macadamia mill cleaned & colour-coded before service | M. Finch | Pass |
| 02 Jun · 23:18 | Cleaning · close-down | Pass line, gribiche station and oyster bench sanitised; chemical dilution verified | J. Pereira | Complete |
| 02 Jun · 18:02 | Allergen-station check | Coeliac order — tartare flagged by guardian (see contradictions feed); GF tag pulled pending fix, guest re-quoted | E. Marlowe | Action taken |
The answer is checked, not trusted. A guest-facing agent can be fluent and still be wrong. The guardian holds every allergen answer against the recipe source before release — if the model had said "tree-nut-free", the same check that reconciled the menu would have caught it and held the reply. This is the assurance hook UC12 logs; here it is specific to allergens.
This is the point of the module. The dangerous failure in a restaurant isn't a clumsy sentence — it's a confidently wrong allergen claim that reaches a guest. Whether the bad edit comes from a tired human or a well-meaning agent, the guardian reconciles it against the recipe source before publish, blocks the contradiction, names the evidence, and writes the refusal to the same append-only log as the food-safety checks. It is a domain-specific assurance module that plugs into the UC12 quality layer — allergen integrity, not just general groundedness.
Honestly, today this is a reconciliation pass over structured data plus a publish-time guardrail. Every dish has three things that ought to agree: its published allergen claim, the ingredients in its recipe, and the SFA's mapping of ingredient → declarable allergen. A deterministic check reconciles the first against the second and third; where wording is loose (is "boudin blanc" pork? is coconut a tree-nut?) an LLM resolves it against the SFA listing and a hand-built rule set. The food-safety log is an append-only table — readings, signatures, timestamps — and the publish guardrail simply re-runs the reconciliation on any edit before it commits. The append-only logging and tracing spine is commodity (it shares UC12's); the hospitality rules — the ingredient-to-allergen map, what counts as a contradiction — are the part that doesn't exist off the shelf, and they're the work.