I know, I know- it feels like every developer with a power meter and an LLM API key is building an AI coach lately. “AI Coach Fatigue” is real, but I couldn’t resist building the tool I actually wanted to use: Coach Watts.
I’ve been struggling with the friction of existing tools. I wanted something that felt like a “competent interface” for my data - not just a simple wrapper, but something that understands the context between my Intervals.icu calendar, my Whoop recovery, and my nutrition.
What is Coach Watts?
It’s a virtual AI coach that acts as a bridge between your training data and your recovery/lifestyle metrics.
Key Features:
Daily Morning Briefings: It looks at your Intervals.icu calendar for today, compares it to your Whoop recovery/sleep from this morning, and gives you a “Proceed, Modify, or Rest” recommendation.
Deep Retrospective Analysis: Every week/month, it uses Gemini Pro to do a “Chain-of-Thought” analysis—identifying trends where high strain correlated with low
recovery or where your power progression is stalling.
Multi-Source Integration: It pulls from Intervals, Whoop, Strava, and even Yazio (Nutrition) to get a full picture.
The “Dev” Side of Things:
It’s Free: While it’s in active development, it’s completely free to use. I’m covering the token costs for now while I refine the agents.
Open Source & Self-Hostable: I’m a big believer in the Intervals ecosystem’s transparency. I’ll be open-sourcing the code soon, so for those who want full control over their data, you’ll be able to self-host your own instance.
Why I’m posting:
The project is now substantially complete and functional, but it’s still “in the lab.” I’d really love to get feedback on the implementation and logic from people who actually know their ATL from their CTL.
If you’re interested in trying a more flexible, dev-minded coach (or just want to help me find bugs), check it out here:
I know signing up for new tools just to see if they work is annoying. So, I’ve enabled a public workout page where you can see the AI analysis in action without creating an account. You can check out a sample analysis of a real ride to see exactly how the “brain” works:
I’m having a lot of trouble creating workouts. It freezes several times when I try to do it. The AI sends poorly coordinated workouts. And after several attempts, it couldn’t get it to work! It sends poorly structured interval workouts. This bug should be reviewed.
At the moment, races are not being ingested from Intervals.icu, so the AI doesn’t have visibility into them. In the Goals section, it’s possible to set up events, but I’m planning to refactor this soon—taking your recommendations into account—since the training plan generation needs some improvement. I’ll focus on this over the next few days.
To be honest, I’m still relatively new to endurance racing and workout planning. Right now, I mostly pass data to the AI and expect a structured response, but I need to deepen my own understanding so I can design the system more effectively.
My idea is to introduce a clearer concept of “Goals,” where users can define what they’re working toward—such as an event, weight loss, and so on. On the Goals page, you can already set up Event Planning (Race, Gran Fondo, etc.). The intended approach is to ingest races and events from the Intervals.icu calendar, create corresponding goals from them, and then pass those goals to the AI during training plan generation.
I also plan to make the prompts more transparent, so we have better visibility into why the AI suggests certain things and what data it’s basing those suggestions on.
Hi! Thanks for your quick reply. If you need any more ideas to improve Coach Watts, just let me know. You’re doing a fantastic job and you can improve a lot more.
I’ve just released v0.4.0, and the project is now open source!
You can view the source code, contribute, or log issues directly on GitHub.
Here are the highlights from the latest release:
New Integration: Hevy We’ve added full support for Hevy. You can now connect your account to sync and analyze your strength training data alongside your other activities.
Other Improvements
GPS Maps: Added a map view to workout detail pages to visualize your routes.
Mobile UI: Polished the layout on mobile devices for a smoother experience on the go.
Better Sharing: Shared workouts and profiles now generate proper previews (OpenGraph) for Discord and social media.
Stability: Under-the-hood improvements to data ingestion and Whoop syncing to make everything run more reliably.
The whole changelog can be read on the release page.
Feel free to star the repo or leave feedback here if you run into any issues.
Is the training plan you’re prescribing not suitable for what I want? It’s a mountain biking plan, but it includes walking and other things that don’t make sense. Could you look into what’s going on?
I am working on the planning functionality right now. The AI is confused about the goals and how to achieve that, but I see a way to make it work. Please allow me a couple of days to fully fix that. I will keep you updated.
I am currently rebuilding the Training Plan creation section based on the feedback I received, and I hope I’m heading in the right direction.
The new approach allows users to define Goals, which can optionally be linked to Events. Users may have multiple goals, and not all of them need to be event-based—for example, a general goal like weight loss.
Training Plans are goal-driven. During plan creation, the user selects a goal (such as event preparation, which may be linked to one or more events), chooses a training strategy, and then submits it to the AI. The AI determines the appropriate training blocks and lays out the plan on a weekly basis.
Once the plan is generated, users can fine-tune it by adjusting weeks or individual workouts, reordering training days, pushing sessions forward, and making other refinements as needed. As an added bonus, the AI can also generate coaching messages for each workout.
I’m also still figuring out the best way to incorporate gym sessions, running, and swimming to make the system more holistic.
Early feedback is highly appreciated, as this is an area where I’m still building experience. I believe that with your expertise, we can shape this into something truly stellar.
Fyi, none of my December workouts are loading into the app. I do see November and earlier. It’s listing my max heart rate at minus 150.
I’m also having trouble getting all my workouts listing in intervals. Right now only my runs are showing up ( but the December ones are here). My strength training and hockey used to appear in intervals but not since I got my new iPhone and I can’t figure out where to do the permissions to link everything.
HBi hdkiller
I try to generate the workout, the app seesm stack: no workout is generated.
Just a few more stitches and it will be perfect.
Thank you for your commitment and dedication to your personal project.
Unfortunately, I’m currently unable to connect additional Strava users because Strava heavily restricts initial API usage. In the first week of January, I plan to contact them to request a higher quota. Until then, I’ll use the time to ensure the app is fully compliant with Strava’s API Terms of Use.
One of the main challenges with Strava is the strict limitation on API access. As a result, even Strava workouts ingested via Intervals.icu are incomplete—for example, heart rate stream data is missing—because Intervals.icu is not permitted to forward these data to third parties through the API.
I see the issue with the workout generation and will fix it today. I’ll notify you all once it’s resolved.
Sorry for the inconvenience this caused. I’ll make sure to deploy and test more thoroughly in the future to avoid wasting your time.
It should be working now. Please note that the event linked to the goal must be at least four weeks in the future.
The issue was on my side due to an incomplete deployment. You’ll need to abandon the current training plan (which wasn’t generated) and create a new one.