Surf Trip Finder.
Surf Trip Finder.
A friend sent a joke into the surf group chat. Three hours later it was software.
The joke was a reel — some guy in Bali had automated his surf checks: good waves detected, villas found, trip package dropped into the group chat with dates. Funny. Except we surf North Devon, one of my closest friends lives there, and the group chat has the same standing question every week: is the weekend worth the drive?
First commit at five past midnight. By three in the morning the pipeline ran end to end: marine forecasts from three wave models, wind ensembles, tide extremes from two tide authorities, bank holidays — pulled twice a day, scored, and pushed to my phone as a WhatsApp-ready overview with a poll. One tap and the group chat gets its answer: Pumping, Good, Marginal, or Skip.
The scoring is the real work — and it recently got honest about who it serves. The first version scored three ability tiers per beach; a week of real calls exposed the flaw — a glassy one-foot day could read as “good,” and nobody in the chat drives three hours for glassy ankle-high. So the model was re-scoped to the actual crew: wave size now gates the entire score — the three-to-five-foot sweet spot scores full marks, small clean days can’t sneak past it, and anything past eight feet is out — with wind, swell period, tide window, safety, weather, and daylight scored beneath it, and expected temperature and rain on every report. Four beaches share one offshore forecast; what separates them is spot logic — wind shelter, tide behaviour, how each break handles the size. On top sits a separate confidence rating: model agreement, run-to-run stability, wind-ensemble spread, lead time. The system tells you the call and how much to trust it.
Then the rest of the group woke up. One friend had moved to Australia — by late morning Sydney East was live. Another is in New York — Rockaway followed the same day. Adding a region is one JSON file: beaches, coordinates, timezone, holiday calendar. Zero engine changes. No servers either — the whole thing runs on scheduled workflows and commits its own state back to git.


