Mise · Coverage & Build Sequence
Twenty real cases stepped through the current build — so the roadmap is grounded in what the product actually does, not what a schema hopes it will. Chomp is the base case: get it right first, then add the rest in order.
Each case stepped through the built screens + engine. SOLVED = works end-to-end · PARTIAL = engine works, a view or the ask-once store is missing · UNSUPPORTED = no flow for this shape at all.
| Case | Verdict | Gap / what it needs | |
|---|---|---|---|
| 1 | Flat recipe, all own-history invoices | SOLVED | works end-to-end (verify manual, few questions) |
| 2 | Produce line needing a yield | PARTIAL | no tenant yield store, no yield-confirm UI → manual |
| 3 | "2 tomatoes" (each→weight) | PARTIAL | conversion works; answer has nowhere to persist → re-asks |
| 4 | "3 cups pepperoni" (missing conversion) | PARTIAL | engine emits error; no question UI/store to resolve it |
| 5 | Price outlier (fat-fingered invoice) | PARTIAL | guard flags it; review needs the knowledge app |
| 6 | No price anywhere (saffron) | PARTIAL | ladder asks; no store to hold/answer |
| 7 | Sub-recipe (pasta + house marinara) | PARTIAL | recursion works if marinara exists; make-vs-buy detection missing |
| 8 | Deep nesting (Chomp donut) | PARTIAL | costs correctly — but RecipeView is single-level, no tree drill-in |
| 9 | Make-vs-buy (house vs jarred aioli) | UNSUPPORTED | no variance type, no decision store, no UI |
| 10 | Catch-weight protein (whole fish) | PARTIAL | flag known; no special handling/UI confirmed |
| 11 | Batch scale to 100 covers | PARTIAL | simulate_batch exists but the bad curves distort it |
| 12 | Dual-unit sub-recipe (caramel fl oz) | PARTIAL | needs multi-unit batch_yield (schema change flagged) |
| 13 | Cold-start, corpus-only (Maya beet) | PARTIAL | corpus not populated until waves 2-3; single dish works if data exists |
| 14 | Vendor quote as a price | UNSUPPORTED | no quote ingestion path, no basis:quote |
| 15 | Thin corpus vicinity (Park City) | PARTIAL | no vicinity resolver; falls to wide/ask |
| 16 | Bulk onboarding, 30 dishes | UNSUPPORTED | no bulk capture, no batched verify sweep — single-recipe only |
| 17 | Same recipe, 2 locations | UNSUPPORTED | single-tenant; no org→location costing, no switcher |
| 18 | Fleet roll-up / overpay | UNSUPPORTED | no fleet view, no benchmark, no cross-location |
| 19 | Migration diff (Coastline) | UNSUPPORTED | translator exists; no diff harness, no diff view |
| 20 | Duplicate merge + unknown yield | PARTIAL | dedup script exists; no merge-review UI, no yield-unknown surfacing |
fact_scope, benchmark, diff, basis:quote) get frozen now or deferred.Of the five personas, Chomp's flow is the built flow: capture one nested recipe → cost from own invoices → view. Nail it end-to-end before spreading.
| Task | Work |
|---|---|
| Fix the pricing bug (sweep-path units / conversion normalization) | in progress · days |
| Kill the off-spec bulk/labor curves | hours |
| Freeze the ledger — minimal, single-recipe scope (own_history · recursion · yield · outlier · question/error) | session + commit · days |
| Build the knowledge app (question queue + ask-once store + dollar gate) — verify becomes real, not concierge | ~1.5–2 wks |
| Recipe-tree drill-in view (donut → caramel → shells → ingredients) | ~0.5–1 wk |
| Validate against the Chomp answer key (Test A, to the penny) | days |
≈ 3–4 weeks on top of where Edith is — aligned with the mid-August engine target and the September concierge beta.
Sizes: M ~2–3w M–L ~3–4w L ~4–6w XL ~6–10w for one engineer.
| Persona | What it adds | Work | Strategic note | |
|---|---|---|---|---|
| 2 | Diego voice |
Voice/SMS door · intent router · speech→fact parser · dynamic friction budget | M | Cheapest — zero engine or ledger changes (proven interface-agnostic); a new skin over the same tools + the friction policy already in the knowledge app. Additive, low-switching-cost wedge; The Stand flagged voice as lacking. |
| 3 | Maya greenfield · bulk |
Bulk capture · batched verify sweep · onboarding-progress view · quote ingestion + basis:quote |
M–L + corpus data | The independent-kitchen scale market. Note: the beta (Ben) doesn't need these — concierge plays them by hand — so this is for going self-serve, not September. |
| 4 | Coastline migration |
Harden import · diff harness · diff view · cleanup worklist · merge-review UI · data_quality[] + diff object + split provenance |
L | Unlocks porting the ~350 existing ChefTec customers — the biggest existing-base opportunity. Half this work (the diff harness) isn't optional — it's the correctness proof gate regardless. |
| 5 | Alta chain |
Per-location costing · location switcher · fleet dashboard · benchmark/overpay engine · StandardCost + variance · geo/vicinity · fact_scope/costed_for/answer_scope |
XL | Essentially a second product (purchasing intelligence) on costing. Highest-value segment (chains, The Stand) and the corpus moat's biggest payoff — but furthest out, needs corpus density. |
→ Scaling independents (the Ben/beta market): Maya jumps ahead of Diego — bulk self-serve is what turns a concierge beta into a product independents adopt without you.
→ Courting sophisticated operators (Jeff, The Stand): Diego's voice door is next — voice-over-their-data is the additive, no-switching-cost wedge into people who already own tools.
Recommended: Chomp base → Diego (voice). Voice is cheap, reuses everything, and is the wedge into operators who won't switch for costing alone; Maya's self-serve can wait behind concierge for the beta. Flip Maya up if September shows independents pulling hard. Coastline & Alta are "when we target that market," both gated on things (diff harness, corpus density) that mature over the beta anyway.