Cleveland Kitchen Demo — Long-Tail Backlog
Owner: David Boone
Captured: end of CK demo prep session
Status: items below are deferred from the demo prep session; demo went live on staging.ordermatic.co as of GCP deploy 61cd7fe7.
P0 — verify before demo
Section titled “P0 — verify before demo”- Submit-to-ERP end-to-end against WhereFour sandbox. Smoke test verified the button enables and pricing flows correctly, but the final click was never made. No order was actually created in WhereFour. Walk through one Sysco PO and confirm the
POST sandbox.wherefour.com/api/v1/customers/{id}/orderssucceeds and the order appears in WhereFour sandbox UI. - Rename connection
093e4161from🚨 SANDBOX (E2E TEST — REVERT BEFORE LAUNCH)toCleveland Kitchen WhereFour (Demo)— the warning name is bad for demo screenshots. - Rebind email alias
cleveland-kitchen-wherefour-demo@po-staging.erpunlocked.comfrom inactivecc3f86f7to active093e4161. Currently routed via webhook payload override; real email arrivals still go to the wrong connection. - Deactivate or delete the old
cc3f86f7“Cleveland Kitchen WhereFour (Demo)” connection so it’s not a confusing duplicate.
P1 — pricing pipeline completeness
Section titled “P1 — pricing pipeline completeness”- DOT Foods to 100% (from 65.7%). The remaining 35% gap is items in DOT Foods’s order history that aren’t in their tier scrape (25 items priced, 580+ ordered). Either (a) ask CK to configure tier prices for those SKUs in WhereFour, or (b) accept the order-history fallback prices.
- 18 unresolved tier names. Top offenders by line count:
SAMS CLUB(1),Sysco TX(2),AWG Hernando(5),SB UNFI Delivered(4),Reily's Irish Bakery(6). Mostly typo/branch-level mismatches. Could add hand-curated aliases or fix WhereFour-side naming. - Extend Playwright scrape to capture customer → price_tier_id link from WhereFour’s
/customers?page=*HTML table (columnPrice Tier). Today’s fuzzy resolver is good but not perfect; direct mapping eliminates ambiguity. - Wire
wherefour_pricing_tiers_to_rules.pyinto a Dagster asset/job. Right now it’s only callable via the one-shot scriptscripts/sync_wherefour_tier_rules.py. After next pipeline run the tier rules will get rebuilt; this op needs to be in the pipeline, not orphaned. - Backfill
erp_customersPostgres table for sandbox connection. Currently 0 rows; 723 customers exist in Typesense + 392 inerp_effective_prices. The customer-multiplier fallback in pricing-calculator.ts can’t run without these.
P1 — eval ground-truth cleanup
Section titled “P1 — eval ground-truth cleanup”- 4 customers with 0% price accuracy + 100% gold-hit rate:
1360628(CK Sales Dept #400),984995(CK Expo Team),1354117(CK Marketing Team Dept #300),1569317(HEB San Antonio). First three are internal CK accounts with intentionally non-standard pricing; should be flagged or excluded from the eval.1569317is a real customer worth investigating.
P1 — xref refactor
Section titled “P1 — xref refactor”-
xref_productsGold table is P21-shaped, not WhereFour-shaped. Hasinv_mast_uid,their_uom,company_id(P21 columns). 0 rows for CK connection. A WhereFour xref is{erp_customer_id, their_item_text, our_inventory_id, last_seen}mined fromextracted_order_itemsvalidation history. Build the new shape post-demo.
P2 — UI/UX
Section titled “P2 — UI/UX”These are being dispatched via
/plan-and-dispatchas a separate work stream. See “Dispatched UI bugs” below.
P2 — CI / infra
Section titled “P2 — CI / infra”- “Multiple versions of pnpm”
detectjob failure onWebapp/Dagster/Temporal — Build and Deployworkflows. Hit PR #925 and PR #926 alike — pre-existing infra bug. Coolify-based legacy deploys are failing on this; GCP Deploy works. - 4 pre-existing test failures in
Test Web Service(unit):orders-inbox-redirect.test.ts,CustomersDirectory.test.tsx,RailNav.test.tsx(×6). Not introduced by #926; need separate fix-up.
P2 — Pre-existing review feedback
Section titled “P2 — Pre-existing review feedback”- Inbox default tab =
userhides org-level emails. Customer-mode emails toorg-level alias don’t appear in the default cockpit view; users must switch to?tab=organizationor?tab=all. Either change the default for orgs with org-level aliases or add a “you have org emails” hint on the user tab. - CodeRabbit findings not addressed (pre-existing on staging, not from #926):
apps/webapp/src/pages/customers/[combinedId]/index.astrorow-array runtime check,packages/pdf-shared/pdf_shared/utils/local_prompts.pyempty-chunks rule.
P3 — Misc
Section titled “P3 — Misc”- Coolify legacy deploys (Hetzner) for staging are failing and irrelevant —
staging.ordermatic.cois on GCP Cloud Run. Either retire the Coolify workflows or make them no-op cleanly so they don’t pollute the PR check view. -
extractedOrderStatusdead column in inbox.astro projection was removed but should be added back if we actually want to surface “extraction failed” / “extraction completed” badges in the inbox cockpit row.
Dispatched UI bugs (separate work stream)
Section titled “Dispatched UI bugs (separate work stream)”The following are being dispatched via /plan-and-dispatch in a separate Linear ticket batch:
- Action items page mismatch with cockpit: 3 items show “Needs fix” in the inbox cockpit but the Action items page is empty.
Earchive shortcut requiresXfirst: pressingEalone on a focused inbox item does nothing; only works after pressingX(mark error). Should work standalone.- No archive view: archived items go… somewhere. There’s no UI surface to see archived work_items.
- Caret icon in top-left navigation chrome: replace with the Ordermatic brand mark.
- Full logo when sidebar is expanded: replace mark-only with full Ordermatic logo on expansion.
Reference
Section titled “Reference”- Demo prep commits squashed into staging at
6b7c9334 - Promoted to gcp-staging at
61cd7fe7 - GCP deploy successful at
25839101289(15 min) - Eval baseline → after-fixes: gross price accuracy
87.78% → 91.30%, bucket accuracy unchanged at99.96%