CB Labs

03 — WEB & APIS · 2026

Golfdar

Scores golf conditions 0–100 for any point on the map, 16 days out, finds your best tee window, and gives courses a weather-based tee-sheet pricing signal.

Built
A golf-conditions score and a tee-time pricing signal, as a site and an API.
Stack
Cloudflare Workers, TypeScript, Hono, Zod, Open-Meteo, OpenAPI 3.1; 438 tests.
State
Private preview at golfdar.com.

PREVIEW · UPDATED 2 OCT 2026

Behind an access code at golfdar.com: request access.

golfdar.com · access code required

Carter Barnes · cloud engineer, federal Azure · Contact

Screen capture · Golfdar.com's single-course conditions view.

What it is

It started as 'is it nice enough to play today' and ended as a product built to sell to course operators. It answers four increasingly commercial questions: what is the score now and when is today's best window; what does the week look like, up to 16 days out; which of 40 destinations is best on a day I name; and which nearby course is the best weather per dollar.

Then the one that makes it a business: a tee sheet should not be priced the same on a still 74° morning as on a 25 mph November afternoon. Golfdar produces that pricing signal for course operators, and the operator keeps control of the price.

Screen capture · How golfdar.com builds the number.

How it works

Runtime
Cloudflare Workers, TypeScript in strict mode, Hono and Zod, tested with Vitest. No database; rate limiting through a Durable Object.
Data
Weather from Open-Meteo, 16 days out, scored on six factors (temperature, wind, rain, course wetness, comfort and daylight) and collapsed into one number.
Golf model
It scores a round, not an hour: two hours for nine holes, four and a half for eighteen. It remembers the last 48 hours of rain as course wetness, and accounts for frost delays and daylight to finish.
Pricing
Per-slot rate multipliers from 0.70 to 1.30 in 0.05 steps. It never surges a slot that scores under 70 and damps itself the further out the forecast is. Hysteresis (small forecast moves keep the previous price) lives in Workers KV when it is bound, and is a graceful no-op when it is not.
API
OpenAPI 3.1: /v1/index/golf, /window, /week and /best, plus nearby courses, weather per dollar and geocoding. The golfer side is keyless; pricing takes a key.
Access
A private preview at golfdar.com behind an access code, with a public request-access link.

By the numbers

16 days
of forecast scored
40 destinations
ranked against each other
0.70–1.30 ×
range of price multipliers it can suggest for a tee time
438 tests
passing, typecheck clean

Decisions

  1. 01

    The value is the single score, not the forecast

    Everyone gets the same forecast numbers for free. The value is the opinionated collapse to one number a golfer trusts, and the window-finding on top of it.

  2. 02

    Prices change only when the forecast moves enough to matter

    A price that flickers with every forecast refresh is unusable to an operator. The state that prevents it lives in KV, and the system degrades gracefully instead of refusing to start when KV is missing.

  3. 03

    Gate the preview, don't hide the product

    An access code with a public request link collects interested operators, which is worth more right now than traffic.

  4. 04

    Same engine, different sport

    Grill Index came first and runs the same scoring, windowing and ranking engine; Golfdar reused it rather than starting over.

Next · 04 / 18Signal BeaconAn LED sign on the lab wall, run from its own dashboard: printers, launches, live airspace and game day, each with designed offline and empty states.