Hot Dogs on Archived Menus: the pairs, the funnel and the scoreboard
Every same-item price pair the desk found, with the archive link for each earlier and later capture, the funnel from 1,930 restaurants to 7, the seven predictions as written and as scored, and the home-cost series. All numbers are from the desk’s own report files, reproduced below with their hashes.
The 19 same-item pairs
Same restaurant, same item name and description, priced at both ends, at least four years apart. CPI is BLS food away from home (seasonally adjusted), matched to the capture months. “CPI-implied” is the earlier price times (1 + that CPI change). Source: pairs_v2.csv, sha256 16a57a82f6cefd3536641ba6d9aa23a09a3357cbc42e523344294407478960ef.
| Restaurant | Item | Earlier | $ | Later | $ | Change | CPI FAFH | CPI-implied $ | Captures |
|---|---|---|---|---|---|---|---|---|---|
| Sliders Diner (san-francisco) | Hot Link | 20160304 | 4.75 | 20211130 | 5.95 | +25.3% | +20.9% | 5.74 | earlier · later |
| Windy City Gyros (chicago) | Hot Dog | 20160609 | 2.50 | 20210923 | 4.10 | +64.0% | +18.5% | 2.96 | earlier · later |
| Windy City Gyros (chicago) | Chili Dog | 20160609 | 2.90 | 20210923 | 4.75 | +63.8% | +18.5% | 3.44 | earlier · later |
| Plush Pup (chicago) | CHAR GRILLED DOG | 20160620 | 2.25 | 20230510 | 6.25 | +177.8% | +34.4% | 3.02 | earlier · later |
| Plush Pup (chicago) | DOUBLE DOG | 20160620 | 3.25 | 20230510 | 8.25 | +153.8% | +34.4% | 4.37 | earlier · later |
| Plush Pup (chicago) | CHEESE DOG | 20160620 | 2.60 | 20230510 | 7.25 | +178.8% | +34.4% | 3.49 | earlier · later |
| Plush Pup (chicago) | CHILI DOG | 20160620 | 2.60 | 20230510 | 7.25 | +178.8% | +34.4% | 3.49 | earlier · later |
| Mr. Greek Gyros (chicago) | Vienna Beef Hot Dog | 20160619 | 3.49 | 20210621 | 5.35 | +53.3% | +16.4% | 4.06 | earlier · later |
| Mr. Greek Gyros (chicago) | Vienna Beef Double Dog | 20160619 | 4.09 | 20210621 | 7.65 | +87.0% | +16.4% | 4.76 | earlier · later |
| Mr. Greek Gyros (chicago) | 3. Vienna Beef Hot Dog | 20160619 | 5.19 | 20210621 | 8.05 | +55.1% | +16.4% | 6.04 | earlier · later |
| The Burger Point (chicago) | Spanish Revolution Hot Dog | 20210125 | 5.25 | 20250623 | 6.10 | +16.2% | +27.4% | 6.69 | earlier · later |
| The Burger Point (chicago) | Chili Cheese Dog | 20210125 | 5.00 | 20250623 | 6.30 | +26.0% | +27.4% | 6.37 | earlier · later |
| The Burger Point (chicago) | Maxwell Street Hot Dog | 20210125 | 4.25 | 20250623 | 6.10 | +43.5% | +27.4% | 5.41 | earlier · later |
| SoHo Park (new-york) | Grilled Kosher Hot Dog | 20160714 | 3.50 | 20250320 | 3.50 | +0.0% | +43.8% | 5.03 | earlier · later |
| The Kitchen Sink † (new-york) | 2 New York Style Dogs | 20201204 | 9.50 | 20251210 | 9.50 | +0.0% | +30.2% | 12.37 | earlier · later |
| The Kitchen Sink † (new-york) | 2 Brooklyn Style Dogs | 20201204 | 12.50 | 20251210 | 12.50 | +0.0% | +30.2% | 16.28 | earlier · later |
| The Kitchen Sink † (new-york) | 2 Tacos Dogs | 20201204 | 12.50 | 20251210 | 12.50 | +0.0% | +30.2% | 16.28 | earlier · later |
| The Kitchen Sink † (new-york) | 2 Chili Cheese Dogs | 20201204 | 12.50 | 20251210 | 12.50 | +0.0% | +30.2% | 16.28 | earlier · later |
| The Kitchen Sink † (new-york) | 2 Hawaiian Dogs | 20201204 | 12.50 | 20251210 | 12.50 | +0.0% | +30.2% | 16.28 | earlier · later |
† The Kitchen Sink: the 2020-12-04 and 2025-12-10 captures render as the identical 311-item list (same sections, names, descriptions and prices). Each of its five items is an order of two dogs.
Restaurant level, and a sensitivity the desk added
| Set | Restaurants | Item pairs | Median change | Median CPI FAFH | Above CPI |
|---|---|---|---|---|---|
| All pairs (report, one value per restaurant = mean of its pairs) | 7 | 19 | 28.57% | 27.4% | 5 of 7 |
| Same, without The Kitchen Sink (added here; not in the report) | 6 | 14 | 46.23% | 24.1% | 5 of 6 |
| Item level, all pairs (report) | 7 | 19 | 43.5% | 30.2% | 11 of 19 |
| Item level, without The Kitchen Sink (added here) | 6 | 14 | 59.5% | 27.4% | 11 of 14 |
Per restaurant (mean of its pairs vs its CPI): Sliders Diner +25.3% vs +20.9%; Windy City Gyros +63.9% vs +18.5%; Plush Pup +172.3% vs +34.4%; Mr. Greek Gyros +65.1% vs +16.4%; The Burger Point +28.6% vs +27.4%; SoHo Park +0.0% vs +43.8%; The Kitchen Sink +0.0% vs +30.2%. The report’s bootstrap 95% interval on the median item-level excess over FAFH is (-30.2, 45.5) pp.
Entry price: 20 restaurants with a priced dog at two ends four or more years apart
Entry price = the cheapest qualifying hot-dog item on the first and on the last usable capture (multi-piece orders, kids items, combos, bulk and catering excluded). Items may differ between the two ends. Source: v3/restaurant_first_last.csv in the desk’s job folder.
| Restaurant | First | Last | Entry $ first | Entry $ last | Change | CPI FAFH | Entry item first | Entry item last | Captures |
|---|---|---|---|---|---|---|---|---|---|
| Sliders Diner (san-francisco) | 20160304 | 20211130 | 3.95 | 5.75 | +45.6% | +20.9% | Hot Dog | Hot Dog | first · last |
| Barney's Gourmet Hamburgers (san-francisco) | 20160701 | 20210226 | 5.95 | 10.25 | +72.3% | +14.3% | Barney's Kosher Hot Dog | Barney's Hot Dog | first · last |
| Holy Grill (san-francisco) | 20160613 | 20210411 | 4.95 | 6.50 | +31.3% | +15.0% | Dogma Hot Dog | Dogma Dog | first · last |
| Windy City Gyros (chicago) | 20160609 | 20210923 | 2.50 | 4.10 | +64.0% | +18.5% | Hot Dog | Hot Dog | first · last |
| Plush Pup (chicago) | 20160620 | 20230510 | 2.25 | 6.25 | +177.8% | +34.4% | CHAR GRILLED DOG | Plush Pup Dog | first · last |
| El Gran Burrito (chicago) | 20160810 | 20210512 | 2.20 | 4.25 | +93.2% | +15.1% | Hot Dog | Hot Dog | first · last |
| The Bagel Restaurant & Deli (chicago) | 20191119 | 20250908 | 8.95 | 13.75 | +53.6% | +34.2% | Jumbo Frankfurter Sandwich | Jumbo Frankfurter Sandwich | first · last |
| Firehouse Grill (chicago) | 20160701 | 20210614 | 2.25 | 3.49 | +55.1% | +16.2% | Hot Dog | Hot Dog Only | first · last |
| Stanley's Grill (chicago) | 20160714 | 20210516 | 3.90 | 4.99 | +27.9% | +15.4% | Hot Dog | Maxwell Street Style Polish Hot Dog | first · last |
| Mr. Greek Gyros (chicago) | 20160619 | 20210621 | 3.49 | 5.35 | +53.3% | +16.4% | Vienna Beef Hot Dog | Vienna Beef Hot Dog | first · last |
| The Burger Point (chicago) | 20210125 | 20250623 | 4.00 | 5.70 | +42.5% | +27.4% | Build Your Own Chicago Style Hot Dog | Chicago Style Hot Dog | first · last |
| Mom & Dads Deli (chicago) | 20171224 | 20220814 | 2.45 | 3.25 | +32.7% | +23.0% | All Beef Hot Dog | Chili Dog | first · last |
| Brooklyn Diner (new-york) | 20160726 | 20220116 | 21.75 | 21.95 | +0.9% | +21.4% | Famous Hot Dog | 15-Bite All-Beef Frankfurter | first · last |
| Astro Restaurant (new-york) | 20160910 | 20220116 | 4.95 | 6.95 | +40.4% | +21.0% | Plain | The Plain Dog | first · last |
| SoHo Park (new-york) | 20160714 | 20250320 | 3.50 | 3.50 | +0.0% | +43.8% | Grilled Kosher Hot Dog | Grilled Kosher Hot Dog | first · last |
| Westville (new-york) | 20160910 | 20250124 | 3.50 | 4.00 | +14.3% | +42.2% | Hebrew National | Hebrew National Hot Dog | first · last |
| Pastrami Queen (new-york) | 20160624 | 20220524 | 18.95 | 4.95 | -73.9% | +24.2% | Three Frankfurters | Frankfurter | first · last |
| 3 Guys Restaurant (new-york) | 20201108 | 20250119 | 19.00 | 23.00 | +21.1% | +25.9% | Double Kosher Hot Dog | Double Hot Dog | first · last |
| Westville (East) (new-york) | 20160720 | 20250116 | 11.00 | 4.00 | -63.6% | +42.8% | Hebrew National | Hebrew National Hot Dog | first · last |
| Bella Donna Italian Subs (austin) | 20160612 | 20201128 | 2.50 | 3.99 | +59.6% | +13.6% | NY Pushcart Dog | N.Y. Pushcart Dog Lunch | first · last |
The funnel
Frame: 1,930 restaurant menu pages (non-excluded) in the Hugging Face dataset jdnvn/menu-items-allmenus. Stage B targets: the 137 “hot-dog-now” restaurants plus a seeded random subset of 150 (13 overlap) = 274.
| City | Frame | Hot-dog-now | Random subset | Stage B targets | CDX answered | ≥1 capture | ≥1 parseable priced | ≥2 priced | Qualifying dog on any | Matched pair (≥4 y) |
|---|---|---|---|---|---|---|---|---|---|---|
| austin | 270 | 10 | 17 | 27 | 27 | 12 | 10 | 5 | 3 | 0 |
| boston | 334 | 16 | 22 | 37 | 37 | 25 | 24 | 12 | 7 | 0 |
| chicago | 426 | 62 | 40 | 93 | 93 | 68 | 65 | 37 | 43 | 4 |
| new-york | 449 | 28 | 36 | 63 | 63 | 48 | 48 | 36 | 16 | 2 |
| san-francisco | 451 | 21 | 35 | 54 | 54 | 37 | 36 | 17 | 12 | 1 |
| ALL | 1,930 | 137 | 150 | 274 | 274 | 190 | 183 | 107 | 81 | 7 |
Matched pairs: 19 item pairs in 7 restaurants. Entry-price comparison: 20 restaurants (includes changed items). Snapshots fetched: 360 returned a page (one 404); 347 parseable (298 JSON-LD, 49 HTML list), 13 not (11 unrecognised template, 2 geo-block stubs).
Snapshots by capture year
| Year | Snapshots | Parseable | With prices |
|---|---|---|---|
| 2009 | 1 | 0 | 0 |
| 2010 | 2 | 0 | 0 |
| 2012 | 1 | 1 | 1 |
| 2014 | 1 | 1 | 1 |
| 2016 | 50 | 47 | 45 |
| 2017 | 9 | 9 | 9 |
| 2019 | 59 | 56 | 56 |
| 2020 | 36 | 34 | 34 |
| 2021 | 130 | 130 | 130 |
| 2022 | 33 | 33 | 33 |
| 2023 | 8 | 7 | 7 |
| 2024 | 5 | 4 | 4 |
| 2025 | 20 | 20 | 20 |
| 2026 | 5 | 5 | 5 |
The first design, for the record
A random sample of 36 live restaurant websites (12 each in New York, Chicago and Houston) matched against the Wayback Machine produced 0 priced hot dogs and 0 matched pairs. A live-menu screen of 514 more non-budget-stratum menus found a priced hot-dog line on 11 (2.1%). The design was dropped and the AllMenus design built. Full text of that report is at the bottom of this page.
Arrivals and drops: the random subset, 17 restaurants
Restaurants from the seeded random subset with a menu of at least 10 priced items at two ends four or more years apart. “neither” = no qualifying hot dog at either end. Source: v3/arrivals_random_subset.csv.
| Restaurant | Earlier | Later | Dogs earlier | Dogs later | Result | Captures |
|---|---|---|---|---|---|---|
| Sunflower Diner (new-york) | 20160910 | 20220119 | 0 | 0 | neither | earlier · later |
| Silver Seafood Chinese Restaurant (chicago) | 20190825 | 20260611 | 0 | 0 | neither | earlier · later |
| Shun Lee Palace (new-york) | 20160703 | 20210412 | 0 | 0 | neither | earlier · later |
| Squires Diner (new-york) | 20160910 | 20210124 | 0 | 0 | neither | earlier · later |
| Buena Vista Restaurant (chicago) | 20160702 | 20211202 | 0 | 0 | neither | earlier · later |
| Akiko's Sushi Bar (san-francisco) | 20160621 | 20201125 | 0 | 0 | neither | earlier · later |
| Burger Joint (new-york) | 20160618 | 20220524 | 0 | 0 | neither | earlier · later |
| Manuels (austin) | 20171201 | 20250121 | 0 | 0 | neither | earlier · later |
| Lucky's Lounge (boston) | 20160630 | 20211026 | 0 | 0 | neither | earlier · later |
| Deli On Madison (new-york) | 20160714 | 20211016 | 0 | 0 | neither | earlier · later |
| La Lanterna di Vittorio (new-york) | 20160701 | 20211205 | 0 | 0 | neither | earlier · later |
| Nikko Hibachi Asian Fusion (new-york) | 20160726 | 20260615 | 0 | 0 | neither | earlier · later |
| Montien Thai Restaurant (boston) | 20210124 | 20250715 | 0 | 0 | neither | earlier · later |
| House of Siam (boston) | 20160612 | 20211020 | 0 | 0 | neither | earlier · later |
| Saggio (new-york) | 20160619 | 20210121 | 0 | 0 | neither | earlier · later |
| Capital Restaurant (san-francisco) | 20160629 | 20210419 | 0 | 0 | neither | earlier · later |
| Astro Restaurant (new-york) | 20160910 | 20220116 | 8 | 8 | both | earlier · later |
The predictions, as written and as scored
Prediction text is from HYPOTHESES.md; verdicts and numbers are from REPORT_V2.md section 10, unedited.
| # | Prediction | Verdict | Numbers behind it |
|---|---|---|---|
| P1 | Price level: median menu hot dog price rose from about $3-4 (2016) to about $12 (now) | not supported (tentative, thin) | 2016 median item $4.25 (n=88 items, 24 restaurants), latest $7.15 (n=22 items, 14 restaurants) |
| P2 | Like-for-like: same restaurant, same item, price growth roughly in line with or above CPI food away from home | supported (tentative) | 19 item pairs in 7 restaurants; median excess over FAFH 4.4 pp (supported if >= -5 pp); median change 43.5% vs FAFH 30.2% |
| P3 | Upgrade effect: the rise is mostly not like-for-like repricing but a change in what is sold | supported | mean rise $2.55; repricing share 24% (supported if < 50%); n restaurants 20 |
| P4 | Fancier: description length, topping count and premium flags rose; the plain share fell | mixed | n=20; rose/fell words (8, 7), components (8, 6), premium (2, 3); plain 11->9 |
| P5 | Spread: the change appears across price tiers, not only the top tier | not supported (tentative) | tiers with n>=3: ['low', 'mid', 'high']; tiers whose median change >= CPI FAFH: ['low'] |
| P6 | Entry price: the cheapest hot-dog item rose from about $3-4 (2016) to about $8-10 (now), faster than CPI food away from home | not supported | n=20 restaurants; median entry $3.92 -> $5.17 (41.45% vs FAFH 21.2%; excess 17.85 pp) |
| P7 | Plain-dog survival: the share of menus with a plain dog fell; the ladder spread narrowed | not supported | plain share 55% -> 45%; median spread (restaurants with >=2 dogs both ends, n=11) $1.25 -> $2.0; n=20 |
Verdict rules (REPORT_V2.md): P1 supported if 2016 median item ≤ $5 and latest median ≥ $10; P2 supported if the restaurant-level median excess over FAFH ≥ -5 pp; P3 supported if like-for-like repricing is < 50% of the mean rise; P4 supported only if words, components and premium flags each rose more often than fell and plain-dog share fell; P5 supported if every tier with n≥3 has median change ≥ CPI FAFH; P6 supported if median entry ≤ $5 early, $7-11 late and above FAFH; P7 supported if plain share and median ladder spread both fell. “Conclusive” needs n≥15 restaurants, “tentative” 6-14.
Price level and the decomposition
| Measure | n | Median | Mean |
|---|---|---|---|
| All qualifying dog items, 2016 captures | 88 items / 24 restaurants | $4.25 | $5.41 |
| Entry price, 2016 | 24 | $3.70 | $5.50 |
| All qualifying dog items, latest (2024 or later), hot-dog-now restaurants | 22 items / 14 restaurants | $7.15 | $8.11 |
| Entry price, latest | 14 | $8.12 | $8.52 |
| Balanced: same restaurants, first capture ≤ 2017, last ≥ 4 y later, entry price | 17 | $3.50 → $4.95 | $5.88 → $6.09 |
P3 decomposition across 20 restaurants (72 early items, 57 late items; 14 same-item at both ends, 43 new or changed at the late end, 58 dropped or changed from the early end): the mean price rose $2.55; like-for-like repricing of unchanged items accounts for $0.62 (24%), composition for $1.93. A renamed item counts as a change.
Latest captures: the 22 dog items behind P1
Qualifying hot-dog items (multi-piece orders, kids items, combos and bulk excluded) on the latest capture, 2024 or later, of the hot-dog-now restaurants: 22 items at 14 restaurants, median $7.15. Five cost $10.29 or more.
| Restaurant | Capture | Item | Description | $ | Page |
|---|---|---|---|---|---|
| 3 Guys Restaurant (new-york) | 20250119 | Double Hot Dog | Served with sauerkraut and french fries. | 23.00 | capture |
| Bravest (new-york) | 20250119 | hot dog | bkhdco beef frank, sauerkraut, mustard on brioche roll | 8.00 | capture |
| Chowder Hut (san-francisco) | 20250913 | All Beef Hot Dog | Locally made beef hot dog, fried onions, Roma tomatoes, pickle on French baguette. Best dog you'll ever have! | 9.79 | capture |
| Huck Finn Restaurant (chicago) | 20250908 | Hot Diggity Dog | Frankfurter on a hot bun with onions and relish. | 8.25 | capture |
| J.J. Foley's Cafe (boston) | 20240619 | Chill Cheese Dog Sandwich | 1/4 lb. all beef hot dog, bacon, beef and bean chili, melted cheddar and grilled hot dog roll. | 10.49 | capture |
| Lucky Grill Inc Restaurant (chicago) | 20260119 | Hot Dog Deluxe | Served with a bowl of soup and your choice of french fries, fruit or onion rings. | 11.00 | capture |
| Mr. Zee's Famous Chicken (chicago) | 20250406 | Hot Dog | Served with fries, and all the trimmings. | 5.50 | capture |
| Mr. Zee's Famous Chicken (chicago) | 20250406 | Cheese Dog | Served with fries, and all the trimmings. | 6.00 | capture |
| Original Buffalo Wings (san-francisco) | 20250113 | Polish Dog | Ketchup, mustard, relish, red onion and sauerkraut on pub hoagie roll. | 8.29 | capture |
| Original Buffalo Wings (san-francisco) | 20250113 | Hot Link | Six-inch spicy Miller hot link on pub hoagie roll. Topped with ketchup, mustard, relish, red onion and sauerkraut. | 9.29 | capture |
| Original Buffalo Wings (san-francisco) | 20250113 | Bacon-Wrapped Street Dog | Savory bacon wrapped around a Polish dog on pub hoagie roll. Topped with ketchup, mustard and grilled onions. | 10.29 | capture |
| Pauli's (boston) | 20251016 | Hot Dog | All Beef Hot Dog served on a grilled bun | 3.99 | capture |
| Pauli's (boston) | 20251016 | hot dog | 5.99 | capture | |
| Pauli's (boston) | 20251016 | double dog deal (2 hot dogs) | 8.99 | capture | |
| SoHo Park (new-york) | 20250320 | Grilled Kosher Hot Dog | 3.50 | capture | |
| The Bagel Restaurant & Deli (chicago) | 20250908 | Jumbo Frankfurter Sandwich | Served with french fries and coleslaw, with lettuce, tomato, onion, and pickle relish. | 13.75 | capture |
| The Burger Point (chicago) | 20250623 | Chicago Style Hot Dog | 1/4 lb. grass fed beef hot dogs with celery salt, peppers, mustard, tomatoes, sweet relish, onions and pickles. | 5.70 | capture |
| The Burger Point (chicago) | 20250623 | Spanish Revolution Hot Dog | 1/4 lb. grass fed beef hot dogs with our house made jalapeno relish, ranch mayo and wrapped in bacon. | 6.10 | capture |
| The Burger Point (chicago) | 20250623 | Maxwell Street Hot Dog | 1/4 lb. beef hot dog with grilled onions and mustard. | 6.10 | capture |
| The Burger Point (chicago) | 20250623 | Chili Cheese Dog | 1/4 lb. grass fed beef hot dogs with our homemade chili, shredded cheese and onions. | 6.30 | capture |
| Westville (new-york) | 20250124 | Hebrew National Hot Dog | one beef hotdog w/ choice of toppings | 4.00 | capture |
| Westville (East) (new-york) | 20250116 | Hebrew National Hot Dog | one beef hotdog w/ choice of toppings | 4.00 | capture |
2016 captures: the 88 dog items behind P1
Qualifying items on the first 2016 capture of each restaurant: 88 items at 24 restaurants, median $4.25; median of each restaurant’s cheapest, $3.70.
| Restaurant | Capture | Item | Description | $ | Page |
|---|---|---|---|---|---|
| Astro Restaurant (new-york) | 20160910 | Plain | 4.95 | capture | |
| Astro Restaurant (new-york) | 20160910 | Pepper And Onion | 100% all-beef hot dog with sauteed green peppers and onions. | 6.95 | capture |
| Astro Restaurant (new-york) | 20160910 | New York | 100% all-beef hot dog with sauerkraut, mustard and sauteed red sauce onions. | 6.95 | capture |
| Astro Restaurant (new-york) | 20160910 | Salsa | 100% all-beef hot dog with mexican salsa and melted cheddar cheese. | 6.95 | capture |
| Astro Restaurant (new-york) | 20160910 | Chicago | 100% all-beef hot dog with chopped onion and tomatoes, pickles, green relish, hot peppers and mustard. | 7.95 | capture |
| Astro Restaurant (new-york) | 20160910 | Reuben | 100% all-beef hot dog with swiss cheese, thousand island dressing and sauerkraut. | 7.95 | capture |
| Astro Restaurant (new-york) | 20160910 | Chili And Cheese | 100% all-beef hot dog with spicy chili and melted cheddar cheese. | 8.95 | capture |
| Astro Restaurant (new-york) | 20160910 | Tex Mex | 100% all-beef hot dog with spicy chili, jalapeno peppers and melted cheddar cheese. | 8.95 | capture |
| Barney's Gourmet Hamburgers (san-francisco) | 20160701 | Barney's Kosher Hot Dog | Flame broiled beef hot dog on a french roll, garnished with lettuce, tomato, pickle and red onions served with curly fries | 5.95 | capture |
| Bella Donna Italian Subs (austin) | 20160612 | NY Pushcart Dog | All-beef dog topped with mustard, onion sauce and sauerkraut. | 2.50 | capture |
| Bella Donna Italian Subs (austin) | 20160612 | Coney Island Chili Dog | All-beef dog topped with mustard, chili and cheese. | 2.50 | capture |
| BienMeSabe (chicago) | 20160627 | 3. Venezuelan Hot Dog | Onions, cabbage, potato sticks and sauces. Served with fries. | 7.95 | capture |
| Brooklyn Diner (new-york) | 20160726 | Famous Hot Dog | Housemade juniper sauerkraut, french fries | 21.75 | capture |
| Brooklyn Diner (new-york) | 20160726 | Twin Vegetarian Hot Dog | Guacamole, alfalfa sprouts, crema, pico de gallo, french fries | 21.75 | capture |
| El Gran Burrito (chicago) | 20160810 | Hot Dog | 2.20 | capture | |
| El Gran Burrito (chicago) | 20160810 | Cheese Dog | 2.40 | capture | |
| El Gran Burrito (chicago) | 20160810 | Grilled Jumbo Dog | 2.50 | capture | |
| El Gran Burrito (chicago) | 20160810 | Chili Dog | 2.60 | capture | |
| El Gran Burrito (chicago) | 20160810 | Chili Cheese Dog | 2.90 | capture | |
| El Gran Burrito (chicago) | 20160810 | Double Hot Dog | 3.00 | capture | |
| Firehouse Grill (chicago) | 20160701 | Hot Dog | 2.25 | capture | |
| Flub A Dub Chubs (chicago) | 20160619 | The Flubby | classic vienna dog | 4.25 | capture |
| Flub A Dub Chubs (chicago) | 20160619 | The Bryan | classic with mayo and tomatoes | 4.25 | capture |
| Flub A Dub Chubs (chicago) | 20160619 | The Lars | a real corn dog | 4.25 | capture |
| Flub A Dub Chubs (chicago) | 20160619 | The Willie Dog | a veggie dog fro 'sus'tenance | 4.75 | capture |
| Flub A Dub Chubs (chicago) | 20160619 | The Chubby | our signature 1/4lb. with the works | 5.00 | capture |
| Flub A Dub Chubs (chicago) | 20160619 | The Mr. Big Footlong | 5.25 | capture | |
| Flub A Dub Chubs (chicago) | 20160619 | The Flubby | with cheese | 5.25 | capture |
| Flub A Dub Chubs (chicago) | 20160619 | The Durkalski | polish | 5.25 | capture |
| Flub A Dub Chubs (chicago) | 20160619 | The Ultimate Mr. Big | chili, cheese | 5.95 | capture |
| Flub A Dub Chubs (chicago) | 20160619 | The Speiser | chili, cheese and peppers, it gives you gas | 5.95 | capture |
| Holy Grill (san-francisco) | 20160613 | Dogma Hot Dog | all natural, all beef hot dog with grilled onions. | 4.95 | capture |
| Holy Grill (san-francisco) | 20160613 | Lucifer Hot Dog | louisiana hot link, grilled onions, and jalapeños. | 5.75 | capture |
| Holy Grill (san-francisco) | 20160613 | St. Bernard Hot Dog | all natural, all beef hot dog, voodoo chili, cheddar cheese and grilled onions. | 6.25 | capture |
| Katz's Delicatessen (new-york) | 20160610 | Frankfurter | 3.95 | capture | |
| Katz's Delicatessen (new-york) | 20160610 | Chili Dog | 5.95 | capture | |
| Metro Caffe (san-francisco) | 20160713 | 25. Hot Dog | 5.95 | capture | |
| Metro Caffe (san-francisco) | 20160713 | 26. Hot Link | 5.95 | capture | |
| Metro Caffe (san-francisco) | 20160713 | 29. Chilli Cheese Dog | 6.95 | capture | |
| Morry's Deli (chicago) | 20160613 | Hot Dog | 2.75 | capture | |
| Morry's Deli (chicago) | 20160613 | Cheese Dog | 3.29 | capture | |
| Morry's Deli (chicago) | 20160613 | Chili Dog | 3.75 | capture | |
| Mr. Beef on Orleans (chicago) | 20160702 | Hot Dog | 3.50 | capture | |
| Mr. Beef on Orleans (chicago) | 20160702 | Chili Dog Or Cheese Dog | 4.00 | capture | |
| Mr. Beef on Orleans (chicago) | 20160702 | Hot Dog | with fries | 4.50 | capture |
| Mr. Greek Gyros (chicago) | 20160619 | Vienna Beef Hot Dog | 3.49 | capture | |
| Mr. Greek Gyros (chicago) | 20160619 | Vienna Beef Hot Dog | with fries | 3.89 | capture |
| Mr. Greek Gyros (chicago) | 20160619 | Vienna Beef Double Dog | 4.09 | capture | |
| Mr. Greek Gyros (chicago) | 20160619 | Vienna Beef Double Dog | with french fries | 4.69 | capture |
| Mr. Greek Gyros (chicago) | 20160619 | Vienna Beef Chili Dog | with fries | 4.99 | capture |
| Mr. Greek Gyros (chicago) | 20160619 | Vienna Beef Cheddar Cheese Dog | with fries | 4.99 | capture |
| Mr. Greek Gyros (chicago) | 20160619 | 3. Vienna Beef Hot Dog | 5.19 | capture | |
| Pastrami Queen (new-york) | 20160624 | Three Frankfurters | With baked beans or french fries | 18.95 | capture |
| Pastrami Queen (new-york) | 20160624 | Frankfurters | 19.95 | capture | |
| Plush Pup (chicago) | 20160620 | CHAR GRILLED DOG | 2.25 | capture | |
| Plush Pup (chicago) | 20160620 | CORG DOG | 2.25 | capture | |
| Plush Pup (chicago) | 20160620 | CHEESE DOG | 2.60 | capture | |
| Plush Pup (chicago) | 20160620 | CHILI DOG | 2.60 | capture | |
| Plush Pup (chicago) | 20160620 | CHEESE and CHILI DOG | 2.95 | capture | |
| Plush Pup (chicago) | 20160620 | DOUBLE DOG | 3.25 | capture | |
| Plush Pup (chicago) | 20160620 | JUMBO DOG | 3.25 | capture | |
| Sammy's Breakfast (chicago) | 20160622 | Beef Hot Dog | 2.49 | capture | |
| Sammy's Breakfast (chicago) | 20160622 | Jumbo Beef Hot Dog | 3.75 | capture | |
| Sliders Diner (san-francisco) | 20160304 | Hot Dog | 3.95 | capture | |
| Sliders Diner (san-francisco) | 20160304 | Cheese Dog | hot dog grilled and topped with melted american cheese | 4.25 | capture |
| Sliders Diner (san-francisco) | 20160304 | Hot Link | quarter pound all beef louisiana hot link | 4.75 | capture |
| Sliders Diner (san-francisco) | 20160304 | Chili Dog | hot dog smothered with chili topped with shredded cheddar cheese and diced onions | 5.25 | capture |
| SoHo Park (new-york) | 20160714 | Grilled Kosher Hot Dog | 3.50 | capture | |
| Stanley's Grill (chicago) | 20160714 | Hot Dog | w/fries. everything includes: mustard, relish, freshly chopped onions, sliced red ripe tomatoes, kosher pickle and sport pepper. | 3.90 | capture |
| Stanley's Grill (chicago) | 20160714 | Cheese Dog | w/fries. | 4.15 | capture |
| Stanley's Grill (chicago) | 20160714 | Chili Dog | w/fries. | 4.20 | capture |
| Stanley's Grill (chicago) | 20160714 | Chili Cheese Dog | w/fries. | 4.30 | capture |
| Tapia's Pizzeria (chicago) | 20160829 | Hot Dog | 3.50 | capture | |
| Westville (new-york) | 20160910 | Hebrew National | Kosher beef | 3.50 | capture |
| Westville (new-york) | 20160910 | Vegan | Soy hot dog (hot dog buns not vegan) | 3.50 | capture |
| Westville (new-york) | 20160910 | Niman Ranch Fearless Franks | Naturally raised beef | 5.50 | capture |
| Westville (East) (new-york) | 20160720 | Hebrew National | Kosher beef $3.50 | 11.00 | capture |
| Westville (East) (new-york) | 20160720 | Vegan | Soy hot dog hot dog buns not vegan $3.5 | 11.00 | capture |
| Westville (East) (new-york) | 20160720 | Niman Ranch Fearless Franks | Naturally raised beef $5.00 | 13.00 | capture |
| Windy City Gyros (chicago) | 20160609 | Hot Dog | 2.50 | capture | |
| Windy City Gyros (chicago) | 20160609 | Chili Dog | 2.90 | capture | |
| Windy City Gyros (chicago) | 20160609 | Cheese Dog | 2.90 | capture | |
| Windy City Gyros (chicago) | 20160609 | Hot Dog | w/ fries | 3.50 | capture |
| Windy City Gyros (chicago) | 20160609 | Chili Dog | w/ fries | 3.90 | capture |
| Windy City Gyros (chicago) | 20160609 | Cheese Dog | w/ fries | 3.90 | capture |
| Windy City Gyros (chicago) | 20160609 | D. Hot Dog | w/ fries | 4.40 | capture |
| Windy City Gyros (chicago) | 20160609 | D. Chili Dog | w/ fries | 4.90 | capture |
| Windy City Gyros (chicago) | 20160609 | D. Cheese Dog | w/ fries | 4.90 | capture |
Home cost per hot dog, 2016 to 2026
One frankfurter (8 per lb) + one bun + condiments, from BLS series. “Low” and “high” differ only in the bun assumption. Source: homecost.csv, sha256 7afadc5d277f4df6b411bf4cb90c50bae996157d04bf36e7fff57739485cf407; series and method in HOMECOST.md below.
| Month | Frank $ | Home $ (low) | Home $ (high) | CPI FAFH | CPI all items |
|---|---|---|---|---|---|
| 2016-01 | 0.434 | 0.60 | 0.70 | 260.0 | 236.9 |
| 2016-06 | 0.385 | 0.54 | 0.63 | 262.5 | 241.0 |
| 2017-06 | 0.325 | 0.48 | 0.57 | 268.2 | 245.0 |
| 2018-06 | 0.346 | 0.49 | 0.58 | 275.8 | 252.0 |
| 2019-06 | 0.358 | 0.51 | 0.60 | 284.3 | 256.1 |
| 2020-06 | 0.458 | 0.62 | 0.73 | 293.2 | 257.8 |
| 2021-06 | 0.467 | 0.64 | 0.74 | 305.6 | 271.7 |
| 2022-06 | 0.674 | 0.86 | 0.98 | 329.0 | 296.3 |
| 2023-06 | 0.654 | 0.87 | 1.01 | 354.2 | 305.1 |
| 2024-06 | 0.699 | 0.92 | 1.06 | 368.6 | 314.2 |
| 2025-06 | 0.715 | 0.93 | 1.06 | 382.8 | 322.6 |
| 2026-06 | 0.767 | 0.98 | 1.11 | 395.6 | 334.0 |
| 2026-08 | 0.760 | 0.97 | 1.10 | 397.9 | 335.0 |
2016-01 to 2026-08: home cost +63.1% (low) and +58.0% (high); CPI food away from home +53.1%; CPI all items +41.4%. The frankfurter average price (BLS APU0000705111) stops after April 2022 and was extended with the CPI frankfurters index from there. Over January 2016 to April 2022 the average-price series rose 50.3% and the CPI frankfurters index rose 18.5%, so the home-cost result depends on which BLS measure is used; the CPI-only sensitivity (anchored at the August 2026 level) puts the 19-pair median at +27.0% against +52.5% for the low case. Chmura’s 2026 Hot Dog Index reports $0.80 to $1.28 per dog across five cities and +24.7% since May 2019 (Cincinnati); the desk’s series for May 2019 to August 2026 is larger and the difference is unresolved.
Hypotheses (written before results)
Source file HYPOTHESES.md, sha256 a8902afa98f4ce322938ed4ef7770284431e1949b55807a3e434cc5ba9ccc61d. File last modified 2026-10-05 14:06:44 PDT; the earliest pilot result file on the machine is stamped 18:28 the same day.
# Hot dog menu study — hypotheses written BEFORE any pilot or full-run result was read Written 2026-10-05T21:05:47Z at Mike's direction. Do not edit after results are read; append amendments below with a date. ## Mike's hypothesis (his words, condensed) In 2016 hot dogs on restaurant menus were mostly plain builds (mustard and ketchup, a Chicago dog, relish) at about $3, maybe $4. Now they are loaded builds (e.g. macaroni and cheese, hot sauce, bacon) at about $12.50. So: the hot dog got much fancier AND much more expensive, probably faster than inflation. ## Testable predictions (non-budget restaurants only; NOT dedicated hot dog stands, quick-service or chains) P1 Price level: median menu hot dog price rose from about $3-4 (2016) to about $12 (now). CAUTION written in advance: in non-budget sit-down restaurants the 2016 price may already have been well above $4, or the item may not have been on the menu. The study measures what 2016 menus actually show; Mike's $3-4 recollection may come from cheaper venues. P2 Like-for-like: for the SAME restaurant and SAME item (name and description unchanged), price growth 2016 -> now vs CPI food-away-from-home and CPI all-items over the same dates. Prediction: roughly in line with or above food-away-from-home CPI. P3 Upgrade effect: the total rise in hot dog prices is mostly NOT like-for-like repricing but a change in what is sold (a plain dog replaced or joined by a loaded build). Measured by decomposing the median price rise into (a) same-item repricing and (b) item-changed or newly added items. P4 Fancier: description length, topping/component count and premium-ingredient flags rose between early and late snapshots; the share of plain/classic descriptions fell. Fixed scoring rules are in the extraction code; do not change them after seeing results. P5 Spread: the change appears across price tiers (burger-price terciles), not only the top tier. ## What would count against it - Like-for-like prices lagging CPI AND no rise in fanciness scores -> hypothesis not supported. - Large growth only where the item changed -> supports P3 but not "the same hot dog got dearer". - Few non-budget menus carrying a hot dog in 2016 -> the story is "hot dogs arrived on mid-range menus", not "got fancier"; report that instead. ## Not testable here (stated up front) - Why restaurants did it (consumer preference vs restaurant economics). Menus show what changed, not the cause; the piece may say "consistent with", never "caused by". Survivors only (restaurants still open now) and the Wayback Machine's uneven coverage limit every result. <!-- amendment logged 2026-10-05T21:06:44Z --> ## AMENDMENT (appended by Mike's side before the desk read any results; the pilot was already running) Mike: the loaded builds (a mac-and-cheese dog; a jalapeno and cream cheese dog with chili oil) priced around $12.50 mean that a regular hot dog now costs about $8, $9 or $10. P6 Entry price: the cheapest hot-dog item on a non-budget menu (the entry or plain dog) rose from about $3-4 (2016) to about $8-10 (now), faster than CPI food-away-from-home, because the loaded builds reset what a "hot dog" costs. P7 Plain dog survival: the share of menus offering a plain/classic dog fell between early and late snapshots; where one survives, it is priced closer to the loaded builds (the ladder spread narrowed) rather than far below. Counts against P6/P7: entry price tracking CPI, a plain dog still offered at a low price on most menus, or a ladder spread that widened. Mike's $8-10 and $3-4 figures are recollections, not data; the study reports what the menus show.
Hand check of the 19 pairs
Source file HANDCHECK_V2.md, sha256 ccfc0243f16fe14e2ebf5cbffc391e840bda97bb2b761eeba6849da660d4c4c5.
# HANDCHECK_V2 (2026-10-06) Pairs checked: all 19 matched item pairs (7 restaurants; 38 item-price reads, old+new end), archive URLs for every pair in pairs_v2.csv (url_old/url_new); page-text/JSON-LD context printed in v3/handcheck_raw_output.txt (its automatic MATCH/MISMATCH flags are unreliable for JSON-LD pages; the verdict below is from reading the printed context). Method note: checked against the stored copies of the archived pages (the same bytes the parser read), independent of the parser; I did not re-fetch the 38 URLs (would double Wayback traffic). Result: 38/38 prices and item names agree with the page. Caveats found: (1) Windy City Gyros 2016 lists TWO Hot Dog lines ($2.50 plain, $3.50 with fries; pair uses the min = plain) and 2021 lists Hot Dog $4.10 plus a separate with-fries item; (2) multi-size items (Chili Dog $4.75 / $6.60) use the first price; (3) Plush Pup CHAR GRILLED DOG matches Char-Grilled Dog by punctuation-insensitive name match; (4) HTML entities (Barney's) were found unescaped in names and fixed (re-parse). Extraction failures found by the hand check (before fixes): pet food (Purina Dog Chow) and a 10-piece tray counted as hot dogs (v3.1); 4 of the first 5 "no hot dog early" cases were misses because the dogs have names without "dog" inside a Hot Dogs section (Astro Restaurant, Westville, Westville East; plus Mr. V s only has a fries combo, excluded by rule) -> v3.2 section rule. Pre-fix error rate on no-hot-dog-early: 3-4/5; after the fix the remaining 41 early no-dog menus were text-scanned for dog-like words: true negatives except combos/catering/blankets excluded by rule (Mr. V s Pizza Vienna Beef Hot Dog and Fries; Kitchen Sink 10-piece; Mr. Broadway franks in blankets). No-hot-dog-early cases confirmed by eye (no dog text on the early page): Bravest (2016 -> 2025 now has hot dog; a true arrival), Pauli s (2019 -> 2025; early text only a hot dog ROLL for a lobster roll), Akiko s Sushi, Capital Restaurant, Burger Joint, Marcello s Pizza, Buena Vista, Deli On Madison, Andy s Deli (no dog text). Archive URLs: https://web.archive.org/web/20160616005032/https://www.allmenus.com/ny/new-york/7110-bravest/menu/ and https://web.archive.org/web/20250119125912/https://www.allmenus.com/ny/new-york/7110-bravest/menu/ ; https://web.archive.org/web/20191022011831/https://www.allmenus.com/ma/boston/306227-paulis/menu/ and .../20251016002451/... ; others derivable from v3/snapshots.jsonl. Error rate after fixes: 0/38 price reads wrong; recall of the hot-dog filter is only checked on these cases, not on all snapshots.
First design report (the one that failed)
Source file REPORT.md, sha256 42cda4e6bf6863e80c7a8d58b311cf288266fb77bfbda20c87687d557cfd8cc4.
# Hot-dog menu price pilot — REPORT (2026-10-05)
Status: PILOT ONLY. No article written. ~/stochastic-parrot untouched. HYPOTHESES.md untouched.
Bottom line: the random 36-restaurant pilot produced ZERO matched hot-dog pairs. The full pipeline (frame -> sample -> menu discovery -> Wayback -> extraction -> fanciness/ladder metrics -> CPI comparison) runs end to end and was validated on an 11-restaurant outcome-selected validation set, which yielded ONE usable pair. Nothing here supports any trend claim.
## Files (all in ~/jobs/hotdog/)
hotdog.py (single script: cpi|frame|sample|run|scan|reextract|reanalyze|pairs; resumable per restaurant; HD_SUF=_val for validation files), fancy_rules.json (fixed scoring rules, written before results), cpi.csv, frame_{nyc,chicago,houston}.json, sample.json (seed 20261005), restaurants.jsonl + snapshots.jsonl (random pilot), restaurants_val/snapshots_val/sample_val.json (validation), pairs.csv / pairs_val.csv / pairs_detail*.json / presence*.json / summary*.json, texts/ (every fetched menu text by hash), run*.log, llm_cost.json, v1_archive/ + v2_pilot_archive/ (earlier runs).
Note: bls.json, homecost.csv, HOMECOST.md in that folder are not mine.
## CPI
BLS public API (FRED blocked the SEFV01 fetch with a bot challenge; BLS gave all three). Series are the seasonally adjusted CUSR* ones: SEFV (food away from home), SEFV01 (full-service meals and snacks), SA0 (all items). Monthly, 2014-2026. Snapshot month CPI is matched to the capture month.
## Sampling frame (OSM Overpass, one query/city, cached)
amenity in restaurant|pub|bar with website tag; excluded: no name, chain blocklist, cuisine hot_dog/sausage/fast_food, hotel-brand sites, duplicate domains (multi-location). Frame size: NYC 4,363; Chicago 1,800; Houston 464. Strata: american/burger/pub/bar/bistro/other, round-robin seeded sample of 12/city. Overpass returned 504 several times (retried with backoff, no evasion). Blocklist gaps found and patched before the run (Grand Lux, Gen Korean BBQ); Hopdoddy, Zalat Pizza, Loro, 312 Chicago, Little Woodrow s, Green Street Smoked Meats still slipped in (chains/mini-chains), and the "other" stratum (65% of the frame) is mostly cuisines that never sell hot dogs. The sample is therefore wasteful for this question.
## Funnel (random pilot, 12 per city, run under the v2 pipeline)
Stages are independent flags, not strictly nested (Wayback is queried by domain, so a site that failed live can still have captures).
| stage | NYC | Chicago | Houston | total |
|---|---|---|---|---|
| frame (sites, chains removed) | 4,363 | 1,800 | 464 | 6,627 |
| sampled | 12 | 12 | 12 | 36 |
| homepage fetched live | 8 | 8 | 10 | 26 |
| menu URL found on live homepage | 5 | 4 | 9 | 18 |
| >=1 Wayback capture of the domain | 8 | 12 | 12 | 32 |
| >=2 captures of one menu/home URL >=4 y apart | 5 | 10 | 12 | 27 |
| readable menu text (>=300 chars, >=5 prices) on >=1 fetched snapshot | 2 | 3 | 2 | 7 |
| priced hot-dog item on >=1 snapshot | 0 | 0 | 0 | 0 |
| matched pair (>=4 y, priced both ends) | 0 | 0 | 0 | 0 |
Of 77 snapshot fetches: 51 text OK (only 13 of those menu-like), 13 empty/JS/image-only, 13 Wayback 429 after retries (lost). Regex "hot dog" hits in the pilot were beers ("Coney Island ...") and cocktails; the LLM correctly returned no items.
Time: 7,933 s for 36 restaurants = 220 s/restaurant (190 / 197 / 274 by city); 98 Wayback 429s. Validation set: 2,689 s / 11 = 245 s each.
LLM: 70 calls, 41k prompt + 4k completion tokens, $0.0097 total (cap $2.00). Model deepseek/deepseek-v4.1-flash via OpenRouter, reasoning off, temperature 0, max_tokens 800 (raised from 400: multi-item output).
## What the zero means (rates, not trends)
- 0/36 random restaurants have a priced hot dog on any readable snapshot (rule of three: true rate could be up to ~8%).
- Live-menu screen of 514 more frame restaurants in the american/burger/pub/bar/bistro strata (excluding the 36; homepage + 2 menu links, parseable HTML only): 11 had a priced hot-dog line -> 2.1% (NYC 5/147, Chicago 4/210, Houston 2/157). That is a rough floor: JS/PDF/image menus are invisible to it.
- Of those 11 (validation, outcome-selected): 7 had >=2 captures >=4 y apart, 1 produced a matched priced pair; 2 more were near misses (price absent from archived text, or <4 y apart).
- So matched pairs per random restaurant is roughly 0.2-0.6% under this method.
## Validation set (NOT for estimates — selected on "hot dog on the live menu" to test the code)
11 restaurants (5 NYC, 4 Chicago, 2 Houston). Pairs: 1.
### The one matched pair: Milt s Barbecue for the Perplexed (Chicago), american stratum
Archive URLs (old / new; 2018-06-30, 2022-07-06, 2024-01-25 captures also checked):
- https://web.archive.org/web/20160618143943/http://www.miltsbbq.com:80/on-the-menu/
- https://web.archive.org/web/20260325221832/https://miltsbbq.com/on-the-menu/
Window 2016-06 -> 2026-03 (9.75 y). CPI: food away from home +49.6% (4.22%/y), full-service +48.8% (4.16%/y), all items +37.5% (3.32%/y).
| item | old | new | change | vs FAFH (ann.) |
|---|---|---|---|---|
| Romanian Char-Dog (the adult entry dog) | $10 | $10 | 0.0% | -4.2 pp/y (lagging) |
| Milt Dog | $14 | $16 | +14.3% | -2.8 pp/y |
| Chicago Dog (called Chicago Style Dog 2018-24) | $14 | $14 | 0.0% | -4.2 pp/y |
| Hot Dog (KIDS menu, 12 and under) | $6 | $8 | +33.3% | -1.2 pp/y |
Entry price per the fixed rule (cheapest item) is the kids dog, $6 -> $8, which is the wrong comparison for Mike s hypothesis; the adult entry is the Char-Dog at $10 -> $10. The pipeline needs an explicit kids-section exclusion (design change below). Items added/dropped: none (4 dogs at both ends). Plain dog exists early and late (Chicago Dog / Char-Dog).
Fanciness (verbatim descriptions):
- Char-Dog old: (no description). New: "100% beef hot dog locally sourced from Romanian Sausage Co. Add Chili $4" (old add-chili was $3). -> description 0 -> 12 words, provenance flag ON (named supplier + "locally").
- Milt Dog old: "Romanian Char-Dog brisket chili, "bacon", crispy onion, and pickled jalapenos." New: "Char-dog with brisket chili, "bacon," crispy onion, and pickled jalapeños." -> unchanged build.
- Chicago Dog old: "Diced onion, diced tomato, sport peppers, dill pickle spear, yellow mustard, and celery salt" New: "Char-dog with onion, tomato, dill pickle spear, sport peppers, relish, mustard, and celery salt." -> relish added back; same build.
- Kids Hot Dog: no description either year.
Ladder: entry-to-top spread (incl. kids) $8 -> $8 (kids $6->$8, Milt $14->$16). Premium-keyword flags: 0 -> 0 on the entry item (the scored "entry" is the kids dog; Char-Dog new description trips "local"). pairs_val.csv numbers use the kids dog as the entry, so read the table above, not the CSV s entry columns.
One restaurant is an anecdote. It does show the fixed rules work and that "entry price" can be dominated by a kids item.
Other validation restaurants: Kibbitznest (Chicago): "Classic Chicago Hot Dog" $7 in 2026; the 2018/2020/2024 snapshots list the Chicago Classic Jumbo Vienna Beef dog but the price is not in the archived text -> no pair (item present at both ends; price missing). O Donovan s (Chicago): "Mini Corn Dogs" appetizer $10.95 (2021) and $11.95 (2022), no price in the 2024/2026 text; also <4 y -> no pair. Madam Marie s, 11th Street Bar: only beer-name hits ("Coney Island ..."), no dog.
Arrivals (absent early, present late): none observed. Dropped: none. (An earlier presence rule keyed on price produced a false arrival and a false drop; fixed to key on item presence.)
Survivorship: only restaurants still operating with a live site can be observed, and the validation set additionally requires a hot dog on the live menu. Closed restaurants are invisible; dropped-dog cases are only observable inside the random sample.
## Hand check
Required: >=8 pairs. Achieved: 1 pair (only one exists). Instead I hand-checked every extracted hot-dog item that I could read in the stored text:
- Milt s: 4 items x 5 snapshots (2016, 2018, 2022, 2026 read line by line; 2024 same hash pattern, read via the 2022 text only) -> final extraction matches the page text on all items I read (16/16 item-prices; also section = kids for the $6/$8 dog).
- O Donovan s 2021 $10.95 (quoted "$10.95/12pc" — a count-qualified price), Kibbitznest 2026 $7: correct.
Extraction errors found BEFORE fixes (so the raw error rate was high):
1. Recall: the first regex (hot dog|frank|coney|corn dog) missed "Romanian Char-Dog", "Milt Dog", "Chicago Dog". The 2016 and 2018 Milt s snapshots returned only the kids dog, so the first pair compared the wrong item (1 of 1 pairs wrong). Fix v3.1: also match "<word> Dog" and let the LLM filter (cocktails "Salty Dog" are filtered by the LLM).
2. Wrong price: the LLM returned Char-Dog $14 for 2022 and 2024 (true $10; it grabbed the neighbouring dog s price). My "price appears somewhere in the page" check passed it. Fix: deterministic cross-check — an item counts only if the LLM price equals the first non-add-on number within 4 lines after the item name; mismatches are excluded (verified=false).
3. The LLM returned an empty list on the 2018 Milt s snapshot although the page has a hot-dog line (false negative; fixed by the regex change).
4. Missing price (not an error): Kibbitznest 2018/2020/2024 and O Donovan s 2024/2026 — the price is not in the archived text; the LLM correctly returned null.
These fixes were derived from the same restaurant I then checked, so the post-fix error rate (0 known) is optimistic. A fresh hand check on 8+ pairs from a larger run is still required. Both re-extractions ran over stored texts (no extra Wayback traffic). The random 36-restaurant pilot was run under the v2 pipeline and then re-extracted with v3.1 (still 0 priced hot dogs); its lineage discovery was NOT re-run under v3, so its funnel stages through "snapshot" are slightly pessimistic compared with v3.
## Failure modes (counts from the random pilot unless noted)
1. Wayback throttling is the binding constraint: 98 HTTP 429s in the pilot; the adaptive back-off (3 s -> 20 s gap + 60 s sleeps) held effective throughput to roughly one Wayback request per 20 s. 13 of 77 snapshot fetches never succeeded after 3 tries (17% data loss) and 4 CDX queries failed. A first 3 h attempt (v1: per-URL CDX + 12 snapshots per restaurant) was killed and archived because it ran ~5-27 min per restaurant; v2 cut Wayback calls to one domain-prefix CDX + <=6 fetches. I did not evade, change IPs or ignore the limit.
2. Domain-wide CDX with limit 1500 returned mostly junk query-string URLs (utm_, ?s=, lightbox) and truncated; v3 uses two queries (homepage + menu-ish paths with no query strings/assets).
3. Menus not in HTML: 13 snapshots with no text (JS-rendered, images, Wix/Squarespace shells); PDFs only partly handled; image-only menus recorded as no_text. Third-party menu widgets/ordering sites (Toast, OpenTable, Resy) were skipped.
4. Live sites: 5 SSL/connection errors, 2 HTTP 404, 2 x 403 (not retried), 1 x 526; 10 of 36 had no usable homepage.
5. Archived text of one URL often does not contain the whole menu (menu split across drink/food/brunch pages; prices in images).
6. Price layouts: prices on the line before or after the item name or after the description; LLM alone mis-assigns neighbours (fixed with the cross-check). Count-qualified and add-on prices ("$10.95/12pc", "Add chili $3").
7. Duplicate-text snapshots: several captures return identical text across years (page not updated, or Wayback served a stale copy); price-stability pairs from such pages are weak evidence.
8. Sampling frame: chains slip through; many OSM sites are hotels/venues/non-restaurants; ~65% of the frame is cuisines that do not sell hot dogs; OSM "website" can point to Facebook/Instagram/aggregators.
9. Overpass 504s (retried with backoff).
10. Item definition: kids-menu hot dogs, appetizer "mini corn dogs", "franks n beans" side, cocktail franks, named dogs without the words hot dog.
## Scale recommendation
Do not scale the pilot as designed: ~220-245 s per restaurant and ~0.2-0.6% matched pairs per random restaurant means ~3,000-10,000 restaurants per city for 20 pairs/city (about 200-600 hours/city). Not feasible.
Recommended two-stage design (changes the estimand; say so in any write-up):
1. Stage A, live screen, no Wayback: fetch current homepage + menu links for the whole frame (or 1,000-2,000 per city), 1.5 s delay/host, cities in parallel, ~5-6 s per restaurant. Gives an unbiased current-menu hot-dog presence rate by stratum and the list of restaurants with a hot dog NOW (~2% => 20-40 per 1,000).
2. Stage B, Wayback only for the Stage-A positives (about 4 min each at the observed throttle): measure price change of items that survived (a disclosed survivor-item selection). Run the added/dropped analysis separately on a random subset of the full sample using Wayback readable-at-both-ends only.
3. Pool across cities rather than 20 per city. 12 cities: New York, Chicago, Houston, Los Angeles, Philadelphia, Boston, Washington DC, Seattle, Denver, Atlanta, Minneapolis, Austin (large OSM frames, mix of climates/markets). Frame sizes with websites probably 500-4,500 per city (this pilot: 464-4,363). Expected: ~12 x 1,500 = 18,000 screened -> ~360 hot-dog-now restaurants -> ~60-100 usable pairs (not 20/city; maybe 5-8/city).
Expected wall time: Stage A ~30 CPU-hours spread across 12 parallel city workers = ~3-4 h; Stage B 360 x ~4 min = ~24 h serial under the throttle (can be cut by fetching only 2 end snapshots + 1-2 middle). LLM cost: $0.00014/call observed; ~2,500-3,500 calls => well under $1 (cap $5 is ample). The Wayback rate limit is the cost, not the model.
Design changes needed: (a) exclude kids-menu/appetizer/side items from the entry dog and record them separately (rule must be set before the full run); (b) keep the broadened "<word> Dog" regex + LLM filter and the deterministic price cross-check; (c) drop "other" cuisine stratum and obvious non-restaurants from the frame; (d) pre-filter hotels/venues/aggregator sites; (e) retry 429-failed snapshots in a later pass instead of dropping them; (f) normalize query strings in CDX; (g) record menu text completeness (does the page contain the section where hot dogs would be) before counting "absent"; (h) treat "price not in archived text" as its own status, since it was the second biggest pair-killer after Wayback.
Honesty: 36 random restaurants and 11 selected ones cannot support any trend; the single pair is 0% on the adult entry dog, +14% on the specialty dog, +33% on the kids dog, against +49.6% food-away-from-home CPI, and means nothing statistically.
Results (REPORT_V2.md)
Source file REPORT_V2.md, sha256 2a17a4610249724db734fc71671c5f7437b83553f3355f6ff6dfeb943b597c37.
# Hot dog menu price study, v2 (AllMenus design) -- REPORT_V2
Generated 2026-10-06 11:20 UTC by analyze.py (deterministic; re-runnable). HYPOTHESES.md was NOT edited; every verdict below applies its written conditions. Not an article; ~/stochastic-parrot untouched.
Snapshots processed so far: 361 (status {'ok': 360, 'gone_404': 1}); restaurants with a CDX answer: 274/274.
## 1. Funnel
| city | frame (non-excluded) | hot-dog-now | random subset | Stage B targets | CDX answered | >=1 capture | >=1 parseable priced snapshot | >=2 priced snapshots | qualifying dog on any snapshot | matched pair (>=4 y) |
|---|---|---|---|---|---|---|---|---|---|---|
| austin | 270 | 10 | 17 | 27 | 27 | 12 | 10 | 5 | 3 | 0 |
| boston | 334 | 16 | 22 | 37 | 37 | 25 | 24 | 12 | 7 | 0 |
| chicago | 426 | 62 | 40 | 93 | 93 | 68 | 65 | 37 | 43 | 4 |
| new-york | 449 | 28 | 36 | 63 | 63 | 48 | 48 | 36 | 16 | 2 |
| san-francisco | 451 | 21 | 35 | 54 | 54 | 37 | 36 | 17 | 12 | 1 |
| ALL | 1930 | 137 | 150 | 274 | 274 | 190 | 183 | 107 | 81 | 7 |
Matched item pairs (same restaurant, same item name AND description, priced both ends, >=4 y apart): **19** pairs in **7** restaurants. Restaurants with a qualifying dog at two ends >=4 y apart (entry-price comparison, includes changed items): **20**.
Rule amendment v3.1 (logged after the first interim read: pet-food 'Purina Dog Chow' and a 10-piece catering tray were counted as hot dogs; multi-piece orders such as '2 Hawaiian Dogs' distort the entry price): pet food excluded; bulk/catering excluded; multi-piece orders ('2 X dogs') kept for like-for-like pairs only and excluded from entry/top/ladder. Applied uniformly to every snapshot when parsing. Rule amendment v3.2 (logged after the hand check found 4 of 5 'no hot dog early' cases were extraction misses): an item whose name lacks 'dog' but sits in a section that is purely about hot dogs (section words limited to hot dog/dogs/franks/kosher/vienna/beef/etc.) counts as a hot dog unless its name is a burger, fries, drink, sausage/polish, sandwich, nachos, etc.; 'franks' in such a section is accepted. Stage A (frame, hot-dog-now) was NOT recomputed under v3.2 and remains the frozen v3.0 target list. The Stage B target list was frozen under the v3.0 rules (137 hot-dog-now); re-counted under v3.1 the hot-dog-now set would be 128 restaurants (the 9 dropped have only multi/bulk/pet items).
Frame rule counts (Stage A, restaurants = AllMenus menu pages): {"(in frame)": 1930, "multi_location_same_name": 382, "chain_blocklist": 297, "name_in_multiple_cities": 164, "name_dog_or_quick_service": 51, "cuisine_hot_dogs": 7, "dedicated_hot_dog_share": 1}; hot-dog-like rows in frame by status: {"QUALIFYING": 334, "kids": 42, "combo": 35, "side": 20, "corndog": 11}.
Snapshot yield: templates (template, parseable, prices present): {('li_menu_item', True, True): 47, (None, False, False): 11, ('ldjson', True, True): 298, ('geo_stub', False, False): 2, ('li_menu_item', True, False): 2}. Snapshots by year x parseable are in v3/snapshot_yield.csv.
| year | snapshots | parseable | with_prices | median_items | with_qualifying_dog |
|---|---|---|---|---|---|
| 2009 | 1 | 0 | 0 | 0.0 | 0 |
| 2010 | 2 | 0 | 0 | 0.0 | 0 |
| 2012 | 1 | 1 | 1 | 108.0 | 0 |
| 2014 | 1 | 1 | 1 | 62.0 | 0 |
| 2016 | 50 | 47 | 45 | 88.5 | 24 |
| 2017 | 9 | 9 | 9 | 64.0 | 2 |
| 2019 | 59 | 56 | 56 | 104.0 | 29 |
| 2020 | 36 | 34 | 34 | 108.0 | 15 |
| 2021 | 130 | 130 | 130 | 108.0 | 56 |
| 2022 | 33 | 33 | 33 | 190.0 | 11 |
| 2023 | 8 | 7 | 7 | 71.0 | 5 |
| 2024 | 5 | 4 | 4 | 289.0 | 2 |
| 2025 | 20 | 20 | 20 | 108.0 | 12 |
| 2026 | 5 | 5 | 5 | 289.0 | 1 |
Snapshots that returned gone (404/410): 1.
## 2. Like-for-like repricing (P2)
Item-level pairs (each pair = one unchanged item at one restaurant; items within a restaurant are not independent):
| measure | n | median | mean |
|---|---|---|---|
| hot dog price % change | 19 | 43.5 | 59.13 |
| CPI food away from home % | 19 | 30.2 | 27.46 |
| CPI full-service meals % | 19 | 30.9 | 27.24 |
| CPI all items % | 19 | 24.4 | 21.63 |
| home cost per dog % (low) | 19 | 52.5 | 45.81 |
| home cost per dog % (high) | 19 | 47.7 | 42.72 |
| home cost % (sensitivity: CPI-frank) | 19 | 27.0 | 23.7 |
| excess over FAFH (pp) | 19 | 16.1 | 31.67 |
| burger % (same restaurants/snapshots, both ends) | 14 | 67.65 | 114.21 |
| annualised hot dog %/y | 19 | 8.53 | 7.1 |
Share lagging or equal to CPI FAFH: 8/19 = 42%; beating it: 11/19 = 58%. Lagging CPI all items: 7/19. Lagging home-cost (low): 10/19. Unchanged price (0%): 6/19.
Restaurant-clustered (one value per restaurant = mean of its item pairs): n=7, median hot dog change 28.57%, median CPI FAFH over the same pairs 27.4%, share lagging 2/7. Bootstrap 95% interval on the median of item-level excess over FAFH (pp): (-30.2, 45.5).
Sensitivity note: sensitivity series: CPI-Frankfurters index (bls.json, last point 2026-08) anchored to the Aug-2026 AP-frank level; bun_low + condiments as in homecost.csv.
Every pair with archive URLs is in pairs_v2.csv (columns url_old, url_new). Pairs table (first 40):
| restaurant | city | item | old | new | $old | $new | % chg | CPI FAFH % |
|---|---|---|---|---|---|---|---|---|
| Sliders Diner | san-francisco | Hot Link | 20160304 | 20211130 | 4.75 | 5.95 | 25.3 | 20.9 |
| Windy City Gyros | chicago | Hot Dog | 20160609 | 20210923 | 2.5 | 4.1 | 64.0 | 18.5 |
| Windy City Gyros | chicago | Chili Dog | 20160609 | 20210923 | 2.9 | 4.75 | 63.8 | 18.5 |
| Plush Pup | chicago | CHAR GRILLED DOG | 20160620 | 20230510 | 2.25 | 6.25 | 177.8 | 34.4 |
| Plush Pup | chicago | DOUBLE DOG | 20160620 | 20230510 | 3.25 | 8.25 | 153.8 | 34.4 |
| Plush Pup | chicago | CHEESE DOG | 20160620 | 20230510 | 2.6 | 7.25 | 178.8 | 34.4 |
| Plush Pup | chicago | CHILI DOG | 20160620 | 20230510 | 2.6 | 7.25 | 178.8 | 34.4 |
| Mr. Greek Gyros | chicago | Vienna Beef Hot Dog | 20160619 | 20210621 | 3.49 | 5.35 | 53.3 | 16.4 |
| Mr. Greek Gyros | chicago | Vienna Beef Double Dog | 20160619 | 20210621 | 4.09 | 7.65 | 87.0 | 16.4 |
| Mr. Greek Gyros | chicago | 3. Vienna Beef Hot Dog | 20160619 | 20210621 | 5.19 | 8.05 | 55.1 | 16.4 |
| The Burger Point | chicago | Spanish Revolution Hot Dog | 20210125 | 20250623 | 5.25 | 6.1 | 16.2 | 27.4 |
| The Burger Point | chicago | Chili Cheese Dog | 20210125 | 20250623 | 5.0 | 6.3 | 26.0 | 27.4 |
| The Burger Point | chicago | Maxwell Street Hot Dog | 20210125 | 20250623 | 4.25 | 6.1 | 43.5 | 27.4 |
| SoHo Park | new-york | Grilled Kosher Hot Dog | 20160714 | 20250320 | 3.5 | 3.5 | 0.0 | 43.8 |
| The Kitchen Sink | new-york | 2 New York Style Dogs | 20201204 | 20251210 | 9.5 | 9.5 | 0.0 | 30.2 |
| The Kitchen Sink | new-york | 2 Brooklyn Style Dogs | 20201204 | 20251210 | 12.5 | 12.5 | 0.0 | 30.2 |
| The Kitchen Sink | new-york | 2 Tacos Dogs | 20201204 | 20251210 | 12.5 | 12.5 | 0.0 | 30.2 |
| The Kitchen Sink | new-york | 2 Chili Cheese Dogs | 20201204 | 20251210 | 12.5 | 12.5 | 0.0 | 30.2 |
| The Kitchen Sink | new-york | 2 Hawaiian Dogs | 20201204 | 20251210 | 12.5 | 12.5 | 0.0 | 30.2 |
## 3. Entry price over time (P6)
Restaurants with a priced qualifying hot dog on >=1 snapshot: 81; with first/last >=4 y apart: 20.
| measure | n | median | mean |
|---|---|---|---|
| entry price old ($) | 20 | 3.92 | 6.6 |
| entry price new ($) | 20 | 5.17 | 7.3 |
| entry % change | 20 | 41.45 | 37.41 |
| CPI FAFH % same dates | 20 | 21.2 | 24.29 |
| entry excess over FAFH (pp) | 20 | 17.85 | 13.12 |
| CPI all items % | 20 | 17.45 | 18.98 |
| home cost low % | 20 | 43.7 | 42.92 |
| home cost high % | 20 | 40.05 | 39.97 |
| home cost sensitivity % | 20 | 20.05 | 23.31 |
Entry price lagging/equal CPI FAFH: 6/20; entry item unchanged (same name+description) at both ends: 3/20.
Restaurant list (entry price first vs last qualifying snapshot):
| restaurant | city | first | last | entry $ old | entry $ new | % chg | CPI FAFH % | entry item old | entry item new |
|---|---|---|---|---|---|---|---|---|---|
| Sliders Diner | san-francisco | 20160304 | 20211130 | 3.95 | 5.75 | 45.6 | 20.9 | Hot Dog | Hot Dog |
| Barney's Gourmet Hamburgers | san-francisco | 20160701 | 20210226 | 5.95 | 10.25 | 72.3 | 14.3 | Barney's Kosher Hot Dog | Barney's Hot Dog |
| Holy Grill | san-francisco | 20160613 | 20210411 | 4.95 | 6.5 | 31.3 | 15.0 | Dogma Hot Dog | Dogma Dog |
| Windy City Gyros | chicago | 20160609 | 20210923 | 2.5 | 4.1 | 64.0 | 18.5 | Hot Dog | Hot Dog |
| Plush Pup | chicago | 20160620 | 20230510 | 2.25 | 6.25 | 177.8 | 34.4 | CHAR GRILLED DOG | Plush Pup Dog |
| El Gran Burrito | chicago | 20160810 | 20210512 | 2.2 | 4.25 | 93.2 | 15.1 | Hot Dog | Hot Dog |
| The Bagel Restaurant & Deli | chicago | 20191119 | 20250908 | 8.95 | 13.75 | 53.6 | 34.2 | Jumbo Frankfurter Sandwich | Jumbo Frankfurter Sandwich |
| Firehouse Grill | chicago | 20160701 | 20210614 | 2.25 | 3.49 | 55.1 | 16.2 | Hot Dog | Hot Dog Only |
| Stanley's Grill | chicago | 20160714 | 20210516 | 3.9 | 4.99 | 27.9 | 15.4 | Hot Dog | Maxwell Street Style Polish Hot Dog |
| Mr. Greek Gyros | chicago | 20160619 | 20210621 | 3.49 | 5.35 | 53.3 | 16.4 | Vienna Beef Hot Dog | Vienna Beef Hot Dog |
| The Burger Point | chicago | 20210125 | 20250623 | 4.0 | 5.7 | 42.5 | 27.4 | Build Your Own Chicago Style Hot Dog | Chicago Style Hot Dog |
| Mom & Dads Deli | chicago | 20171224 | 20220814 | 2.45 | 3.25 | 32.7 | 23.0 | All Beef Hot Dog | Chili Dog |
| Brooklyn Diner | new-york | 20160726 | 20220116 | 21.75 | 21.95 | 0.9 | 21.4 | Famous Hot Dog | 15-Bite All-Beef Frankfurter |
| Astro Restaurant | new-york | 20160910 | 20220116 | 4.95 | 6.95 | 40.4 | 21.0 | Plain | The Plain Dog |
| SoHo Park | new-york | 20160714 | 20250320 | 3.5 | 3.5 | 0.0 | 43.8 | Grilled Kosher Hot Dog | Grilled Kosher Hot Dog |
| Westville | new-york | 20160910 | 20250124 | 3.5 | 4.0 | 14.3 | 42.2 | Hebrew National | Hebrew National Hot Dog |
| Pastrami Queen | new-york | 20160624 | 20220524 | 18.95 | 4.95 | -73.9 | 24.2 | Three Frankfurters | Frankfurter |
| 3 Guys Restaurant | new-york | 20201108 | 20250119 | 19.0 | 23.0 | 21.1 | 25.9 | Double Kosher Hot Dog | Double Hot Dog |
| Westville (East) | new-york | 20160720 | 20250116 | 11.0 | 4.0 | -63.6 | 42.8 | Hebrew National | Hebrew National Hot Dog |
| Bella Donna Italian Subs | austin | 20160612 | 20201128 | 2.5 | 3.99 | 59.6 | 13.6 | NY Pushcart Dog | N.Y. Pushcart Dog Lunch |
Entry (cheapest qualifying) hot dog price by snapshot year, all restaurants with a dog that year (unbalanced; composition changes by year):
| year | n | median | mean | min | max |
|---|---|---|---|---|---|
| 2016 | 24 | 3.7 | 5.5 | 2.2 | 21.75 |
| 2017 | 2 | 4.22 | 4.22 | 2.45 | 6.0 |
| 2019 | 29 | 4.99 | 5.63 | 1.25 | 21.95 |
| 2020 | 15 | 4.99 | 5.81 | 1.5 | 19.0 |
| 2021 | 56 | 5.0 | 6.48 | 2.5 | 21.95 |
| 2022 | 11 | 6.95 | 9.01 | 3.25 | 21.95 |
| 2023 | 5 | 6.25 | 6.36 | 2.5 | 9.79 |
| 2024 | 2 | 10.75 | 10.75 | 10.49 | 11.0 |
| 2025 | 12 | 6.85 | 8.15 | 3.5 | 23.0 |
| 2026 | 1 | 11.0 | 11.0 | 11.0 | 11.0 |
## 4. Plain-dog survival and ladder spread (P7)
Restaurants with first/last >=4 y: n=20. Plain dog offered (fixed rule: empty-or-plain-marker description, 0 premium keywords, <=2 components) on the first snapshot: 11/20 = 55%; on the last: 9/20 = 45%. Dropped plain dog: 4; gained: 2.
Ladder spread (top minus entry price) among all 20: median old $0.9 -> new $0.8 (mean 0.98 -> 1.89). Among 11 restaurants with >=2 priced dogs at both ends: median spread 1.25 -> 2.0; widened in 7, narrowed in 3. Number of dog items: median 3.0 -> 3.0.
Restaurants where a plain dog exists at both ends: 7.
## 5. Fanciness change (P4) -- fixed fancy_rules.json scoring
| measure | n | old_median | new_median | old_mean | new_mean | rose | fell | same | sign_test_p |
|---|---|---|---|---|---|---|---|---|---|
| description words (mean over dog items) | 20 | 5.67 | 7.0 | 7.09 | 6.53 | 8 | 7 | 5 | 1.0 |
| topping/component count (mean) | 20 | 2.12 | 2.5 | 2.52 | 2.67 | 8 | 6 | 6 | 0.791 |
| distinct premium flags (mean) | 20 | 0.0 | 0.0 | 0.2 | 0.21 | 2 | 3 | 15 | 1.0 |
| entry item: words | 20 | 4.0 | 7.0 | 6.6 | 6.85 | 6 | 5 | 9 | 1.0 |
| entry item: components | 20 | 1.0 | 2.0 | 2.45 | 2.8 | 7 | 4 | 9 | 0.549 |
| entry item: premium flags | 20 | 0.0 | 0.0 | 0.1 | 0.1 | 0 | 0 | 20 | |
Entry-item verbatim descriptions old -> new (all restaurants, first 25 where descriptions differ; the first snapshot is the earliest with a qualifying dog):
- **Sliders Diner** (san-francisco, 2016 -> 2021): OLD "Hot Dog": "" $3.95 || NEW "Hot Dog": "Quarter pound all beef hot dogs." $5.75 [https://web.archive.org/web/20160304003505/https://www.allmenus.com/ca/san-francisco/44779-sliders-diner/menu/ | https://web.archive.org/web/20211130050319/https://www.allmenus.com/ca/san-francisco/44779-sliders-diner/menu/]
- **Barney's Gourmet Hamburgers** (san-francisco, 2016 -> 2021): OLD "Barney's Kosher Hot Dog": "Flame broiled beef hot dog on a french roll, garnished with lettuce, tomato, pickle and red onions served with curly fries" $5.95 || NEW "Barney's Hot Dog": "Sweet relish, chopped red onion." $10.25 [https://web.archive.org/web/20160701035040/https://www.allmenus.com/ca/san-francisco/63610-barneys-gourmet-hamburgers/menu/ | https://web.archive.org/web/20210226105718/https://www.allmenus.com/ca/san-francisco/63610-barneys-gourmet-hamburgers/menu/]
- **Holy Grill** (san-francisco, 2016 -> 2021): OLD "Dogma Hot Dog": "all natural, all beef hot dog with grilled onions." $4.95 || NEW "Dogma Dog": "All natural, all beef hot dog and grilled onions." $6.5 [https://web.archive.org/web/20160613220644/https://www.allmenus.com/ca/san-francisco/93928-holy-grill/menu/ | https://web.archive.org/web/20210411001904/https://www.allmenus.com/ca/san-francisco/93928-holy-grill/menu/]
- **Plush Pup** (chicago, 2016 -> 2023): OLD "CHAR GRILLED DOG": "" $2.25 || NEW "Plush Pup Dog": "" $6.25 [https://web.archive.org/web/20160620092635/https://www.allmenus.com/il/chicago/223589-plush-pup/menu/ | https://web.archive.org/web/20230510142627/https://www.allmenus.com/il/chicago/223589-plush-pup/menu/]
- **El Gran Burrito** (chicago, 2016 -> 2021): OLD "Hot Dog": "" $2.2 || NEW "Hot Dog": "Hot dog, ketchup, mustard, raw onions , pickles, relish and sports pepper on hot dog bun. Served with fries." $4.25 [https://web.archive.org/web/20160810040837/https://www.allmenus.com/il/chicago/224766-el-gran-burrito/menu/ | https://web.archive.org/web/20210512051651/https://www.allmenus.com/il/chicago/224766-el-gran-burrito/menu/]
- **The Bagel Restaurant & Deli** (chicago, 2019 -> 2025): OLD "Jumbo Frankfurter Sandwich": "With lettuce, tomato, onion and pickle relish. Served with fresh fries and coleslaw." $8.95 || NEW "Jumbo Frankfurter Sandwich": "Served with french fries and coleslaw, with lettuce, tomato, onion, and pickle relish." $13.75 [https://web.archive.org/web/20191119212042/https://www.allmenus.com/il/chicago/237448-the-bagel-restaurant-deli/menu/ | https://web.archive.org/web/20250908124337/https://www.allmenus.com/il/chicago/237448-the-bagel-restaurant-deli/menu/]
- **Firehouse Grill** (chicago, 2016 -> 2021): OLD "Hot Dog": "" $2.25 || NEW "Hot Dog Only": "With mustard, relish, onion, tomato and sport peppers." $3.49 [https://web.archive.org/web/20160701002028/https://www.allmenus.com/il/chicago/305207-firehouse-grill/menu/ | https://web.archive.org/web/20210614235529/https://www.allmenus.com/il/chicago/305207-firehouse-grill/menu/]
- **Stanley's Grill** (chicago, 2016 -> 2021): OLD "Hot Dog": "w/fries. everything includes: mustard, relish, freshly chopped onions, sliced red ripe tomatoes, kosher pickle and sport pepper." $3.9 || NEW "Maxwell Street Style Polish Hot Dog": "Prepared with Mustard, Grilled onions and Sport Peppers" $4.99 [https://web.archive.org/web/20160714101523/https://www.allmenus.com/il/chicago/308786-stanleys-grill/menu/ | https://web.archive.org/web/20210516002742/https://www.allmenus.com/il/chicago/308786-stanleys-grill/menu/]
- **The Burger Point** (chicago, 2021 -> 2025): OLD "Build Your Own Chicago Style Hot Dog": "1/4 lb. grass fed beef hot dogs with celery salt, peppers, mustard, tomatoes, sweet relish, onions and pickles." $4.0 || NEW "Chicago Style Hot Dog": "1/4 lb. grass fed beef hot dogs with celery salt, peppers, mustard, tomatoes, sweet relish, onions and pickles." $5.7 [https://web.archive.org/web/20210125053329/https://www.allmenus.com/il/chicago/358514-the-burger-point/menu/ | https://web.archive.org/web/20250623034608/https://www.allmenus.com/il/chicago/358514-the-burger-point/menu/]
- **Mom & Dads Deli** (chicago, 2017 -> 2022): OLD "All Beef Hot Dog": "When ordering please specify: white, wheat or rye bread. Mayo, mustard, lettuce, tomatoes or onions. Toasted white, wheat or rye bread also available." $2.45 || NEW "Chili Dog": "all beef hotdog serve with homemade chili" $3.25 [https://web.archive.org/web/20171224202246/https://www.allmenus.com/il/chicago/358897-mom-dads-deli/menu/ | https://web.archive.org/web/20220814155619/https://www.allmenus.com/il/chicago/358897-mom-dads-deli/menu/]
- **Brooklyn Diner** (new-york, 2016 -> 2022): OLD "Famous Hot Dog": "Housemade juniper sauerkraut, french fries" $21.75 || NEW "15-Bite All-Beef Frankfurter": "housemade juniper sauerkraut, french fries" $21.95 [https://web.archive.org/web/20160726165734/https://www.allmenus.com/ny/new-york/247595-brooklyn-diner/menu/ | https://web.archive.org/web/20220116102837/https://www.allmenus.com/ny/new-york/247595-brooklyn-diner/menu/]
- **Astro Restaurant** (new-york, 2016 -> 2022): OLD "Plain": "" $4.95 || NEW "The Plain Dog": "100% all beef hot dog and your preference of mustard or ketchup." $6.95 [https://web.archive.org/web/20160910124734/https://www.allmenus.com/ny/new-york/247669-astro-restaurant/menu/ | https://web.archive.org/web/20220116094323/https://www.allmenus.com/ny/new-york/247669-astro-restaurant/menu/]
- **Westville** (new-york, 2016 -> 2025): OLD "Hebrew National": "Kosher beef" $3.5 || NEW "Hebrew National Hot Dog": "one beef hotdog w/ choice of toppings" $4.0 [https://web.archive.org/web/20160910155335/https://www.allmenus.com/ny/new-york/272389-westville/menu/ | https://web.archive.org/web/20250124110900/https://www.allmenus.com/ny/new-york/272389-westville/menu/]
- **Pastrami Queen** (new-york, 2016 -> 2022): OLD "Three Frankfurters": "With baked beans or french fries" $18.95 || NEW "Frankfurter": "" $4.95 [https://web.archive.org/web/20160624190101/https://www.allmenus.com/ny/new-york/41950-pastrami-queen/menu/ | https://web.archive.org/web/20220524151636/https://www.allmenus.com/ny/new-york/41950-pastrami-queen/menu/]
- **3 Guys Restaurant** (new-york, 2020 -> 2025): OLD "Double Kosher Hot Dog": "Served with sauerkraut and french fries." $19.0 || NEW "Double Hot Dog": "Served with sauerkraut and french fries." $23.0 [https://web.archive.org/web/20201108212506/https://www.allmenus.com/ny/new-york/41983-3-guys-restaurant/menu/ | https://web.archive.org/web/20250119141329/https://www.allmenus.com/ny/new-york/41983-3-guys-restaurant/menu/]
- **Westville (East)** (new-york, 2016 -> 2025): OLD "Hebrew National": "Kosher beef $3.50" $11.0 || NEW "Hebrew National Hot Dog": "one beef hotdog w/ choice of toppings" $4.0 [https://web.archive.org/web/20160720102959/https://www.allmenus.com/ny/new-york/60329-westville-east/menu/ | https://web.archive.org/web/20250116115219/https://www.allmenus.com/ny/new-york/60329-westville-east/menu/]
- **Bella Donna Italian Subs** (austin, 2016 -> 2020): OLD "NY Pushcart Dog": "All-beef dog topped with mustard, onion sauce and sauerkraut." $2.5 || NEW "N.Y. Pushcart Dog Lunch": "Topped with mustard, onion sauce and sauerkraut." $3.99 [https://web.archive.org/web/20160612051941/https://www.allmenus.com/tx/austin/304897-bella-donna-italian-subs/menu/ | https://web.archive.org/web/20201128055241/https://www.allmenus.com/tx/austin/304897-bella-donna-italian-subs/menu/]
## 6. Decomposition of the change in hot-dog price (P3)
Restaurants with a priced qualifying dog at two ends >=4 y apart: 20. Items: early 72, late 57, same item (name+description) at both ends 14, new/changed at the late end 43, dropped/changed from the early end 58.
| set | n | median | mean |
|---|---|---|---|
| early items (all) | 72 | 4.22 | 5.73 |
| late items (all) | 57 | 6.55 | 8.28 |
| matched items, early price | 14 | 3.5 | 3.69 |
| matched items, late price | 14 | 6.17 | 6.2 |
| new/changed items at late end | 43 | 6.95 | 8.96 |
| dropped/changed early items | 58 | 4.35 | 6.22 |
Change in MEAN price early->late: 2.55 dollars. Exact split: (a) like-for-like repricing of unchanged items = 0.62 dollars (24% of the change); (b) composition (new/changed items entering, dropped items leaving) = 1.93 dollars. Change in MEDIAN price: 2.33 dollars; median of the matched items' late price minus early price: 2.67 dollars.
## 7. Arrivals / drops (random subset ONLY)
The hot-dog-now set is selected on having a qualifying hot dog in the Feb-2024 dataset, so it cannot estimate arrivals (it selects on the outcome) and is excluded here. Only the seeded random subset (150 restaurants drawn from the whole non-excluded frame, regardless of hot dogs) is used; and only restaurants that survived to be in the dataset (survivors).
Random-subset restaurants with a menu of >=10 priced items at two ends >=4 y apart: 17. neither 16, arrival (0 dogs early -> >=1 late) 0, drop (>=1 early -> 0 late) 0, dog at both 1. Dog prevalence at the early end 1/17 -> late end 1/17.
## 8. Price level 2016 vs now (P1) and spread across tiers (P5)
2016 = snapshots captured in calendar 2016 (first 2016 capture per restaurant is what the picker takes); now = latest snapshot (>=2024) of hot-dog-now restaurants.
| measure | n | median | mean |
|---|---|---|---|
| all qualifying dog items, 2016 | 88 | 4.25 | 5.41 |
| entry price, 2016 (restaurants) | 24 | 3.7 | 5.5 |
| all qualifying dog items, latest | 22 | 7.15 | 8.11 |
| entry price, latest (restaurants) | 14 | 8.12 | 8.52 |
Balanced (same restaurants, first snapshot <=2017 and last >=4 y later): n=17; entry price median 3.5 -> 4.95; mean 5.88 -> 6.09.
Spread across price tiers (tier = burger-price tercile within city from the restaurant's earliest usable priced snapshot; terciles computed over Stage B target restaurants only):
| tier | restaurants_with_burger_tier | matched_item_pairs | median_item_pct | median_cpi_fafh | entry_restaurants | median_entry_pct | median_entry_cpi |
|---|---|---|---|---|---|---|---|
| low | 37 | 11 | 64.0 | 20.9 | 11 | 55.1 | 16.2 |
| mid | 38 | 5 | 0.0 | 30.2 | 3 | 14.3 | 42.2 |
| high | 42 | 3 | 26.0 | 27.4 | 5 | 21.1 | 25.9 |
## 9. Restaurant price to home-cost ratio over time
Median entry price (restaurants with a dog that snapshot year; unbalanced) divided by the mid-year home cost per dog (homecost.csv, June):
| year | n | median_entry | home_low | home_high | ratio_low | ratio_high |
|---|---|---|---|---|---|---|
| 2016 | 24 | 3.7 | 0.54 | 0.63 | 6.9 | 5.9 |
| 2017 | 2 | 4.22 | 0.48 | 0.57 | 8.8 | 7.4 |
| 2019 | 29 | 4.99 | 0.51 | 0.6 | 9.9 | 8.4 |
| 2020 | 15 | 4.99 | 0.62 | 0.73 | 8.0 | 6.8 |
| 2021 | 56 | 5.0 | 0.64 | 0.74 | 7.9 | 6.7 |
| 2022 | 11 | 6.95 | 0.86 | 0.98 | 8.0 | 7.1 |
| 2023 | 5 | 6.25 | 0.87 | 1.01 | 7.2 | 6.2 |
| 2024 | 2 | 10.75 | 0.92 | 1.06 | 11.7 | 10.1 |
| 2025 | 12 | 6.85 | 0.93 | 1.06 | 7.4 | 6.5 |
| 2026 | 1 | 11.0 | 0.98 | 1.11 | 11.3 | 10.0 |
Paired items: ratio price/home-cost(low) old median 7.6 -> new 8.3.
## 10. Verdicts on P1-P7 (rules fixed; applied to the numbers above)
| prediction | verdict | numbers behind it |
|---|---|---|
| P1 price level ~$3-4 (2016) -> ~$12 (now) | not supported (tentative, thin) | 2016 median item $4.25 (n=88 items, 24 restaurants), latest $7.15 (n=22 items, 14 restaurants) |
| P2 like-for-like repricing >= about CPI FAFH | supported (tentative) | 19 item pairs in 7 restaurants; median excess over FAFH 4.4 pp (supported if >= -5 pp); median change 43.5% vs FAFH 30.2% |
| P3 rise is mostly composition, not repricing | supported | mean rise $2.55; repricing share 24% (supported if < 50%); n restaurants 20 |
| P4 fancier (words, components, premium flags up; plain share down) | mixed | n=20; rose/fell words (8, 7), components (8, 6), premium (2, 3); plain 11->9 |
| P5 change spread across tiers, not only top | not supported (tentative) | tiers with n>=3: ['low', 'mid', 'high']; tiers whose median change >= CPI FAFH: ['low'] |
| P6 entry price ~$3-4 -> ~$8-10, faster than CPI FAFH | not supported | n=20 restaurants; median entry $3.92 -> $5.17 (41.45% vs FAFH 21.2%; excess 17.85 pp) |
| P7 plain dog share fell; ladder spread narrowed | not supported | plain share 55% -> 45%; median spread (restaurants with >=2 dogs both ends, n=11) $1.25 -> $2.0; n=20 |
Verdict rules (fixed in analyze.py, from the 'would count against' text in HYPOTHESES.md): P1 supported if 2016 median item <= $5 and latest median >= $10; P2 supported if the restaurant-level median excess over FAFH >= -5 pp; P3 supported if like-for-like repricing is < 50% of the mean rise; P4 supported only if words, components and premium flags each rose more often than fell AND plain-dog share fell; P5 supported if every tier with n>=3 has median change >= CPI FAFH; P6 supported if median entry <= $5 early, $7-11 late and above FAFH; P7 supported if plain share AND median ladder spread (restaurants with >=2 dogs at both ends) both fell. 'conclusive' needs n>=15 restaurants, 'tentative' 6-14, else 'cannot tell'.
## 11. Biases and limits
- Single source: every number is AllMenus (a delivery/takeout menu aggregator, 2024 snapshot dataset + Wayback copies of its own pages). It is not restaurant-by-restaurant dine-in pricing; AllMenus menu prices are often the delivery-order prices entered by the restaurant (sometimes marked up vs in-store). Template, scraping and menu-entry practices of AllMenus changed over time (2016 HTML list vs later JSON-LD).
- Survivor bias: only restaurants that are still listed with a menu in the Feb-2024 dataset are in the frame. Closed restaurants (and their hot dogs) are invisible; drops of a hot dog item are only observable in the random subset, and only for survivors.
- Outcome selection: the hot-dog-now set selects restaurants that have a hot dog now. It cannot estimate arrivals, and 'now' prices for these restaurants are conditional on keeping the item. Matched pairs further condition on the same item (name+description) existing at both ends.
- Wayback coverage: uneven; one 'first capture per year' snapshot is taken per target year; many AllMenus pages were never archived, so the early-end sample is a small, non-random subset of the frame (restaurants Wayback happened to crawl, probably more popular/older listings). Throttled at one request per 20 s.
- Frame: 'non-budget' cannot be enforced; AllMenus is dominated by takeout, delis, gyros, pizza and diners. Chain/quick-service filtering is by name list and cuisine tag (the dataset has no fast-food tag) and removed multi-location names (any name with >1 menu page).
- Time stamps: the dataset has no date (uploaded Feb 2024); 'now' means the latest Wayback snapshot (often 2024-2026) and the dataset snapshot, not necessarily today.
- Prices on AllMenus pages can be ranges or size options; the FIRST listed price is used.
- Small n: any verdict marked tentative rests on a handful of restaurants.
Home-cost method notes
Source file HOMECOST.md, sha256 a5a25c1b22bcc2e27b0cab8a9080d61a95d66860e341eb6f450afde04f1c880f.
# Home-cost-per-hot-dog series (built 2026-10-05) Files: homecost.csv (monthly 2016-01..2026-08), bls.json (raw BLS series). Basket per dog: 1 frankfurter (8 per lb) + 1 bun + condiments. Sources (all BLS): APU0000705111 frankfurters avg price $/lb (published only to 2022-04; no data after), CUUR0000SS05011 CPI Frankfurters (used to extend after 2022-04, spliced at Apr 2022), APU0000702111 white pan bread $/lb (bun proxy: 1.5 oz per bun low case; high case = $0.30/bun in Aug 2026 indexed by bread price), CUUR0000SS18043 + SS1804B CPI sauces/gravies and other condiments ($0.04 per serving set in Aug 2026, indexed), CPI food away from home CUUR0000SEFV, CPI all items CUUR0000SA0. Results (AP-based frank): 2016-01 $0.60-0.70 -> 2026-08 $0.97-1.10 (+58 to +63%); CPI food away from home +53.1%, all items +41.4% over the same months. Sensitivity (CPI-only frank, anchored at Aug 2026 level): much smaller rise (the BLS CPI Frankfurters index rose 18.5% Jan 2016-Apr 2022 vs +50.3% for the average-price series over the same months) -> the answer to 'did home cost beat inflation' depends on which BLS measure; report both. External cross-check: Chmura Hot Dog Index 2026 city values $0.80-$1.28 per dog (frank + bun + ketchup + mustard); Chmura says +24.7% since May 2019. Our series for May 2019 -> Aug 2026 is larger; unresolved. CostInflation HF grocery dataset medians looked too high (10 hamburger buns median $9.36; 20 oz ketchup $11.42) vs BLS-scale prices; NOT used for levels.
BLS series behind the home-cost figures
Summary of bls.json; the full monthly series are in the desk’s job folder.
BLS series as pulled by the desk (bls.json, sha256 d37effb45f358f19a043fcec9cbc8025e085534ac10f5531dd55bb47949ac762). Index values are not seasonally adjusted (CUUR series); the restaurant-comparison CPI in the pairs table uses the seasonally adjusted CUSR series from cpi.csv. APU0000705111 frankfurters, average price per lb: 2016-01 3.473; 2022-04 5.221, the last month published. Change 2016-01 to 2022-04: +50.3%. CUUR0000SS05011 CPI frankfurters: 2016-01 234.021; 2022-04 277.315. Change 2016-01 to 2022-04: +18.5%. CUUR0000SEFV CPI food away from home: 2016-01 259.958; 2026-08 397.868. Change: +53.1%. CUUR0000SA0 CPI all items: 2016-01 236.916; 2026-08 334.98. Change: +41.4%.
Notes
- The study’s parser is deterministic (JSON-LD and HTML list templates); no language model read a menu in the AllMenus design. The first design’s page screen used a small model through OpenRouter at a recorded cost under one cent.
- Rule amendments v3.1 (pet food, bulk and multi-piece orders) and v3.2 (hot-dog sections whose item names lack the word dog) were logged after reading interim results and applied to every snapshot.
- “Now” is the latest Wayback capture of each page (2024 to 2026); the Hugging Face dataset has no date.
- The capture pages quoted in the piece are text renderings, frozen in the piece’s Sources appendix with the sha256 of the raw archived bytes.