AfitPilot v1 → v2
From PDFs and ChatGPT, through a self-service launch that didn't work, to a coach-first platform that finally does. Written from the inside — what I tried, what broke, and what the year taught me.
The PDF era
AfitPilot started about a year ago, when I was handing out PDFs to athletes. The programs were written in ChatGPT. I'd open a text document, describe the athlete in as much detail as I could — their profile, intentions, goals, what they could lift — and feed that to the model.
I'd ask ChatGPT to generate a master plan, the next set of upcoming goals, and the first weekly session. That session was the thing I actually gave to the athlete.
Once the week was over, the athlete filled in a Google form. I'd ask the standard things: how did the week go on a scale of one to ten, how hard was it, what was your fatigue. I'd even ask them to log session by session. The problem was that this was very manual, and athletes weren't motivated to log every session through a form. The editing and input load was too high — both for the coach and the athlete.
The self-service web app, and December 1st
Alongside the PDFs, I was building a web app. The idea was to bring it all under one roof: the large language model and the athlete platform where they could log, with the LLM reading their weekly logs and generating their next week's plan. On the web app, the model would have the athlete profile and the master plan all in one place.
I launched the web app on December 1st. It was a disaster.
Most of the time, the language model was unreliable. It hallucinated, didn't understand context, and didn't return the kind of quality I needed. With the PDFs, I'd been overriding it three or four times before getting a good weekly session — feeding it context like "this athlete doesn't like that type of exercise," or "she isn't available this week." I gave that context before each session, and only then did the output land. When I removed myself from that loop, the AI just wasn't good enough.
And the athletes didn't give the kind of feedback the AI needed to refine itself — not the way a coach would. So I spent my weekends again, doing the same thing: refining the next week's plans, one athlete at a time. The web app started as a self-service product for athletes. It ended with me still overriding the AI every week.
What I tried
I tried to improve the backend, the reasoning, the context gathering — so the LLM would finally do my work and I wouldn't have to spend so much time refining. I tried many things.
I changed the prompts. I shrank the input to the LLM from 18,000 tokens down to 8,000. I built an exercise library with enriched metadata so the model could pick the best exercises and stop defaulting back to its own preset.
Because I realised the model would default to the same narrow set of exercises regardless of the athlete profile. As an example: there's roughly a one-in-two chance an athlete will get a full-round plank, a face pull, and a lunge in their weekly session. That tells you something about commercial LLMs like ChatGPT and Claude — they're generic, and overriding them for a specific use case, athlete by athlete, is harder than people think.
All of it helped. None of it fixed it. Week after week, it was still me, refining each generation, looking at the output, correcting it before it went out.
The pivot — building the coach platform
So I had to find a solution. While I was still refining each week behind the scenes, I started building a coach platform in parallel. I was desperately trying to override the athlete web app — overriding the weekly generations so athletes could still use the product and get quality workouts, even though, behind the scenes, I was the so-called AI.
That's how AfitPilot 2.0 happened. I only just launched it four days ago.
The platform is inspired by the standard coaching platforms out there — TrueCoach, Trainerize. Coach-heavy, meaning the coach has a platform, can invite their clients, and can coach them session by session, exercise by exercise. There's a calendar. You can switch, swap, paste sessions, select multiple sessions and turn them into templates to apply to similar athletes.
What makes it different
What probably differentiates my coaching platform is that it was built as an AI-first product. The original intention was to make AI do all the work of a coach. So even after the pivot, there are things on this platform that save a lot of time for the coach — without the coach having to do anything except prompt the AI.
- Weekly AI generation
- A coach can prompt inside a week and the system will generate the whole week — with attached exercise videos and the metadata of each exercise. Muscles used, movement patterns, energy systems. Enriched data, end to end.
- Session-level generation
- The coach can generate a session through the AI or write it manually, saving them time either way.
- AI-assisted custom exercises
- When a coach writes a custom exercise, they can pre-fill the sets, reps, and tempo with AI — saving time on the manual input as well.
- Master plan generation
- The coach can generate a full season — the macrocycle, mesocycle, microcycle — so they can see on a week-to-week basis what the intent is in relation to the athlete's goals. This is a feature I haven't seen in other coaching platforms.
- Adaptation timeline
- There's a timeline showing what the system is adapting to the athlete, what the coach is adding as notes, and what the athlete is saying as weekly reflections. You can see context change over time. If an athlete is injured, we monitor it through the timeline. Eventually they recover, and the context stays relevant — you can scroll through the start of the injury to the end, with every adaptation, every coach note, every system change in between. That's what makes the platform adaptive.
- Messages and email updates
- The coach can contact the athlete directly through messages. The athlete gets email updates when their program changes or when a new message arrives. The coach gets the same.
- Load monitoring
- There's a daily readiness score for each day. Every log tracks training load, volume, intensity, tonnage, joint stress, movement patterns, and the athlete's imbalances — across a week and across a session.
- Athlete impersonation
- The coach can step inside the athlete's web app — see exactly what the athlete sees, see how the sessions will look to them. The coach can move in and out of impersonation, and can override the athlete's inputs if the athlete can't do it themselves.
- Multi-week and session select
- Multi-week selection and session selection — so the coach can create templates for their athletes.
Where this leaves us
The first year of AfitPilot was a year of learning what AI couldn't do without a human in the loop. v1 was the lesson. v2 is what the lesson taught me to build.
The next chapter is what AfitPilot becomes from here — but that's still being written.