Northwind Fitness
Retention engineered into the program itself.
An adaptive training platform responding to recovery signals from wearables — lifting 90-day retention 42% against the prior generation app.
- Year
- 2025
- Duration
- 6 months
- Team
- 9 people
- Sector
- Fitness & Wellness
0%
90-day retention
Improvement over the prior app generation
0%
Session completion
Up from 44% of scheduled sessions
0.0×
Coach capacity
More clients per coach at equal satisfaction
0
Wearables supported
Normalized into one recovery model
Northwind Fitness
A digital fitness company offering coached training programs to 620,000 subscribers, with a network of 1,100 certified remote coaches.
To build training programs that adapt to the person following them.
Logo concept
A wind-bent compass needle — direction maintained under resistance.
#1E40AF#60A5FAFounded
2018
Headquarters
Boulder, Colorado
Employees
480
Sector
Fitness & Wellness
Every surface we shipped
11 designed screens across 3 deliverables, rendered live rather than captured as static images.
Marketing Site
Program positioning with coach matching.
Training Dashboard
Today's session adapted to recovery state.
Progress Analytics
Strength, volume, and recovery trends.
Coach Roster
Client assignment and session review queue.
Program Library
Training programs with progression templates.
Reports
Scheduled exports and compliance-ready statement generation.
Settings
Organization, team, and integration configuration.
Mobile application
Sign In
Create Account
Notifications
Athlete Profile
Across every form factor
The same design system, rendered at each breakpoint it has to survive.
The challenge
Northwind's churn was concentrated brutally early: 51% of subscribers stopped opening the app within 21 days. The programs were static — a plan written on day one ran unchanged for twelve weeks regardless of whether the user was recovering well, sleeping badly, or had missed four sessions. Users who fell behind found a plan that had moved on without them, and the most common exit-survey phrase was some version of feeling like they had already failed.
Research
- Cohort analysis of 40,000 users identifying exact abandonment points
- Exit interviews with 90 churned subscribers
- Coach interviews on how they adjust programs manually for clients
- Validation study comparing algorithmic adaptation against coach judgment on 200 cases
The solution
Programming adapts daily against a normalized recovery signal drawn from whichever wearable the user already owns — sleep, resting heart rate, and HRV where available, with graceful degradation to self-reported readiness when it isn't. A user recovering poorly gets a reduced session rather than the prescribed one; a user who missed a week gets a re-entry path rather than a plan four sessions ahead. The adaptation logic was validated against coach judgment on 200 cases before launch, agreeing with the coach's call 84% of the time and escalating most of the remainder.
UX decisions
Missed sessions never accumulate as a visible backlog
Exit interviews were emphatic. A growing list of skipped workouts was the single most common trigger for abandoning entirely.
Reduced sessions framed as the plan, not as a concession
Presenting a deload as 'taking it easy today' implied falling short. Presenting it as what the program calls for kept adherence intact.
Recovery data explained in plain language, never as a raw score
A 62 HRV score means nothing to most users and invites anxious optimization. 'You slept poorly — today is lighter' drove the behavior we wanted.
Coach review queue prioritized by adaptation uncertainty
Coaches don't need to review routine sessions. Surfacing only the cases where the engine was unsure is what let rosters grow without quality loss.
Features
- Daily adaptive programming against normalized recovery signals
- Ingestion across 14 wearable ecosystems with graceful degradation
- Re-entry paths rather than accumulated session backlogs
- Coach console with uncertainty-prioritized review queue
- Strength, volume, and recovery trend analytics
- Coach-athlete messaging with session context attached
- Program library with progression templates per goal
Technology
Architecture
Wearable data arrives through per-vendor adapters that normalize into a common recovery schema, with explicit handling for missing signals rather than imputation — a user without HRV data gets a model that doesn't pretend to have it. A Python adaptation service runs nightly per athlete, producing the next session with an uncertainty score that determines whether a coach reviews it. Node services back the React Native app and coach console over PostgreSQL, with Redis caching program state. Session and recovery history is retained in full so any adaptation decision can be reconstructed.
Results
90-day retention improved 42% over the prior app generation. Session completion rose from 44% to 67% of scheduled sessions. Coaches carry 2.4× more clients at equal satisfaction scores, since the review queue surfaces only genuinely uncertain cases. The adaptation engine agrees with coach judgment 84% of the time on the ongoing validation sample.
Lessons learned
- 01Removing the missed-session backlog was a one-line product decision with the largest single retention effect we measured. The most important feature was the one we deleted.
- 02Validating the adaptation engine against coach judgment before launch gave us both a quality bar and the coaches' buy-in. Shipping it unvalidated would have met justified resistance.
- 03Explicitly modeling missing wearable signals rather than imputing them kept the system honest with users who own less-capable devices — which turned out to be most of them.
How the engagement ran
6 months across 4 phases with a team of 9.
Churn Analysis
4 weeksIdentified where and why users abandoned in the first three weeks.
Churn modelCohort analysisUser interviewsAdaptive Engine
10 weeksBuilt recovery-responsive programming validated against coach judgment.
Adaptation engineRecovery modelCoach validation studyWearable Ingestion
6 weeksNormalized 14 wearable ecosystems into a single recovery signal.
Ingestion layerNormalization modelGap handlingCoach Tooling
6 weeksBuilt the review queue that let coaches scale their rosters.
Coach consoleReview workflowEscalation rules
Have a problem shaped like this one?
We start every engagement with a paid discovery sprint. You get an architecture assessment and a delivery plan — whether or not you continue with us.
Related engagements
About this case study: Northwind Fitness is a fictional client. This engagement, its metrics, and its quotes are illustrative work product created to demonstrate our delivery approach, architecture reasoning, and design process. They do not describe a real customer.


