Repository navigation
What a restaurant menu loses under v2026-08-25 - a reproducible baseline for the Menu Catalog work #786
amitkssolanki
started this conversation in
Ideas
Replies: 1 comment 1 reply
|
Hi @amitkssolanki I've put forth a proposal that I hopes addresses some of these concerns, I know it will not satisfy all of them but I'd love to hear your feedback #821 |
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
With the Food Tech Council seated and Lodging's capability landing (#780), I wanted to contribute a concrete, reproducible baseline for the Phase 2 Menu Catalog discussion: what happens when you map a real restaurant menu onto the current shopping catalog shapes (
product/variant/product_option/price) as of v2026-08-25.I built an Apache-2.0 conformance kit, menuconform, that validates restaurant menus against a food-domain IR - designed from a field study of the public menu models of Uber Eats, DoorDash, Grubhub, Checkmate, and the NCR Voyix Menu API (the kit ships an NCR importer), and pressure-tested against the Square Catalog, Toast Menus, and Clover Inventory APIs - and then exports to the pinned UCP catalog schemas, reporting every loss with stable rule IDs. Running its full-feature reference menu - one that scores 100/100 on menu-data conformance - through the export yields one item that cannot be represented at all and eighteen lossy constructs. Reproduce with:
menuconform export fixtures/02_full_feature/menu.jsonThe losses cluster into five classes (full analysis: docs/export-lossiness.md):
options/variants. Optional/multi-select groups, per-option quantities, "first N free," and nested groups drop entirely - the exported product is orderable but uncustomizable. When a required group can't become a variant axis, the item can't exist: the reference menu's family combo (pick-a-side, pick-a-drink, priced upgrades) is unrepresentable. Enumeration is not the workaround - a modest item with two required 8-option choices already needs 64 variants; a real pizza needs millions.Credit where due: integer minor-unit prices,
availability, and single-select sizes map exactly.The kit's IR already specifies and tests each missing construct (two-axis selection constraints, conditional prices, included quantities with pinned allocation, slots, structured allergens/age, recurring + exception schedules) across 12 fixture menus with pinned expected findings - offered as evidence of what real menus require and as a candidate test corpus for Phase 2, not as a proposal for its shape. The linked analysis also catalogs pricing constructs beyond the IR's own list - position-based topping ladders, removal credits, prep-code multipliers, fractional-portion multipliers - that the charter's implementer companies ship in production today. As far as I can tell there's no public food sample menu in the ecosystem yet; the fixtures are Apache-2.0 if useful. Happy to run the export against any draft schema the council produces and report what changes.
All reactions