13 — WEB & APIS · 2026
Grill Index
A free public API that scores grilling conditions 0–100 anywhere on the map and finds your best window to cook, tuned for charcoal, gas or smoker.
- Built
- A free public API and site that scores grilling weather.
- Stack
- Cloudflare Workers, TypeScript, Hono, Zod, Durable Objects, OpenAPI 3.1; 295 tests.
- State
- Live; text alerts switched off.
LIVE · UPDATED 2 OCT 2026
Public and free to call; text alerts are built but switched off.
grillindex.cblabs.appCarter Barnes · cloud engineer, federal Azure · Contact








What it is
A public REST API and site that scores grilling conditions 0 to 100 for any point on the map, finds your best window to cook, and tunes itself for charcoal, gas or smoker. No key required, MIT licensed, with a published OpenAPI 3.1 spec.
It answers what the score is now and when today's window is, the best window in the next 48 hours, which of 45 metros wins today, and what the week looks like, by city or ZIP.








How it works
- Runtime
- Cloudflare Workers, TypeScript in strict mode, Hono and Zod. No database and no build step beyond Wrangler.
- Scoring
- Every factor scores 0 to 100, then a weighted geometric mean blends them with weights for charcoal, gas or smoker. The grades are grilling grades, not school grades: an A means light it now.
- Rate limiting
- A Durable Object, because no key required means the limiting has to be real: 60 requests a minute per IP. Weather is cached in cells of roughly seven miles for 30 minutes.
- Alerts
- Subscriptions in Workers KV and an hourly cron sweep against each subscriber's local clock. Sign-ups are closed and sending is switched off.
- Spec
- OpenAPI 3.1, published. MIT licensed.
By the numbers
- 45 metros
- ranked on one national board
- 0 keys
- needed to call it
- 60 req/min
- per IP, enforced by a Durable Object
- 295 tests
- passing
Decisions
- 01
Charcoal, gas and smoker are three physics problems
A smoker cares about sustained ambient temperature and wind; a gas grill barely cares about the wind. One score with a cooker parameter beats three products.
- 02
One bad factor has to sink the score
An average lets a perfect afternoon outvote near-certain rain. A weighted geometric mean does not: one near-zero factor sinks the whole score, while middling factors still move it normally.
- 03
No API key means the rate limiting has to be real
It forces real rate limiting and a cheap runtime. Both constraints made it better.
- 04
The second product proves the architecture
Golfdar runs on the same scoring, windowing and ranking engine and took days, not months. That is the evidence the first one was factored correctly.
- 05
Text alerts ship switched off
The whole pipeline is live, with sign-ups closed and sending disarmed. Once a texting account exists, arming it is three one-line commands, which is exactly why a checklist stands in the way: a findable postal address, a non-text way to opt out, and walking the full consent flow on a real phone. Until then, nobody gets a text.
What went wrong
- 01
The first national board crowned a city that was asleep
Ranked on conditions right now, at 2 a.m. Eastern it put New York first at 98, and all ten leaders were in the dark, because 2 a.m. is calm, mild and dry. The board now ranks each metro's best upcoming window. A review then found a second path to the same bug: a fallback for days with no good window quietly scored the present again, and a city calm at 2 a.m. and rained out from dawn took the crown at 99. It now falls back to the best hour a person would actually grill.
- 02
The smoker board ran the wrong recipe
A smoker needs six steady hours and no rain; a grill needs a short block at lunch or dinner. The national board judged smokers on the grill path, named the wrong winner by 19 points and recommended smoking into a 95% chance of rain. Each cooker style now runs its own path.
