hey.food

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

  1. 01

    Resolve

    Identify the restaurant or search area from the request and available authorized context. Missing location becomes a clarification, not an invented coordinate.

  2. 02

    Locate

    Build and rank menu candidates from known sources, restaurant links, common menu paths, platform signals, and bounded discovery.

  3. 03

    Extract

    Choose an acquisition path for the source format, normalize items and sections, and preserve source and timing provenance.

  4. 04

    Verify

    Check the extracted source against restaurant identity before canonical persistence. A mismatch blocks publication.

  5. 05

    Evaluate

    Apply the active dietary graph while preserving which household member each concern affects.

  6. 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 → provenance

The 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?"