# Verification log

## Stage 1 — discovery (2026-09-05)
- 90 Maps SERP calls, $0.180 actual (ledger). 118 restaurants kept after dedupe on place_id, category filter, and 3.22 km radius. Max distance 3.216 km. 0 duplicate place_ids.
- Browser spot-check of 5 random listings on google.com/maps by place_id: name, address, rating and review count matched the dataset exactly for all 5
  (Chilangolandia La Capital de Taco 3.9/11; Taqueria y Sandwichera El Cerrito 5.0/10; Cocina Casera 4.8/179; Huong Xua 4.4/62; Taqueria La Flor de Puebla 5.0/5).

## Stage 2 — enrichment
- 118/118 Google Business profiles via my_business_info/live. Measured live rate $0.0054 per profile (reference sheet said $0.0015 — that is the standard-queue rate).
- 118 review tasks posted, 118 collected; 1,349 review rows across 111 places (7 places have no reviews).
- Google provides a Menu link for 62/118, a website for 92/118, a description for 83/118, review-topic chips for 99/118.

## Stage 3 — menus and prices
- Menu URL resolution over 118 restaurants: 48 Google Menu links, 24 website menu paths, 17 homepages, 29 with no URL from Google. Only 25 exposed >= 5 prices to a plain HTTP fetch (the rest render client-side or are images).
- Firecrawl JSON extraction attempted on 61 restaurant pages (about 325 credits). 22 yielded itemized menus (20 full, 2 thin). Pizza Gallery parsed from cached HTML (Squarespace menu block).
- Three extractions were REJECTED as fabricated: Salvadorean Bakery (items mirrored the prompt's section list), Yum Yum Cafe (a cheeseburger and avocado toast at a Chinese restaurant), Zenshi (every item $10). Two Google-supplied URLs were wrong: Loco Fresh pointed at a Royal Caribbean cruise page; Sap Sap's menu link is a disconnected Wix domain.
- National chains (16) excluded from item extraction: their menu pages carry no store-level prices.
- Hand verification of 40 sampled items across 22 restaurants, each opened at its source in the browser: 33 correct, 1 incorrect (Patrick's macadamia cookie $5.25 on site vs $5.00 extracted), 6 unverifiable in the browser (Popmenu widget, Cloudflare challenge, drink section not rendered). Accuracy among verifiable items: 33/34 = 97.1%. Gate (>= 90%) passed. Detail: data/price_verification_sample.csv.

## Stage 4 — nutrition matching
- FNDDS 2021-2023 (FoodData Central survey foods, Oct 2024 release), 5,432 foods. Match accepted at token-set score >= 75 after translation and penalties; 433/771 items (56%) matched, 327/525 mains.
- Eyeball check of 20 random main-dish matches, twice. Before tuning: 6/20 poor proxies. After adding a protein-mismatch penalty, non-dish exclusion (tea, butter, sauces), single-word-query damping, and a 150 g minimum portion for mains: 4-5/20 remain loose proxies (e.g. a combo plate matched to a generic stew). Treat FNDDS calories as order-of-magnitude estimates; the health score blends them at 60% with the transparent rules layer at 40%.

## Stage 5 — ranking sanity
- Headline ranking restricted to item_type = main with price >= $6 (single tacos, add-ons and sides ranked separately). Top 50 contains no drinks or desserts. Top 10 read against source menus: all are real, currently listed items.

## Spend (from ~/.config/claude-seo/dataforseo-ledger.json, 2026-09-05)
- Maps SERP $0.182, business profiles $0.637, reviews $0.177. Total DataForSEO: $0.996. Firecrawl: ~325 credits. USDA: free.
