Koers
AI product · Consumer
AI product design

Visible reasoning is the product.

"Beta riders cited Mia's explanations as the primary differentiator from every tool they'd used before."

Client Koers
Type AI product · Consumer
Deliverables AI product design · Product strategy · Design system
§ 01
01 — Overview
The problem with silent adaptation

”I’ve been a serious cyclist for 25 years. I’ve also used TrainingPeaks with a real coach. And I still didn’t know why my plan changed.”

I looked at every serious training platform — TrainerRoad, JOIN, Athletica, HumanGO, FasCat. They all do the same thing. AI adaptation happens in the background. The plan changes. You’re presented with the result.

A plan you understand is one you’ll follow when it’s hard. A plan that just appears is one you’ll override the moment it asks something uncomfortable. The problem wasn’t the AI. The problem was that the AI was invisible.

Type
AI-native product · Internal / Lintel Studio
Platform
Web · React Native mobile
Stack
React · Supabase · Vercel · Claude API · Wahoo API
Role
Solo founder · Design + development
§ 02
02 — Thesis
A design decision, not a philosophy

Mia explains every adjustment she makes.

Mia — the AI coach — explains every training adjustment in plain language, in the voice of a coach. Not a tooltip. Not a changelog. A reason. The explanation isn’t a transparency feature layered onto the product. It’s the thesis the whole product is organized around.

The competitive analysis made this clear: every platform’s AI adapts silently. Every competitor treats the reasoning as internal logic. Koers treats the reasoning as the product. When an athlete understands why the hard interval moved to Thursday, they do the Thursday interval. That’s the outcome everything else serves.

Design thesis
”Every competitor adapts silently. Koers shows its work. That’s the product.”
§ 03
03 — Onboarding
Trust starts before the plan exists

The first design problem isn’t the plan. It’s the conversation that creates it.

Every other platform starts with forms. Koers starts with Mia asking questions. Your job situation. Your family. Your injury from six months ago that you’ve been working around. The race you’ve been quietly thinking about for two years.

The AI is doing the work of intake — building a model of a person — but it has to feel like being heard, not processed. The tension between those two things is where the design lives. Get it wrong and nothing that follows earns any trust.

The plan that Mia builds from that conversation isn’t delivered as output. It’s explained, the way a coach would explain it after they’ve been listening. The creation is the first act of visible reasoning.

§ 04
04 — Design system
One surface. Four states. No extra screens.

Most apps solve complexity by adding screens. Koers solves it differently.

The Today screen is a single surface that reads the athlete’s current situation and adapts its entire composition: weather-blocked, ride window open, pre-ride briefing, post-ride debrief. The composition changes. The design language doesn’t. Four distinct contexts — one interface an athlete can internalize without thinking about it.

The design system was built before the first screen. Token naming went semantic from the start — not color values, but intent states (urgency, caution, confidence). That decision paid off during the build: every new state had a vocabulary to work in.

Koers Today — weather blocked state
Today · Weather blocked
Koers Today — ride window open state
Today · Ride window open
Koers Today — pre-ride state
Today · Pre-ride
Koers Today — post-ride state
Today · Post-ride debrief
§ 05
05 — Plan & Coach
The season as a story. The coach in conversation.

The plan surfaces the season as a narrative. The coach chat responds to anything.

The training plan view — the almanac — frames fifteen weeks as four phases written by Mia as a story. An athlete reads it like a book: the chapter that’s open today is the ride they’re doing. Context accumulates. The season has shape.

The coach chat isn’t a support interface. It’s a reasoning surface. Mia responds to plan questions, training science, things the data can’t see. The intelligence lives in the context injected into each conversation — not just the model underneath. Asking “why did my long ride move?” gets a coaching answer, not a system response.

§ 06
06 — Constraints
What made this hard to build

The hardest constraint wasn’t technical. It was discipline.

The Wahoo API requires authenticated OAuth — no simple webhook. Supabase handled the data layer cleanly. But the real constraint was architectural: AI coaching quality depends entirely on context quality, not model selection. The prompt engineering and context injection are the product. The model is infrastructure.

The hardest part was resisting the urge to build more screens before proving the thesis with the ones I had. The Today screen genUI system is the right foundation. If I started over I’d be even more ruthless about shipping only that and nothing else until beta feedback confirmed the direction. The plan and chat screens came next because users asked for them — that’s the right order.

§ 07
07 — Outcome
What beta validated

Twelve riders. First week of beta. Thesis confirmed.

Beta riders cited Mia’s explanations as the primary differentiator from every tool they’d used before — including tools with a real human coach. Web app shipped in two weeks from zero. React Native mobile is in active development.

The signal that mattered most wasn’t usage — it was what riders said when they described the product. They didn’t describe features. They described trust. That’s the thesis.

Outcome
”Dozen riders in week one. 2-week ship time. Every competitor adapts silently — Koers shows its work. That’s the differentiator.”

Something worth building?

The practice is small by design and runs on referral. If the work fits what you're building, get in touch. That's usually where it starts.