(Yet Another) AI ChatGPT Coach

Hi Emile,

Right now, we are with ChatGPT, currently the best regards integration with API/Oauth and custom Schemas. Once MCP (Modern Context Protocol) is more widely adopted I’ve a plan to move to this, so the app will work seamlessly with any LLM supporting this, Claude included. ChatGPT has it in restricted Beta right now.

BR

Clive

1 Like

FYI - Whenever the GPT app calls Cloudflare (edge for Intervals.icu) it always gets fresh data. Never cached data. I’m completely stateless.

Hey Clive!

Thank you for all the effort you put into this. I’m currently trying to check it out and was able to sync intervals with your AI Coach. When I ran a summary I was the agent told me data was missing for sleep and I should enable sleep sync in Garmin. Howerver intervals shows me data for the sleep duration and the quality. Am I missing something?

I used the following prompt after placing manually several A-races into my intervals calender.
“I want to see the workouts for week 15 (Monday 2/2 till Sunday 8/2). This is a restweek. Make these and place them in intervals.icu as Type ride/workout.”

Hi Derfelix

Thanks for this report, I’ve identitied the issue and will release a patch in next day or so to ensure the welness report covers this in full. I’m testing in my environment and it looks much better.

br

Clive

Hey Clive,

Thanks for looking into this so quickly. I am glad you were able to identify the issue and are working on a fix.
In the meantime I’ve also observed another issue. The days in the weekly report don’t match my actual training days. For example Monday is shown as Sunday, Tuesday is shown as Monday, etc. I’m not sure if this issue is related to the timezone I’m in (GMT+1). I’ve attached a screenshot to better illustrate the point. This weekly report was generated at around 9:40 am local time on Wednesday the 28th.

Kind regards,

Felix


I just pushed an update, and the data should now appear in wellness reports. I will look at this daily load also - thanks for that. Im also CET so will check if it’s a timezone issue. Please note if you have Strava only activities Im not allowed to see those (Strava API limitation). Always best to add in Garmin manually or other source, or directly in Intervals.

All,

I’ve pushed a major rendering update for all reports. For weekly, season, wellness and summary (annual) you should see more consistent reporting for each request you make. I’ve tried not to devalue the coaching advice given by the APP or CHATGPT interpretation, but you may notice some differences. I would appreciate the feedback as I can tweak this by config-based design now.

Thank you all for using the APP and providing feedback

Clive

Hello Clive,

I just ran a full wellness report and am happy to tell you that the sleep data has now been incorporated in the report.

Thank you for your hard work!

Kind regards,

Felix

1 Like

@Clive_King, I have been playing with your ChatGPT APP for the past 2 weeks and just wanted to show my appreciation and thank you for your hard work, this is a fantastic tool !

Just one feedback from my perspective. I work a lot and, as others, this may impact my regularity on the bike (with some weeks more busy than other on the bike). the App tends to interpret my busy weeks at work (=less time on the bike) as if I overreached the week before and as if I needed some time to recover and it tends to base its analysis mostly on this parameter. In reality, it’s just that my schedule was more busy that week and I feel perfectly fine (maybe my data are saying the contrary).

Anyway, thank you again, this is amazing!

1 Like

thank you Charles for the feedback. Makes all the hard work and late hours worth it :folded_hands:t3: I’ve been so busy myself of late with non sports training (brain training ) that its also seeing me tapering but thats the way coach models work of course, its always going to be based around the volume, the stress, the recovery. Just make sure your wellness data is good. HRV and sleep is a major tell of your readiness despite being off the bike. It’s always a balance and I certainly use HRV as an indicator before a race or hard session.

best regards

Clive

1 Like

Another update for all you coaches. I’ve now enabled send the report to Chat in intervals.icu. Inside ChatGPT chat after you ask for a report, ask it to send to a chat recipient.

This ID can be the Chat ID which is seen in chat window to another athlete, intervals ID of your coach or fellow athlete or even just to log into an activity ID.

for example:

“Send full report to Athlete ID ######”, the ID of an athlete can be found in settings or chat ID in URL. eg https://intervals.icu/chats/47

Please note new OAuth permission is needed for chat so logout (give it 1 minute to logout) and login again within connected apps in ChatGPT.

Clive

A mi me pasa lo mismo. Ha creado una plan semanal y cuando lo pasa a intervals lo hace como nota y no como ejercicio de ciclismo.

When you ask to create a plan specify you want a workout. It will default to note if not specified. e.g. “Create a plan for next two weeks and add to intervals as workouts”

regards

Clive

BUG FIX:

Future Forecast should now compute correct values; when counting a rest day with load Value of 0 (rest day/mobility etc) failed to then complete the remaining forecast days. This is now fixed. e.g.

:crystal_ball: Future Forecast

  • Projected CTL: 72.7
  • Projected TSB: +6.7
  • Trend: Increasing load with maintained freshness

Clive

Hi Everyone,

Lactate-Based Zone 2 Calibration

I’m looking for Lab tested athletes who have LT1, lactate mmol/l values.


Summary

Zone 2 is now personally calibrated using lactate data when available, with automatic fallback to FTP-based zones when lactate confidence is insufficient.


What Changed

Introduced lactate-inferred Zone 2 (LT1-based) instead of relying solely on generic %FTP Bannister zones.

Zone calibration now adapts to the athlete’s measured metabolic response, not population defaults.


How It Works

  1. Lactate data ingestion

    Detects lactate samples (HRTLNDLT1 (mmol/l) and HRTLNDLT1P power pair) from activities.

    Computes mean, latest value, sample count, and lactate–power correlation.

  2. Validation & confidence

    If lactate–power correlation meets threshold → lactate calibration is trusted.

    If data are sparse or correlation is weak → system falls back to FTP-based zones.

  3. Personalised Z2 calculation

    Infers LT1 (~2.0 mmol/L) from mean lactate.

    Computes Z2 as a narrowed aerobic range (≈65–75% FTP when lactate ≈2 mmol).

    Outputs explicit Z2 power bounds (W and %FTP).

  4. HR alignment

    HR Zone 2 is aligned to lactate Z2 using HRR and LTHR context.

    Ensures power- and HR-based Z2 represent the same metabolic intensity.


What the Athlete Sees

Higher, narrower Z2 than generic models when aerobic efficiency is high.

Consistent Z2 across reports (weekly / season / summary).

Clear distinction between:

recovery (< Z2),

true aerobic endurance (Z2),

tempo creep (above Z2).

Safety & Fallbacks

Automatic reversion to FTP-based zones if:

no lactate data,

insufficient samples,

weak lactate–power correlation.

No impact on CTL/ATL/TSB or load accounting.

Outcome

Zone 2 reflects true aerobic steady state, not a broad textbook range.

Reduces “grey zone” accumulation.

Improves alignment between power, HR, lactate, and durability metrics.

to implement the HRTLNDLT1 and HRTLNDLT1P custom fields please see attached setup guide

How it works:

Note LT2 assumes your FTP right now, as long as that is up to date.

Once you have adequate samples, simply ask after you have done a weekly report, “what is my lactate z2 and comparison” and also “compare to my Z2 HR”

keep me posted

Clive

I had exactly the same question.
Glad it’s answered here. The LLM was hallucinating about it already :slight_smile:

nice initiative!

1 Like

I’ve just made a change to ensure that when WORKOUTS are created that it will always use the correct format to create the planned event. Now you should see when asking to create workouts for the week or from a ‘date’ for a period of say 7 days, it will add workouts with a structure of :

- 10m Ramp 60-85% FTP
- 3m 55% FTP easy spin

- 4m 110-115% FTP VO2
- 4m 55% FTP recovery
- 4m 110-115% FTP
- 4m 55% FTP recovery
- 4m 110-115% FTP
- 4m 55% FTP recovery
- 4m 110-115% FTP
- 4m 55% FTP recovery
- 4m 110-115% FTP

- 10m Ramp 70-40% FTP cooldown

Which translates to:

If you add a RACE with simulated intervals, it will get added like this:

I hope this helps! Sorry for not addressing this earlier.

Clive

2 Likes

Hi Clive

Just stubbled across your app as I was looking into building my own AI coach but will try yours first. I’m off to be lab tested for VO2 max and LT1 tomorrow so this is perfect timing.

1 Like

:tada:

We have over 1,000+ users now, Coach ChatGPT APP, has surpassed my expectation completely, small seeds grow into big trees! Honestly a Big-Hearted :heart_eyes: thank you from me!

I have added a buymeacoffee link on the homepage and github repo to help cover the backend costs if you feel it’s worthwhile! No obligation, and as ever feedback is always Welcome.

Good luck everyone. And thank you to my first supporters ! Gareth and Andrew.

Every day is a bug fix or enhancement day!

Bonne Journée!

Built with :heart: for endurance athletes — by Clive King .

5 Likes