📄

Pitching the Menu Search to Boulder Newsrooms

Private deliverable. Enter the hub password to continue.

That's not right. Try again.

← Back to the hub

Pitching the Menu Search to Boulder Newsrooms

August 3, 2026 · Rewritten around the menu price index. The closures angle is out, at Annette's direction.


Stop. Fix the prices first.

You cannot pitch a priced-menu dataset to a newsroom this week, because a reporter who opens it will find a $460 chocolate chip cookie at Cheba Hut and a $380 iced mocha latte at Panera.

I checked what's behind those numbers and the raw values name the bug:

Item Venue Stored price Raw text captured
Chocolate Chip Cookie Cheba Hut $460.00 460 CAL
Hazelnut Mocha Frozen Java Panera Bread $460.00 460 Cal per
Warrior Bowl Vitality Bowls $450.00 Medium 450 c
Wings (8 Pieces) Blackjack Pizza $453.00 453-1,093
Chicken, Bacon & Ranch Cheba Hut $490.00 490/980/1470

Calorie counts are being stored as prices. Cheba Hut, Panera, Vitality Bowls, Rush Bowls and Blackjack all publish calories on their menus, and the extractor is taking the number nearest the item name without checking what it is.

Scale: of 21,615 priced Boulder items, 713 are $60 or more. 158 of those are genuine catering trays (the wording says box, tray, platter, feeds). The other 555 are unexplained, and the ones I sampled are all calories. That's 2.6% of the dataset, but it is heavily concentrated: Panera 54, Vitality Bowls 47, East & Co. 42, Cheba Hut 38, Rush Bowls 34.

Not everything high is wrong. Sforno's $450 Sassicaia and $480 Dom Perignon are real wine prices, captured correctly with a dollar sign. That's the tell, and it's the fix.

The fix, which is small

At extraction time, reject a number when:

  1. The raw text contains cal, CAL, calorie, or kcal anywhere near it. This alone kills most of the 555.
  2. There is no currency symbol and the value is a bare integer of 3+ digits. Real menu prices under $100 essentially always carry a $ or a decimal. 460 is a calorie count; $4.60 is a price.
  3. The raw text is a slash-separated run of three ascending numbers (490/980/1470), which is a calorie ladder for three sizes, not a price ladder.
  4. The raw text is a range with a comma-thousands number (453-1,093).

Keep anything with an explicit $, which is what protects the real wine list.

Then re-run the extract and spot-check the top 50 by price. Until that's done, this pitch stays in the drawer.


Who actually wants this, and who doesn't

Worth being precise, because I got this wrong in an earlier draft.

A reporter does not care about their website's SEO. It isn't their job, it usually isn't their decision, and telling a food writer their meta descriptions are missing is pitching the wrong person. Site performance is an owner, marketing director or IT concern.

So the offers split by audience, and they don't cross over:

Audience What they want What you offer
Reporters, food writers, editors A story with numbers nobody else has, and reporting time saved The menu price data. Never an audit.
Restaurant owners, marketing directors Customers, and their own site working The free SEO audit. That's the SEO Believer list, a different campaign entirely.
Civic bodies, hotels, event organisers Something genuinely useful for their visitors The dining search itself, as a resource to link

The link routine already buckets prospects this way. Newsroom and blog buckets get data. Nobody in this document gets offered an audit.


The story

Not "I built a search tool". A tool is not news. The story is what the data shows.

You can answer a question nobody in Boulder can currently answer: what does a given dish actually cost, across the whole town?

Every number below is the middle 80% of the market, tenth to ninetieth percentile, which excludes both the catering trays and the calorie-count bug. These are safe to quote once the fix above is done.

Dish Places serving it Typical range Middle of the market
Green chili 32 $2.00 to $16.07 $7.75
Taco 36 $3.50 to $19.89 $12.50
Burrito 48 $6.99 to $17.30 $9.49
Wings 50 $6.00 to $27.00 $12.00
Burger 47 $6.77 to $23.00 $16.99
Margarita 38 $8.50 to $38.00 $13.25
Steak 54 $11.79 to $34.20 $17.99
Pizza 28 $10.99 to $28.86 $19.75
Latte 34 $4.50 to $8.95 $6.00
Pancakes 27 $5.95 to $16.00 $11.00

The whole dataset: 21,615 priced items across 539 Boulder venues. Median item, $12.00.

The three lines a reporter will actually use

  1. Green chili spans 8x across town, $2 to $16 for what sounds like the same bowl. The most Boulder possible version of a price story.
  2. A burger has a narrower spread than a margarita. Food is priced more consistently than drink, which is not what most people would guess.
  3. The middle of the Boulder market is $12.00 an item. One number for "what does it cost to eat here now", and it's checkable.

Who to send to

Outlet Why Referring domains
Boulder Reporting Lab Runs the Nibbles food newsletter, covers this beat weekly 1,339
Daily Camera Largest local reach, covers Boulder dining regularly 19,746
BizWest Business desk. Prices are an economics story for them n/a
Boulder Weekly Alt-weekly, likes a data story with an edge 4,625

Send Boulder Reporting Lab first and give them a few days.

Rules before you send

  1. Fix the calorie bug first. Non-negotiable. One checked number that's wrong costs you the outlet permanently.
  2. Say you run tasteboulder.com in the first three lines.
  3. Do not ask for a link. Ever, including the follow-up.
  4. One story per email. Prices only. No closures, no audit offer, no second dataset.
  5. Under 200 words.
  6. One follow-up, a week later, two sentences. Then stop.

Draft 1: Boulder Reporting Lab

Subject: What a green chili actually costs in Boulder, 32 places compared

Hi [name],

I'm Annette Thompson. I built tasteboulder.com, which meant collecting every published menu in Boulder: 21,615 priced items across 539 places.

It turns out you can now ask questions nobody could answer before. Green chili runs from $2 to $16 across 32 restaurants, an eightfold spread for what sounds like the same bowl. A burger has a tighter range than a margarita does. The middle of the whole Boulder market is $12.00 an item.

If any of that is useful for Nibbles, the data's yours. I can send the full breakdown for any dish you want, or the whole set. No credit needed, and I'm happy to explain how the prices were collected so you can check them.

Annette

Draft 2: Daily Camera

Subject: Every menu in Boulder, priced. 21,615 items.

Hi [name],

I run tasteboulder.com, a Boulder restaurant directory. Building it meant collecting every published menu in town, and the result is a price picture nobody else has: 21,615 items across 539 places.

Some of it is genuinely surprising. Green chili ranges from $2 to $16 depending where you order it. A margarita varies more in price than a steak does. Typical Boulder menu item, $12.00.

Happy to hand over the whole dataset, or pull whichever dish you'd want to write about. No conditions, no credit required.

Annette

Draft 3: BizWest

Subject: 21,615 Boulder menu prices, if you want a number on dining costs

Hi [name],

I built a directory of every restaurant in Boulder, tasteboulder.com, which produced something that belongs on a business desk: every published menu price in the city. 21,615 items across 539 venues.

It gives you a measurable answer to what eating out in Boulder now costs, rather than an anecdotal one. The median item is $12.00. The spread within a single dish is often wider than the gap between cuisines, which says something about how operators are handling their costs.

The data's yours, no conditions. Happy to explain how it was collected.

Annette


If someone bites

Have ready: a CSV of one dish across every venue with prices, the method in a paragraph (where menus came from, how prices were parsed, what was excluded and why), and an honest note that catering items are excluded from the ranges. Offer a call.

Volunteer the limitations before they find them. Menus go stale, some venues publish no menu at all, and PDFs parse imperfectly. A reporter who hears the caveats from you trusts the rest. One who finds them alone stops trusting all of it.

Published to Annette's hub. Rebuilt from the source markdown, so edit the source and rerun rather than editing this page.