Every other agent — the phone, the chat, the reviews, the menu — is traced and scored here against a hospitality test set. When one invents an ingredient, breaks the price floor or skirts a safety rule, this layer catches it, blocks or holds it, and writes it down. Safety you can audit, not merely assert. Read by Eleanor Marlowe & Tommo Finch
| Agent ↕ | What it does ↕ | Quality score ↕ | Groundedness ↕ | Escalation rate ↕ | Drift status ↕ |
|---|---|---|---|---|---|
| Phone booking | Takes & changes bookings | 2.1% | Stable | ||
| Web chat | Website enquiries & bookings | 4.4% | Stable | ||
| Review triage | Drafts & routes review replies | 6.8% | Stable | ||
| Menu Q&A | Answers menu & allergen questions | 5.2% | Watch | ||
| Beverage pairing | Suggests wine & beer pairings | 3.6% | Watch | ||
| Menu-engineering | Costs dishes, recommends prices | 1.2% | Stable |
Two on Watch. Groundedness on the pairing (uc13) and menu Q&A (uc10) agents has slipped a few points against baseline — the kind of quiet regression an SME would otherwise ship blind. Neither is failing; both are flagged for a human to look at the prompt before it drifts further. Colour never stands alone — the chip is labelled.
Nothing here was decided silently. Each row is one entry in an append-only log — agent, rule, the exact text, the outcome and a reference. A hallucinated ingredient and a floor breach are refused outright; an allergen review and a voice slip are held or returned for a person. The point of this layer is that the refusals are recorded, so the safety net can be checked rather than taken on trust.
Judged, then reviewed. A rule check or an LLM-as-judge scores each output as correct, hallucinated or wrongly-refused against a hand-built hospitality eval set. The judge can be wrong too — so a borderline flag isn't a verdict, it's a queue. The two safety lines (correct refusal, price floor) are hard rules and sit at 100%; the softer judgements are watched, never blindly trusted.
Weekly mean against the 90% alert threshold. The dip is the week the wattleseed hallucination appeared.
Week 5 crossed the line and tripped the Watch status on the scoreboard. The agent didn't break — its groundedness quietly slipped after a prompt change, exactly the kind of silent drift this layer exists to surface. It's recovering; a person is reviewing the prompt.
Honestly, today this is tracing plus a hand-built eval set. Every agent interaction is traced; rule checks (the ingredient allow-list, the price floor, the safety-routing rules, the banned-phrase list) catch the hard cases deterministically, and an LLM-as-judge scores the softer ones — groundedness, voice — against hospitality test cases we wrote ourselves. Metrics aggregate per agent; drift is just those metrics tracked over time against a baseline. The generic observability spine is commodity (Langfuse or Arize Phoenix, self-hosted, OSS); the hospitality eval set — what counts as a correct refusal, what counts as an invented ingredient — is the part that doesn't exist off the shelf, and it's the work.