Where they were before
The app was already doing the hard part. People had built the habit of logging, and they were logging often. Workouts, sessions, biometric readings, week after week.
What it could not do was interpret any of it. A user could open the app and see that this week was slower than last week. The app could not tell them why, or what to change on Thursday. Coaching was the same for everyone, which in practice means it was aimed at nobody.
That gap shows up in the numbers as a plateau. People do not usually quit an app like this in anger. They just find they have less reason to open it, and one day they stop.
It is worth being precise about what was working, because it decided the whole approach. Acquisition was fine. Logging was fine. The habit existed. The product had already solved the problem most apps in this space never solve, which is getting people to show up and record something honestly, day after day.
That is a good position to be in. It also means the usual levers are gone. You cannot fix a plateau like this with onboarding, because people are already onboarded. You cannot fix it with reminders, because they are already opening the app.
The problem
A fitness app had thousands of users logging workouts every day but could only show them their own raw numbers back. Coaching stayed generic, retention plateaued, and the gap between tracking and actually improving stayed wide.
Why this is harder than it looks
This looks like a recommendation problem and it is not one.
In retail, if you get a suggestion wrong the customer scrolls past it. Here the same suggestion can be right for one person and wrong for the next, because the baseline is different. A drop in pace means something different for someone eight weeks into training than for someone returning after an injury.
The data is also messier than it looks from the outside. People log some days and not others. They forget, they train without their phone, they log a session twice. Anything built on top has to cope with gaps rather than assume a clean series.
And there is a trust problem underneath all of it. Tell someone something obviously wrong about their own body and they stop believing the next thing you say, even when it is right.
How we approached it
We started with the data already in the product rather than asking what else could be collected. There was years of it, and the first question was what it could honestly support.
The work was to find what actually separates the people who keep going from the people who drift. Not a general theory of fitness, but the patterns in this app, for these users.
We built the layer on top of the existing product rather than rebuilding it. That mattered for two reasons. The app kept working the whole time, and the team could see the coaching against real histories before any of it reached a user.
The metric was agreed before any of it was built. That is how every engagement here starts, and it is what makes the result a fact rather than an opinion at the end.
One decision shaped the rest: nothing went to users until it had been checked against real histories. Personal health data is the wrong place to find out that a system is confidently wrong.
That check is also cheaper than it sounds. The app had years of logged sessions, and a suggestion can be tested against what a person actually did next without ever showing it to them.
What we built
An AI analytics layer that processes each user's workout history, biometric trends and session patterns to generate personalised performance insights and adaptive next-step recommendations, surfaced in-app without rebuilding the existing product.
How we knew it was working
The number to move was session engagement, agreed at the start.
Engagement is easy to fake if you measure the wrong thing. More notifications will lift opens for a fortnight and cost you the user in a month. So the thing worth watching was not whether people saw a suggestion, but whether they acted on one.
That gives you a signal you can trust. If people are following a recommendation and coming back, the coaching is doing its job. If they are opening and ignoring, it is decoration no matter what the open rate says.
What changed
The app moved from a passive tracker to an active coaching layer. Session engagement rose 38%, users spent more time acting on recommendations than logging data, and early-stage churn dropped in the first two months.
Where it stands now
The coaching layer is part of the product now rather than a feature bolted to the side of it.
Because it reads the same data the app was already collecting, it keeps getting better as people use it. Every logged session is another data point about what works for that person.
The wider change is what the app is for. It used to be somewhere you recorded what you did. It is now somewhere that tells you what to do next.
If you are in the same position
If you have a tracking product with a retention plateau, the instinct is usually to add features. More charts, more badges, more reminders. It rarely works, because the thing people are missing is not another view of their own data.
The question worth asking first is whether your data can honestly support a recommendation. Not whether you have a lot of it, but whether it captures the things that would let you tell one user apart from another. If it does, the coaching layer is the highest-value thing you can build and it usually does not require rebuilding the product.
If it does not, the useful work is upstream. Capture the signals that would make personalisation possible, and come back to it. That is a less exciting answer, and it is the right one more often than people expect.
Either way it is worth deciding before you build, because a coaching layer on data that cannot support it is worse than no coaching layer. Users notice generic advice dressed up as personal advice quickly, and it costs you the trust you need for the version that would have worked.

