Free Adaptive Training Plans: Prova Endurance

Hey everyone,

I’m Luiz Tessarolli, a senior software engineer from Brazil, and amateur MTB racer who stopped training seriously for a couple of years to focus on career and family.

Now that I wanted to get back on training, and there is a plethora of AI Coach’s and Apps and they all claim to be the “best tool whatsoever”, but then again, its an LLM wrapped with some custom instructions, that may or may not fix LLMs biggest problems, hallucinations, memory, and incoherence between sessions. I’m not saying they are bad in any way, I’m saying is that I don’t know how they are made and what they actually want.

So I built one for myself. With the rules and governances that would make me trust an LLM generated output a little better, instead of the “trust-me bro” vibe, Prova Endurance justifies every claim from a previously indexed and approved scientific paper corpus (currently with 110 papers on it), with the quotes and the papers to prove where a suggested claim came from, or, if its from its own judgment, transparently said so, and all suggestions are treated as only that, suggestions, until you review and approve it yourself.

The MCP server did a good job, but I wanted to see some charts, then I added a nice UI to it.

It turned out too good to keep completely private, so I’m opening it to everyone:

The following is an LLM generated description of Prova Endurance:

The basic idea is a little different from “an AI coach.”

Your Claude, ChatGPT, Gemini or Le Chat is still the thing you talk to. Prova Endurance connects to it through MCP. The AI handles the conversation and reasoning; the Prova server stores your training history and profile, calculates things like training load, fitness and zones, and checks proposed plans against a set of training rules.

That distinction matters to me.

LLMs can be very convincing while still getting numbers wrong or losing context over a long conversation. I didn’t want the model inventing training data or quietly changing things.

The server currently has a research corpus of 110 notes based on published papers. When the coach gives a reason for a session or plan, it either cites that research or explicitly says that the recommendation is the coach’s judgement.

There is also a “judge” on the server. Plans are checked for things like load progression, weekly load, spacing between hard sessions, recovery weeks, easy-session distribution and taper structure.

And when the AI proposes a change, it doesn’t get to silently apply it. The athlete accepts or declines it, and the decision is recorded.

There is one important exception:

Once a plan was approved and is running, the next week is filled in automatically as the weekly prescription and emailed to the athlete. You can then change it through a proposal.

There is also a Coach tab in the web app where you can inspect proposals, decisions, observations, profile changes, emails and the tool calls the AI made to your data. You can also revoke a connected AI app.

For data, you can connect intervals.icu, import a Garmin Connect export, or upload FIT/GPX/ZIP files. Planned workouts can be downloaded as FIT files, and with intervals.icu connected they can be published to your calendar. (Mine syncs to Garmin devices automatically)

I should also be upfront about where this is today.

This is early. I’m currently the only athlete using it. I’ve mostly used it for my own Cycling/Strength trainings.

I’m not presenting this as a replacement for coaches, and I’m definitely not claiming it has already proven anything at scale.

I built it because I enjoy building software, I already have the infrastructure and AI subscriptions, and I wanted to solve a problem I personally had.

If you’re curious, give it a try and tell me about it.

2 Likes

The “trust-me bro” line is the most accurate description of this category I’ve read here. I’m an engineer and a triathlete too, and I’ve been building in this space as well — a coach that lives in Telegram, reads Intervals and writes the sessions back into the athlete’s own calendar — so I read your post with interest.

The citation layer is the part I haven’t solved, and it’s the one I keep thinking about. My honest question: does it move the needle with athletes who aren’t engineers? I can convince a software person with a paper reference. I’m much less sure it works on someone who just wants to know what to do on Tuesday, and that’s the person who pays. If you have any signal on that from your early users, I’d like to hear it.

The other thing I keep failing at is adherence. What happens when the plan collides with real life and the athlete simply doesn’t do the session? That’s the failure mode that kills retention in my experience, and a paper doesn’t fix it. If Prova has an opinion about that, it’s the part of your design I’d most like to read about.

Hey Alvaro, good questions, and I don’t have a definitive answer to either yet.

On citations: no idea yet. Two people signed up from this thread but nobody has built a plan, so I can’t tell you how a non-engineer reacts. Honestly I don’t expect most athletes to open the papers. For me the point is more about keeping the model honest. It has to look things up before it suggests anything, and when it’s just guessing it has to say so. The athlete mostly sees “here’s why this week looks like this”. And thats the whole point for it to at least feel different from “trust me bro”.

On adherence: I’ve been there too, a plan that assumes a life I don’t have.

What Prova Endurance does is track what actually happened with each planned session: done, done differently, skipped (you can say why), or skipped with no explanation.
Then the next week gets adjusted and written from that, not from what the plan hoped would happen.

Missing a session doesn’t trigger a whole replan, and the coach is told never to guilt you about it. It just adapts.

Does that fix retention? No idea. It’s my bet, not something I’ve proven. Happy to compare notes if you want, sounds like we’re chasing the same problem.

Also, I want to shout out to the 2 fellow members that joined Prova Endurance already, Thank you very much!
Let me know your first impressions and how can I improve the experience better.
You can DM me here or send me an e-mail at [email protected]

On citations, the part I’d push back on is the corpus. If the point is keeping the model honest rather than the athlete reading papers, then the thing that matters isn’t how many papers are indexed, it’s whether the retrieval can say “I have nothing on this”. A model with a citation requirement will always find something to cite, even when the question is one nobody has studied, and to the athlete that reads exactly like the trust-me-bro version, just with footnotes. If yours can refuse and say “this is me guessing”, that’s the useful half, and I’d bet it’s the half that’s hard to ship.

On adherence we ended up in a similar place from the other end. Intervals is the source of truth, so if Tuesday got skipped, next week is written from what actually happened and not from what the plan hoped. No guilt, no full replan, the athlete just tells the bot in plain language what they did instead.

Two other bets worth knowing about. The model never writes the workout syntax: it fills a schema and the code renders the file, so a hallucinated interval length can’t end up on the watch. And injuries are rules it can’t override — I’m carrying a distal biceps tendinopathy and it kept programming loaded supination I can’t do, so now that’s a hard constraint. Zones by heart rate, not power, because most people I know don’t own a power meter.

I don’t have an answer on retention either, and I’m not going to pretend otherwise. Mine is TrainerAI, Telegram plus Intervals, 9.99 a month with 14 days trial, and the numbers are small. Happy to compare notes, DM is fine.

Exactly, its indeed of the hard parts. As stated, models have the tendency to comply with the user’s requests no matter what, and in the process they can make judgements or claims that have no way to back up in the corpus, and in that case it does say so. It also says plainly that a miss in the corpus does not means inexistence, it just means that no indexed paper have material on the subject. And we can always add more papers to the corpus at any given time.
I opted to do it that way so I can be sure that the LLMs are referencing pre-approved papers only, instead of reasoning and citing papers that clearly have marketing or commercial interests and favor the products/brands that sponsored them. Not saying that a sponsored paper is bad or wrong in any way, just that it “might” be biased.

Its a good moment in time that we can have technology that adapts to our specific limitations and can help us achieve our goals without judgements.

I really hope you can achieve your goals and grow your product!
The market is very competitive, and thats why i’ve decided to not compete at all, and just provide it free for anyone.

Quick Update:
Some new people just joined, and, I’ve identified a few edge-cases and bugs in my Activity Sync with Intervals.icu that was causing some of the workouts not to be imported properly.
I’m working on the fix right now, and should be done soon.
If you find missing activities, try re-syncing (just ask your AI Agent to do that for you)
Also, apparently, Strava doesnt allow thirdy party to download data syncd from them to Intervals, so, if your sessions come from Strava, then we might not have access at all;

We’ve surpassed the 10 registered Athletes milestone!

My sincere THANK YOU!

If you guys can quickly share your first impressions, which barriers you hit, problems you’ve encountered, and value that Prova Endurance delivered to you, that would be AWESOME, and it can help me improve the product and encourage more users to try it themselves.

:confetti_ball: :tada:

I’m the wrong person for first impressions, since I’m building the same kind of coach rather than using yours. What I can offer is the barrier I’d bet on.

It isn’t the papers or the sync, it’s the first week. Nobody can tell whether an adaptive plan is worth it until it has survived a few weeks of their actual life, and most people decide in the first three sessions whether they’ll keep talking to the thing. The citations, the OAuth, the activity import, all of that is invisible to the person standing at that decision.

The questions I still have on my own build are the boring ones: what happens when someone goes quiet for ten days, whether the coach notices or just keeps writing sessions into an empty week, and what it does the week they come back. If you’ve already hit that one, I’d like to hear how you handled it.

I can’t get chatgpt to make a plug in that works.

Hi Matt, I’m really sorry about that, and thanks for flagging it. It was a bug on my side, not a ChatGPT setup problem. Here is what was wrong, in plain OAuth terms.

Prova Endurance exposes an MCP server behind OAuth 2.1: the AI app registers itself, you approve it on a consent page while signed in, and it receives an access token plus a refresh token to renew it. My identity provider rotates refresh tokens, which is the recommended practice: each refresh token is single-use, and every renewal hands back a new one.

The bug: when you approved an AI app, the server reused the refresh token of your signed-in web session for the new connection instead of obtaining a separate grant. Two holders of a single-use token cannot both renew. Whoever refreshed first won; the other got invalid_grant on its next renewal and was dead from then on. ChatGPT renews right after connecting, so it failed at once. A second app, or your web session itself, could lose out the same way, so some people may also have been signed out of the web app for no visible reason.

The fix, live since today: each AI-app connection now gets its own token grant through a standard token exchange (RFC 8693) for the same user, so every connection and the web session renew independently. I tested it with a free ChatGPT account on Web just now and it worked.

Please try REAUTHORIZE again in ChatGPT and it should work.

Connections that are working today keep working. The step by step for each AI app is at Set up Prova Endurance . If it still fails, post the exact error text here and whether it happened on the web or on the phone, and I’ll dig in straight away.

And with that, I’d like to share this SS of Prova’s dashboard:

Surely, slow and steady growth!

Now 20 registered Athletes with over 11k imported activities!!

Thanks again for everyone that’s trying it out, and I really hope it can help you achieve your goals!

Still no luck.

it seems to not like the android app chatgpt too. Always wanting to use the desktop to create the plugin. I had no such trouble with stas.run so I suggest there is an implementation optimisation that can assist the user experience!