Simon Says Cycling
My training stack was scattered across four tools. So I designed and specced a single app around them, with Claude as the coach.
The problem
My cycling setup worked, but it was glued together by hand. A workout library in Notion. Scheduling in intervals.icu. Rides landing in Strava. Analysis in yet another chat window. Every Sunday I played integration layer between my own tools.
What it does
One app that closes the loop. It holds a library of 455 structured workouts. Every Sunday it asks how much time I have per day. A planner composes my week from the training block, that availability and my recovery data, and I approve it with one tap. Approved sessions land on my bike computer automatically. When a ride comes back, the app pairs it with the plan, scores compliance and writes a short coach analysis. A quick summary is posted to the ride's Strava description in Dutch. And when life happens, I tell the coach in chat: it proposes a change, I confirm, it updates everything.
How it works
Next.js PWA on Netlify, Postgres on Supabase, deployed from GitHub. Data spine is the intervals.icu API: activities, wellness, calendar. Strava webhooks trigger the analysis pipeline; the Strava API carries profile updates and the description comments. The coach runs on the Anthropic API with one strict rule: it separates facts from interpretation and never schedules anything without my yes. The planner itself is deterministic code, not a model. The AI analyses and converses; it does not silently decide.
Design
Built on Apple's iOS 27 design language: translucent surfaces, floating capsule tab bar, SF Pro. One rule holds the interface together: color only ever encodes training intensity. Every workout and every ride is drawn as its power profile, from a 56 pixel list row up to the detail view.
The icon
A race bike above the zone ramp. The rider over the work. Three variants for iOS appearance modes: dark, light and a monochrome tinted template.
Screens
Status
Designed, specced and mocked end to end: seven screens, a nine-prompt build briefing for Claude Code, icon set, and the full integration research. In active development as a personal, single-user app.






