50 users. 15 days. $0 in ads
An AI fitness coach that calibrates from behavior, not a form. No self-reported fitness levels, no generic routines. What started as a personal coach became a retention program for a gym with 800 members.
Built and shipped in one week as an MVP. The product didn't need marketing, it needed to work well enough that users told other users.
Product Snapshot
This case study documents a pivot from "assign routines by self-reported fitness level" to "build a coach that reads behavior and calibrates from real data." The AI agent consults a RAG system built from biomechanics documentation and muscle anatomy to generate personalized training plans, not templates.
In 15 days with zero official announcement, heybro reached 50 active users. All completed at least 2 sessions per week. 5 members who were about to cancel their gym membership didn't. Because they felt attended to by their personalized AI coach.
Context
Gym · 800 members · 4 coaches
Problem
Attention at scale
Solution
AI coach that learns from behavior
Team
Solo Product Designer / AI Designer Enginner · Pro coaches
Outcome
50 active users · 5 retained members
Scope
Strategy · AI behavior · RAG · UI/UX
STACK
Stitch · Figma · Claude · Codex

Context
800 members. 4 coaches. The math was never going to work.
heybro began as a gym retention tool. The initial hypothesis was simple: if members had structured training plans, they would stay longer.
Research changed the direction. Members weren't leaving for a better gym or a lower price. They were leaving because they felt alone, unheard, and unattended. 4 coaches for 800 active members made consistent personal attention mathematically impossible.
The product needed to deliver what the gym couldn't scale: a coach that knew each member, adapted to their behavior, and stayed present every session.
The Real Problem
Members weren't leaving for a better gym. They were leaving because nobody noticed.
“I think.. sometimes I have an idea what exercises to do. But I don't know if I'm doing the right ones for me, at the right weight, in the right order.”
The problem was not access to workout routines. It was the gap between a generic plan and a plan that felt built for this specific person, today, given what they actually need to progress.
| Evidence | What it meant | Product decision |
|---|---|---|
| Members felt unattended despite paying | The problem was emotional, not informational | Design a coach that feels present every session |
| Self-reported level was unreliable | Labels didn't match actual capacity | Build calibration from behavior, not a form field |
| Generic routines felt dismissive | Personalization is a trust signal, not a feature | Generate every routine — never serve a template |
| Members who skipped often stopped returning | Break point was abandonment, not dissatisfaction | Design an explicit recovery behavior for missed sessions |
| Traditional fitness app | heybro model |
|---|---|
| User selects a plan from a library | Coach generates a plan from behavior and biometrics |
| Fitness level is self-reported | Level is inferred and calibrated over time |
| Rest times are fixed defaults | Rest times are calculated from biomechanical analysis |
| Missed sessions reset or ignore | Missed sessions trigger a recovery adaptation |
The Insight
Self-reported fitness level is the weakest signal in the product.
Week one. MVP live. Users onboarding. The form asked: what's your fitness level? Users selected beginner. We gave them beginner routines. They hated them.
Not because the exercises were wrong, because the routines felt generic. Selecting "beginner" didn't mean they wanted basic movements. Their body knew more than the label did.
The opposite was also true. Users with a year of gym experience called themselves advanced, but didn't want to be assessed at all. They wanted the coach to figure it out.
One week of interviews. One clear conclusion: the coach needed to read behavior, not labels.
| Insight | Evidence | Decision |
|---|---|---|
| Beginners rejected beginner routines | "This feels too easy" — post-MVP interviews | Remove fitness level from onboarding entirely |
| Advanced users didn't want to be assessed | "Don't ask me, just give me a good routine" | Build hypothesis from biometrics, refine from session data |
| Generic routines broke trust fast | Session abandonment in week 1 pre-RAG | Define biomechanics + anatomy RAG before generating any routine |
| Missed sessions were primary churn trigger | Member exit interviews at gym | Recovery behavior is core, not an edge case |

The Decision
More questions at signup was the wrong answer.
The obvious solution was a smarter form. More questions. More granular self-assessment. We rejected it. More questions before the first routine meant more friction before value, and it still relied on self-perception, which we already knew was wrong.
Remove fitness level from onboarding
More granular self-assessment form
Self-perception is unreliable. Behavior is the signal.
Coach needs more sessions to calibrate accurately.
Week 1 is a calibration phase, not a final plan.
RAG from biomechanics + anatomy documents
Generic templates or LLM-only generation
Generic output breaks trust faster than no output.
Every routine is grounded in validated training science.
Generate 3 plan options: Progresiva · Balanceada · Intensa
Single assigned routine
User agency increases commitment and surfaces preference data.

Coach Architecture
The architecture was conceptual before it was technical.
User input becomes profile signals. Profile signals combine with RAG retrieval from biomechanics and anatomy. The result determines routine structure, exercise selection, load progression, and rest intervals.
RAG Query Flow
User Profile Input
Age · Weight · Height · Goal · Training preference · Days
RAG Query
Biomechanics per exercise + Muscle anatomy per group
Coach Generation
Exercise selection · Load calculation · Rest intervals · Series progression
3 Plan Options
Progresiva · Balanceada · Intensa
User Selection
Choice signals training preference for future calibration
Active Plan
Weekly adjustment · Load monitoring · Phase progression
Phase progression across the full training plan:
Phase 1
Base
Phase 2
Acumulación
Phase 3
Afinación
Phase 4
Especialización
Phase 1
Base
Phase 2
Acumulación
Phase 3
Afinación
Phase 4
Especialización
| Variable | Source | Output |
|---|---|---|
| Exercise type | Biomechanics RAG | Base rest window |
| Muscle group | Anatomy RAG | Recovery modifier |
| Load intensity | User session data | Adjusted rest time |
| User history | Logged sessions | Progressive calibration |
Rest time is not a default. It is a calculated output from the biomechanical analysis of each exercise for each user.

Behavior Framework
AI behavior mattered more than UI polish.
The product value lived inside how the coach responded to real training situations, not ideal ones. The same interface could either keep a member on track or create the exact friction that leads to abandonment, depending on how the system behaved.
Adaptation
When user misses a session
Analyze missed day, extract highest-value exercises, combine with current session into a recovery plan.
Use when: continuity matters more than plan purity.
Progression
When sessions are consistent
Monitor load mid-week, adjust for next session, prepare user for next training phase.
Use when: the user is ready to move forward.
Recovery
When user reports discomfort
Query RAG for biomechanically safe replacement, flag rest window, adjust surrounding exercises.
Use when: safety matters more than plan completion.
| Behavior rule | Why it existed |
|---|---|
| Never serve a generic routine | Generic output breaks trust faster than no output |
| Never ask for fitness level | Self-reported labels are less reliable than behavioral signals |
| Never ignore a missed session | Abandonment starts with the first uncovered miss |
| Never apply a fixed rest time | Rest is a biomechanical calculation, not a default |
| Never let discomfort go unaddressed | Safety behavior is a core feature, not an edge case |

Interaction Design
Every interaction pattern existed to reduce friction, not add features.
| Capability | Why it exists | What changed |
|---|---|---|
| 5-step onboarding, no level question | Reduce friction before first value | Collects behavior signals, not labels |
| 3 generated plan options | User choice signals preference for calibration | Agency increases plan commitment |
| Time-aware home copy | Motivation is contextual, not generic | "Los nocturnos entrenan diferente, dale." |
| Biomechanical rest timers | Rest is part of training, not dead time | Coach stays present between sets |
| Missed session recovery modal | Abandonment starts with first uncovered miss | Plan adapts. Goal doesn't. |
| Discomfort replacement | Safety is a coach responsibility | RAG finds safe alternative immediately |
| Phase progress tracker | Users need to see what coach is building toward | Base → Acumulación → Afinación → Especialización |
| Radar chart by muscle group | Balance visibility prevents overtraining | Coach surfaces imbalance before user feels it |


System Flows
Four flows that define how the coach behaves.
Flow 1. Onboarding to First Routine
Landing
"¿Sientes tu cuerpo estancado?"
Step 1. Profile
Name · Sex · Age · Height · Weight
Step 2. Structure
Fullbody / Isolated groups / Upper-Lower + Load type
Step 3. Training days + Start today?
Muscle group preference
Step 4. Goal
Muscle · Definition · Fat loss · Endurance · Feel better
Step 5. Account
Gym · WhatsApp · Password
Coach Generation
RAG query: biomechanics + anatomy
3 Plan Options → User selects → Active plan
Progresiva · Balanceada · Intensa
Flow 2. Missed Session Recovery
User opens app
Coach detects missed session from previous day
Recovery modal
"[Name], el [day] no entrenaste. ¿Quieres combinar ese día con tu rutina de hoy?"
Yes
Combined session: highest-value exercises from missed day + today's routine
No
Continue normal routine: plan adapts next week automatically
Flow 3. Active Session
Warm-up reminder modal
"Antes de empezar, dedica 5 minutos a calentar"
Exercise N of total
Anatomy illustration · Series progression · Log reps + weight
Rest timer between series
Biomechanically calculated · "Descansa, bro. Te lo ganaste."
Rest timer between exercises
Preview next exercise during rest
Session complete
"Bien ahí bro, le diste duro hoy!" · Summary: weights logged
Flow 4. Discomfort / Injury
User reports discomfort
Via ⚠️ icon on exercise or direct input
RAG query
Biomechanically safe replacement for same muscle group
Replacement presented
Rest window flagged · Surrounding exercises adjusted · Session continues
Impact
15 days. Zero announcement. Black and white posters on gym walls.
| Metric | Meaning | Decision generated |
|---|---|---|
| 50 users in 15 days, zero marketing | Organic adoption signal | Validate at scale before investing in acquisition |
| 100% completed 2+ sessions/week | Coach reduced friction of showing up | Keep calibration as core retention mechanism |
| 5 retained members | Retention has direct dollar value for gym | Retention is the primary business KPI, not engagement |
| 10 following full plan | Trust in coach grows over time | Phase design matters — each week builds toward the next |
| 1 week to MVP | AI tools accelerated without reducing depth | Use AI for speed. Keep decisions human. |
These are early-stage signals, not scale claims. The useful question is what each metric changes in the product, not whether the product has proven long-term growth.
Reflection
Three things that are true about AI products after building this one.
The first lesson was that an AI product is not defined by the presence of a model. It is defined by how the model behaves when the user's context is incomplete and the routine has real consequences for their body.
The second lesson was that self-reported data is the weakest signal in fitness products. Behavior tells the truth. Labels reflect aspiration.
The third lesson was that retention is designed, not earned. The missed session recovery behavior, the rest timer language, the time-aware home copy, none of those are decoration. Each one reduces the probability that the user decides not to come back.
What I'd Validate Next
The questions that matter after the first 50 users.
- Does coach calibration accuracy improve measurably after week 2 vs week 1?
- Does missed session recovery behavior reduce weekly churn vs no intervention?
- Does showing 3 plan options increase commitment vs a single assigned plan?
- Does the phase tracker increase session completion rate in weeks 3–4?
- Who owns the biomechanics RAG document maintenance, and at what cadence?
- Can the coach detect plateau patterns and suggest phase advancement proactively?