AGENT / RESTAURANTS
Restaurant answers with an evidence trail
Restaurant guidance is an active hosted-agent workflow. The native Rust client sends the request; hello.food resolves identity, location, menu evidence, and the active dietary graph before answering.
heyfood ask "Find a Thai restaurant nearby that works for everyone in my household"One request, distinct operations
- 01
Resolve
Identify the restaurant or search area from the request and available authorized context. Missing location becomes a clarification, not an invented coordinate.
- 02
Locate
Build and rank menu candidates from known sources, restaurant links, common menu paths, platform signals, and bounded discovery.
- 03
Extract
Choose an acquisition path for the source format, normalize items and sections, and preserve source and timing provenance.
- 04
Verify
Check the extracted source against restaurant identity before canonical persistence. A mismatch blocks publication.
- 05
Evaluate
Apply the active dietary graph while preserving which household member each concern affects.
- 06
Explain
Keep restaurant fit, item-level safety, confidence, unknowns, and questions separate in the response.
Locate and extract is a single authority boundary
Menu acquisition does not let each caller invent its own scraper. Realtime requests, workers, revalidation, and scheduled watches route through the same service boundary. It returns the selected source, rejected candidates with typed reasons, identity evidence, extraction summary, confidence, stage timings, and a typed failure when the budget expires.
POST /v2/menu/locate-and-extract
candidate discovery → URL triage → extraction → identity verify
→ canonical persistence → provenanceThe direct endpoint is an internal, admin-or-service surface. The public CLI reaches the capability through restaurant agent workflows. Chain locations can inherit one gated canonical parent menu rather than creating silent copies for every location.
Freshness is a versioned menu problem
A fresh acquisition can produce a new canonical snapshot and a price-inclusive diff. Menu Watch applies that same path on a stored, restaurant-local cadence rather than comparing raw HTML or running a parallel extraction system.
Useful restaurant turns
heyfood item "pad thai at Pismo's"
heyfood ask "Compare the best dinner options at this restaurant for Maya and me"
heyfood ask "What should I ask the kitchen before ordering?"