(Yet Another) AI Coach - Montis.icu

UPDATE - You will be reprompted to SIGN-IN today.

I’ve changed the hostname that chatgpt talks to now (finally got the orchestration done for all the changes), you will now see montis.icu

PLEASE USE NEW CHAT, old chats will no longer work.

Regards

Clive

P.s MCP Claude desktop users; please update your scripts here.
Claude Interoperabilty via MCP [UPDATED for new domain name] · Issue #24 · revo2wheels/intervalsicugptcoach-public

2 Likes

Yes, refreshed allowed permissions, it works great also with many-intervals and multiple daily sessions. Well done.

1 Like

Hello!
When I try to log in again (in a new chat with Montis) I get a “An error occurred” message

thanks

Just trying to set this up, failing at the Auth stage, takes me to intervals, then get this error back in ChatGPT

J

Apologies try again, a bot security setting in EDGE services blocked this. I’m getting hammered by probes and this setting was too agressive and impacted some API services.

Please try again. Apologies.

yep! now it works, thanks!

@Clive_King should I use a new window now or can go back to my previous interactions? because I tried to analyze an activity giving Montis the ID and it works in a new window (but he lose the context) but it doesn’t work in my old window

:backhand_index_pointing_right: I still cannot access activity xxxxxx directly right now
because the Intervals integration is currently disabled.

1 Like

Ah sorry good point, forgot to mention that - you need to use new chat now. Short term pain for long term again.

Clive

1 Like

Hi @Clive_King , following our past chat, I’m asking for some hints on how can I get through this one.

I have 2 back to back A races on 28 June and 5 July.
I’d like to get Montis advice on my preparation path, analyzing past workouts, current status and forthcoming planned workouts, adjusting them.

Since I have to start a new chat every few days, Montis doesn’t have memory of my targets, and I have to start over every time… or not?

Tried to write them in a calendar note, but it’s ignored somehow.

Any suggestions?

@Clive_King , just to add more content to the above, I wrote down my targets in a calendar note that’s extended till 5 July (note date field), so it’s available every week.

What I get from Montis is this:

“The calendar endpoint (readCalendarV1) only returns:
title (“2026 Targets”)
date
type/category
It does NOT include the note body/content field at all.
So even with full access, the content is simply not exposed in the data layer.”

But, it correctly gets calendar notes content I wrote down every day.

Thanks!

I ask Montis for a recap documents of my targets and what he/she planned for me and a prompt to instruct it in the future. then when I have to open a new chat I give it this document and prompt. not sure is the best option but should work

As far as I understand, you feed a copy/paste text, right?

Thanks

Hi Riccardo,

Are you adding a RACE event in Calendar? (as opposed to workout) for both 28 June and 5 July.

For example these would then show as following when asked show all planned events

Date Event Type Duration Priority
Jun 28 A Race Ride 120m :a_button_blood_type: Priority
Jul 5 A Race Ride 120m :a_button_blood_type: Priority

Then you can ask to plan for these races. Show a preparation plan for these races

Does this achieve what you want?

Here is a race-specific preparation plan for your two A races:

  • :chequered_flag: June 28
  • :chequered_flag: July 5

This is a 3-phase build → taper → race → recover → sharpen model, aligned with your current state (aerobic strong, VO2 slightly drifting, intensity clustering risk).


:compass: MACROCYCLE STRUCTURE

Phase Map

  • Now → June 8 → Aerobic + VO2 rebuild
  • June 9 → June 22 → Race-specific sharpening
  • June 23 → June 28 → Taper → Race 1
  • June 29 → July 5 → Recovery + Race 2 peak

:blue_circle: PHASE 1 — BUILD (NOW → JUNE 8)

:bullseye: Objective

  • Maintain aerobic dominance
  • Reintroduce clean VO2 stimulus (without clustering)
  • Improve fatigue resistance

Weekly Structure (ideal)

Day Session
Mon OFF / Recovery
Tue VO2 (4–6 × 4–5min)
Wed Z2 Endurance
Thu Tempo / Sweet Spot
Fri Easy / OFF
Sat Long Ride (3–4h)
Sun Endurance (low stress)

:warning: Key Fix (from your data)

:backhand_index_pointing_right: No more stacking: VO2 → Long → Threshold

Instead:

  • Always insert low day after VO2
  • Keep 2 hard days max per week

:yellow_circle: PHASE 2 — SHARPEN (JUNE 9 → JUNE 22)

:bullseye: Objective

  • Convert fitness → race performance
  • Increase race-like intensity + repeatability
  • Reduce volume slightly

Weekly Structure

Day Session
Mon OFF
Tue VO2 (shorter, sharper)
Wed Z2
Thu Threshold / race simulation
Fri Easy
Sat Race simulation / hard group ride
Sun Endurance

:fire: Key Workouts

  • VO2: 4x4 / 5x3 (high quality, not exhaustive)
  • Threshold: 2x20 or over-unders
  • Race sim: stochastic efforts (attacks, surges)

:red_triangle_pointed_down: PHASE 3 — TAPER (JUNE 23 → JUNE 28)

:bullseye: Objective

  • Reduce fatigue
  • Maintain intensity
  • Arrive fresh but sharp

Structure

Day Session
Mon (23) OFF
Tue Short VO2 (3x3)
Wed Easy Z2
Thu Openers (short efforts)
Fri OFF
Sat 30–45min activation
Sun :chequered_flag: RACE 1

:warning: Rules

  • Cut volume 40–60%
  • Keep intensity but very low density
  • No long rides this week

:chequered_flag: BETWEEN RACES (JUNE 29 → JULY 5)

This is where most athletes fail.

:bullseye: Objective

  • Recover from Race 1
  • Maintain sharpness
  • Avoid fatigue carryover

Ideal Week

Day Session
Mon OFF
Tue Recovery spin
Wed Openers (short VO2)
Thu Easy
Fri Openers
Sat 30min activation
Sun :chequered_flag: RACE 2

:red_circle: Critical Rule

:backhand_index_pointing_right: DO NOT train fitness this week

You are NOT building anymore — only:

  • Recover
  • Maintain sharpness

:brain: YOUR PERSONAL LIMITER (VERY IMPORTANT)

From your data:

:backhand_index_pointing_right: Your limiter is NOT fitness — it’s intensity distribution

So your race success depends on:

  • Spacing intensity
  • Avoiding hidden fatigue
  • Arriving fresh

:bullseye: PERFORMANCE STRATEGY

Race 1 (June 28)

  • You should be at peak fitness
  • Execute aggressively if needed

Race 2 (July 5)

  • You will NOT gain fitness
  • Goal = better freshness + execution

:receipt: FINAL COACHING TAKE

If you follow this correctly:

  • You won’t feel “overtrained”
  • Your VO2 will come back up
  • You’ll convert aerobic strength → race performance

:fire: Next Step (recommended)

Say:
:backhand_index_pointing_right: “optimize my calendar for this plan”

I’ll:

  • Rewrite your actual scheduled workouts
  • Fix intensity clustering
  • Align everything to peak perfectly for both races

Top tip. Use the word “replace” to update Calendar events (it will use ID if known first and then date if ID not known).

also, btw if you add in RACE style that helps

e.g.
Name: Marmotte 2026 | A Priority | Climbing focus

But now you have me thinking about how to include a Target RACE Events layer inside a report :slight_smile: to complement Adaptive Decisions (ADE). This would be cool.

Clive

2 Likes

Hi @Clive_King nice strategy, I’ll give it a try.
Also, this project is becoming more and more interesting…

Ciao!

Riccardo

1 Like

I’ve updated Weekly and Season report to always see target_events where RACE_A, RACE_B, or RACE_C exists. If you have the context of the race in the title, “climbing”, “TT” etc it will add training bias to next event as well so a training plan can adapt to that focus.

TT = FTP
Climbing = Durability
Vo2 = Anaerobic
Sprint = Neuromuscular
Default if none = Mixed

Clive

p.s. after a weekly or season report show full events targets will show you all races in next 90 days

correct. when/if I have to open a new chat with the bot I’ll copy/paste the report/prompt the bot gave me before so it doesn’t have to start form scratch every time

Wow - super cool! Thank you!

1 Like

The challenge here for ChatGPT is that not even ChatGPT recommends using cross chat continuity as the data model is unreliable. What you are doing is fine to restart a new chat, but its limitation by design. What I try to do is maintain that continuity through reports, but if you have a deep conversation about Nutrition or HRV (a fascinating subject alone) of course that is lost in new chat.

Bottom line

  • Native GPT chats → no shared context as you know
  • Montis pipeline → already keeps the reporting context
  • The right model is:

Data continuity, not chat continuity

If we try to force chat-to-chat memory, we break determinism. I love feedback and can always try and build on that continuity where I can.

Clive

Hi Filippo,

looks like we’re both Italians… :wink:
Thank you for the tip. I’m trying various “frozen prompts” to run daily or so, will share that as soon as I’m able to cook one version that suits me.

Ciao!

Riccardo

1 Like

Hi @Clive_King sorry but this is quite fuzzy to me, as I’m not that into CustomGPTs nor Montis.

If data continuity is made possible by Montis, how does it work? You mean continuity through Montis chats, does Montis store it otherwise or what else?

I thought tha only way was starting a new chat every time, as you don’t want a chat to become too big to handle for the interface, etc.

And about “targets”: I have a distinction between “events” and “targets” tied to those events, e.g.: I’m aiming for the podium of my age group for Race A, etc.

So many doubts…