product · verification engine
Anyone can scrape a menu page. The engine below exists to answer a harder question: is this dish, at this price, actually on the restaurant's own menu right now — and can you check?
source site / PDF
│
▼
┌───────────┐ ┌───────────┐ ┌───────────┐
│ CRAWL │ ─▶ │ PARSE │ ─▶ │ VERIFY │
└───────────┘ └───────────┘ └─────┬─────┘
│
┌─────────────────┴────────────────┐
▼ ▼
confirmed not confirmed
│ │
▼ ▼
grade: verified grade: crawled / scanned / none
│ │
└───────────┬──────────────────────┘
▼
receipt: source_url + verified_at
│
▼
nightly reconciliation → re-gradeLocate the restaurant's own site, detect the platform, and find the dine-in menu — HTML page, JS-rendered app, or PDF.
Extract items, sections, prices, and diet tags in the structure the restaurant published them in.
Re-read the extracted items against the source document — HTML text or PDF text layer — item by item.
Assign the record a grade: verified / crawled / scanned / none. Unreadable sites get unavailable plus a reason code.
Store source_url and verified_at with the record so any claim can be re-checked by you, not just by us.
Nightly reconciliation re-runs sources, diffs against what we hold, and re-grades anything that moved.
Many brands serve one menu across every location. When a brand domain is detected, a single verified read propagates to all locations sharing that menu — 21 locations verified from one read, in the recorded run on the demo page.