TrainState — AI Fitness Coaching for Athletes
AI coaching app for performance athletes. Built on Next.js, Supabase, and Claude. Free to use. Approaching soft launch.

Generic fitness apps are built for people who want to lose weight and hit step counts. They're not built for athletes who think in training blocks, track RPE, manage periodisation, and care about the relationship between load and recovery. TrainState is built for that second group.
The core idea: give athletes a coaching layer that actually understands how training works — not just "great job hitting your goal" notifications, but analysis that accounts for training load, adaptation cycles, and the specifics of performance sport. Claude does the heavy lifting. Athletes log workouts and biometrics; Claude processes that data with context about periodisation principles and surfaces insights that a good coach would catch — overreaching patterns, recovery deficits, readiness signals before key sessions. The system gets more useful as it accumulates data about how a specific athlete responds.
The coaching layer runs 12 parallel Supabase queries on every message to build a biometric-aware system prompt, streams responses via a sentinel-based parser that separates status updates from coach prose, and handles complex flows like multi-week plan generation with duplicate prevention and transactional calendar saves. The stack is Next.js 15, Supabase, the Claude API, and Vercel.
Currently in beta with real athletes.
Why this matters
The interesting challenge with AI coaching is that generic advice is useless to a serious athlete. The system needs enough context — training history, biometric trends, periodisation phase, recent load — to give responses that are actually specific. Building the data pipeline to make that context available on every message, without killing response latency, was the core engineering problem.