To Build an AI Coach, I Started Coaching in Real Life.

When you build software in a domain you know well, it's easy to assume you already understand the problem.
While building Kima, an AI basketball training app, we initially relied on my coaching knowledge. I have played and coached from the professional level down to summer camps for under 10s, so I felt I had a pretty good grasp on what made a good coach.
In our product meetings we had many conversations on the direction of what to build next, and what mattered most. We decided that the best way to get to the answers was to start coaching players, supplementing training with the Kima app, and seeing what was missing.
We recruited a small group of players to come in regularly for one-on-one training sessions. The players were not interacting with the app directly. They were getting normal human coaching, at a discounted rate, while we used the sessions to observe, experiment, and understand what was missing.
The early version of the app was able to analyse a shot, recognise patterns and report where technical improvements could be made. I felt the next thing to build would be structural. That's what I assumed the critical gap would be between what we had, and what we needed for the product to feel like it was really coaching you.
This turned out to be entirely wrong.

What we thought coaching was about.
Before running these sessions I thought the main product gap was structuring workouts.
What drills they should do and how to sequence them in a session.
This was something we had discussed at length and already started to build towards, including plans for a drill library and systems to structure sessions.
But once we started running sessions with players, it became clear that the drills themselves were not the interesting part.
For almost any skill in basketball there are hundreds of good drills available. The difference between a good session and a mediocre one was rarely the drill itself.
The difference came from something much more nuanced, what a coach chooses to do, or not do in each moment. I have coached a lot of basketball practices, but through this process I was doing something new, in that I was constantly analysing what I was doing and why I did it.
Throughout every session I was making decisions on when, how and what I communicated to the players. But only when I started focussing on that process did I realise how nuanced and delicate it is. Getting those decisions right is what matters most.
Timing matters more than accuracy.
One of the early assumptions we had about the product was that accurate analysis and immediate feedback would be the key to improving training. In these sessions I used Kima as an aid, listening to what it detected and deciding if and when to pass that on to the player.
We thought if the system could detect small mechanical issues in real time, and immediately notify the player, then training quality would be greatly improved.
One of the players I worked with during these sessions made me rethink that idea.
She is a high level player returning to competition after injury. The app noticed a pattern in her shooting, she sometimes straightened her elbow slightly too slowly in the final extension of the shot causing a flat arc.
The observation was correct. But it never happened twice in a row, she corrected the subsequent shot without intervention.
I deliberately chose not to mention it during the session at all.
I didn't want to interrupt the flow, and she didn't need the information in the moment because she was already fixing it.
After the session we spoke about it, and she wasn't even conscious of the correction happening. She was correcting something that felt off from one shot to the next without consciously thinking about it.
That moment highlighted something important.
Analysis can be correct, but a player doesn't always benefit from hearing it.
The real challenge of coaching is deciding when feedback will actually help.
Different players need very different communication.
Another player highlighted a completely different dimension of coaching.
He understands the game well and is capable of following highly technical feedback.
After almost every rep he would pause and look over at me.
He wasn't confused. He was waiting for confirmation.
I often repeated the same feedback, because each shot had the same characteristics, but he still needed to hear it.
That reinforcement helped him learn what the correct movement felt like, and what the wrong movement felt like.
Originally we had planned for the app to adapt feedback based largely on the player's experience level. A beginner might receive more frequent and detailed feedback, while an experienced player might receive less.
This player didn't fit that model.
Technically he could understand nuanced feedback. But his preference was to receive constant confirmation.
That preference had much more to do with how he learned than how experienced he was.
It made it clear that adapting feedback is not simply a question of skill level.

Experimenting with feedback frequency.
With another player I decided to experiment more deliberately with how much feedback actually helped.
Across three sessions we ran essentially the same type of shooting workout but changed the frequency of feedback.
In the first session feedback came roughly every five shots. In the second session it came every two or three shots. In the third session feedback was given after every shot.
I expected frequent feedback to disrupt rhythm. It didn't. In fact, the player preferred it.
This contradicted my expectations. I felt like I was speaking too much, and that it would become annoying for the player.
The constant micro-corrections helped him adjust small details of the shot immediately, and he felt that he got more out of the session.
But there was an important caveat. Feedback only worked when the difference was something the player could actually feel. If the change was too subtle to perceive, the feedback lost its impact.
Again, the critical factor was not whether the analysis was correct. It was whether the feedback was delivered in a way that the player could absorb and apply.
Things a human coach notices that the app may miss.
Another moment during these sessions revealed a different limitation. One of the players I was working with is currently rehabbing an injury. During a drill I noticed a brief grimace on her face.
Her movement still looked fine. Nothing in the mechanics of the drill suggested a problem. But the expression was enough to make me stop and ask how she felt. She admitted the injury was hurting, but she wanted to push through.
At that point my role changed. Instead of expecting her to regulate the intensity herself, I needed to actively manage the session and check in regularly.
This highlighted a constraint of our product. The app observes the session from a single camera position. A human coach can move around the court to see different angles with autonomy, this is an area where we need to think creatively on how we overcome the limitations we have.
Where software provides an advantage.
Running the app during these sessions also revealed something encouraging. Having Kima running while I was coaching let me see where it was already better than me.
Kima processes every shot and every movement simultaneously. A human coach can only focus on one or two aspects of a movement at a time.
Several times during sessions the system flagged patterns that I had not yet noticed. The app was already contributing to better training, and in observing what I added on top, it became clear what needed to be built next.

How this changed the product.
These sessions changed some of our product priorities. Earlier versions of the app included plans for a large drills library. After running real sessions it became clear that the drills themselves were not where most of the value lies.
The value comes from giving feedback at the right time and in the right way.
Our early designs had fairly fixed feedback structures. Real sessions showed us that the way feedback is delivered needs to be far more dynamic and adaptable.
What we are actually trying to build.
Human coaching is limited by time and availability. A player might work with a coach for an hour a week. But individual training for most players, most of the time, happens alone.
That is where Kima can provide the most value.
The goal is that whenever a player is training on their own, they want Kima running because it helps them improve.
Not because it replaces a coach, but because it helps them get more out of the work they are already doing.
The biggest lesson.
Going back to coaching while building the product forced me to analyse coaching decisions much more closely.
Correct analysis is not the hardest part of coaching. The difficult part is deciding what to do with that analysis.
And that nuance is exactly what we are now trying to build into the product.


