(Yet Another) AI ChatGPT Coach

Hi All,

Like many others here who have been asking David about AI Integration of Intervals.icu, I’ve taken a slightly different approach and created a ChatGPT APP (`[available in its webstore here]

(ChatGPT - Intervals ICU Coach V5 (Railway T2 Engine)).

A little history…

This is a personal project at this time (no fee), and it’s primarily developed to help support my team and its coaches. I’m an IT professional by day and for the last year I’ve been battling with customers about how to get the best from AI.

The major challenge I encounter daily with AI and LLM’s is the plausibility of answers it feels it must provide, any gap it just makes up an answer, a guess or something that pleases. This is a major cause of mistakes and errors, particularly with numbers, and we know how important they are to us.

My first attempts at engaging LLMs where frustrating in that even if I provided the data to LLM’s it would serialise this data and also instruction and then decide for itself how it presents this back to you.

So finally, I had enough of trying to make the AI enforcement model work and took a different Architecture path. I now use an Edge Gateway and a Railway container to fetch and process the internals athlete data and turn this in something I can pass back to ChatGPT. Success!, it’s a deterministic approach and is based on my design principles:

  • Determinism - All metrics are computed once, audited, and reused without recomputation
  • Separation of Concerns - Edge handles auth and routing; backend handles computation and audits
  • Auditability -Every report can be traced back to Tier-0 source data
  • Schema Stability - URF contracts prevent silent field drift between versions
  • Numerical Integrity - No virtual math, no inference, no approximations
  1. Fetch Data
    I pull your recent training and wellness data from Intervals.icu (securely).

  2. Process (Railway Renderer)
    The data is normalized, analyzed, and formatted into a URF v5.1 report.

  3. Interpret (ChatGPT)
    I explain what it means — performance trends, readiness insights, recovery balance, etc.

Now I’m in control of the LLM in ChatGPT :slight_smile:

What does this mean for you?

This coach blends data-driven precision with evidence-based endurance frameworks, delivering actionable insights across cycling, running, triathlon, and multisport.

By combining objective metrics — TSS, CTL, ATL, HRV, VO₂max, ACWR, Monotony, Strain, Durability, and Polarisation — with subjective feedback such as RPE, mood, fatigue, and recovery, the coach ensures a precise balance between load, readiness, and adaptation.

Grounded in validated research and long-term performance modeling, this approach follows:

  • Seiler’s 80/20 Polarised Training for aerobic durability.
  • San Millán’s Zone 2 metabolic efficiency model for mitochondrial adaptation.
  • Friel’s microcycle and age-adjusted progression principles for sustainable load management.
  • Banister’s TRIMP impulse–response modeling for quantifying training stress.
  • Foster’s Monotony and Strain indices for identifying overuse and uniformity risk.

The coach continuously monitors ACWR, Polarisation Index, and Recovery Index to detect maladaptation early and adapt training proactively.

What next?
It’s free and easy to use, and the results are very promising, but its early days still despite my midnight toils. For example, Using the mobile ChatGPT app on my phone I can now ask what my last week was like or how the last 90 days went.

It’s easy to use and there is a simple quick start quide on www.cliveking.net, leave feedback in Github or here in the forum. I’d be grateful for that.

First Question? Ask it; “What can you do?”

Hope it provides some insight and help, Happy Festivities and a Happy new year.

Clive

P.s. further documentation can be found here

intervalsicugptcoach-public/README.md at main · revo2wheels/intervalsicugptcoach-public

19 Likes

This sounds cool and i’d like to have a play but I am a getting an “Error talking to connector response” every time i try to generate anything.

Error talking to connector

It looks like the weekly report request couldn’t complete because the response from the renderer was too large to process (ResponseTooLargeError).

1 Like

V5 not V3 ? I’ve now deprecated V3

Can’t connect V5 to intervals, maybe a mistake in the link or something is down?

Looking forward to V5, V3 was already good :slight_smile:

Edit: Got it working in a “normal” browser

1 Like

Yep v5 using your link above.

Hi, Clive King! Here, the error (ResponseTooLargeError) occurs with any request option, even those that limit the analysis to just one day.

I have found the issue and need to trim some athlete data to meet chatGPT limits. We have not seen this before in our testing. I wlil update when fixed. Best regards

Issue is now resolved . Let me know if you find more :thinking:

Br

Clive

1 Like

Good to have you back, V5 certainly works, i see logs of users using it successfully, chatgpt sadly can cause no end of issues with OAUTH, lots of people complain of the same. Sometimes a log out and in is required. I find that a smartphone app is problematic first time of logging into OAUTH intervals, web browser is better.

You can login and logout here also.

Let me know how you go.

BR

Clive

1 Like

Yes, I think it was a browser problem. I am hooked on Perplexity’s Comet at the moment. Changed to a normal one, and it worked straight away :slight_smile:

1 Like

Good to hear. Hope this compares well.

Clive

I logged out and logged back in. It seems to be working very well. :slightly_smiling_face:

1 Like

New error when a try to run any report:

"It looks like the Railway Renderer encountered an internal error while building your weekly report — specifically, it failed when trying to access your primary sport’s FTP model ('NoneType' object has no attribute 'get').

This usually happens when your Intervals.icu profile doesn’t have a primary sport set or when no FTP/mMP model is defined for that sport."

@Clive_King This looks really interesting, particularly how you are using the Ai to compute important numbers rather than just regurgitating the information that is already on various intervals.icu pages. So thank you very much.

I’ve been running weekly training reports to see what it says about my work. Mostly I can understand. but here’s one query, about polarisation index.

My zone distribution for all sports [but only cycling has power and heart rate] is 76.5 in Z1, 13.4 in Z2, 7.0in Z3, 0.8 in Z4 and 2.3 in Z5. [percentages].
Your AI gives me this:
" Polarisation Index. 0.00 :red_circle:. Not polarised – excess mid-intensity work."
This I don’t understand, since your documentation defines the index as (Z1% + Z3%) / Z2%. Either this is meaningless for me since I have 5 zones or there is a problem, since the usual aggregation of 5 zones into 3 gives [z1 + z2 + z5]/[z3 +z4] which in my case is about 11.8.

Then there is a more general problem. Your documentation gives a target for the polarisation Target 1.8–2.2. But, to take an example, if someone does 90%Z1, 9%Z3 and 1%Z2, they would fall outside your stated target range.

I also don’t understand the 7 day TSS graph.
My week’s TSS Monday through Sunday were:
M 0; Tues 36 Gym, 35 Riding; Wed 98 riding; Th 36 Gym; Fri 36 Gym, 20 Riding; Sat 128; Sun 98 – both riding. The graph labels the 7 day TSS as:
M 0 Tues 30 Wed 96 Th 128 Fri 68 Sat 36 Sat 66 Sun 35
I confirm: two bars labelled Saturday [though only one ride]. You can also see that the loads are wrong.

I hope that these are just simple errors, because this is a really interesting approach to get rid of the pap that LLMs so often generate.

Fixed now. Apologies, I added some richness back to Athlete i had to remove earlier for the responsetoolarge issue. I have added some guards now if you dont have these items set in Intervals.

Br

Clive

Hi Michael,

Excellent feedback, let me look at that in further detail. That’s a little more complex to sort.

Clive

Seems like you can’t pull individual completed workouts or days, only weekly, season overview/reports etc. The V3 of the GPT could look up exact completed workouts/days, in any period, length etc.

Also a problem with planned workouts - can’t see them. (V5 is supposed to see planned, as I understand?)

At this time because of data limit issues its set to 90 day season, 7 day weekly and 42 day wellness. I’ve plans for extending this to full season year etc, or custom date. I know in v3 we have some flexibility, but this introduced to many variables of error in the data. I need stability and accuracy for now.

You can however once you have a weekly report, ask about any workout/ride/run etc and it will give you deeper insight on that. Check my questions on https://www.cliveking.net#Questions for examples

planned workouts is on my to-do list Issues · revo2wheels/intervalsicugptcoach-public, but I’ve focused on stability and accuracy for now with new architecture and complete rewrite. If you want to add feature requests, you can do that here: New Issue and assign label = enhancement :slight_smile:

Thanks for the feedback

Clive

1 Like

I understand, I just need to learn this version. I thought planned was already there, no problem :slight_smile:

1 Like

Just a quick note to say a huge thank you for this tool, which I’m really enjoying using.
I used V3 as follows:

  • discussion with the agent to determine my macro training cycle based on my main and intermediate goals (building training blocks)
  • Week-by-week program based on my schedule (+ generation of ZWO workouts that I import into Intervals and Zwift, for example)
  • Adjustments during the week based on unforeseen circumstances, my level of fatigue, etc.
  • Review at the end of each week and then start again.

The result was a basis, which I then refined myself. I really enjoy building my own program this way. Intervals.icu + chatbot = great combo for experimenting and seeking to understand (never forgetting to take ChatGPT with a grain of salt and to constantly challenge it).

Does V5 still work this way?

1 Like