Good morning everyone!
I am super happy with the way I have been training using my AI coach (ChatGPT). I don't think I will EVER use a human coach again - I am a fanatic but average rider, no podiums etc that I am chasing. My feeling is that unless you really want a competitive edge that other athletes don't have, AI like ChatGPT is probably as good as you can get. All the training strategies come from whatever AI can find published. The other day I tuned my HR zones a bit to adapt to latest Lactate Threshold HR, and ChatGPT referenced info from Training Peaks as his basis for suggesting the training zone adjustments.
It is almost a year now, and still once a week, sometimes more often I quickly check in with ChatGPT uploading my ride results and asking then for a review. My approach may be slightly different to formal "Training Platforms" that claim that they are using AI to give you a training plan. With ChatGPT I get exactly that, but more (I think). My way of working is more "personal" than working with a pre-setup training platform. I signed up for a CHATGPT account - this is very important so that previous conversations can be remembered. Also, with the signed-up version I work with ChatGPT v5.2 which is a pretty great platform, with nice personal touch to the way it communicates with the user. You can tell ChatGPT how you want it to communicate with you, i.e. always be uplifting, boost your moral, etc. I prefer no sugar coating so I told ChatGPT that it should ALWAYS give feedback as it is. If I screwed up in a training session, it should say so. So, the responses and feedback that I get are almost military style - I will give you an example below. I know exactly after a chat where I messed up and what the focus should be for next training session.
Using ChatGPT as coach, I managed to gain 15 minutes last year on 947 (finishing 3hr 4 mins) vs 3hr 20 min the previous year. TranBaviaans I was stronger than ever. We had some mechanicals to deal with, but I managed all the climbs even MAC without having to stop/rest, I did the big MAC about 25 minutes faster than the previous year.
You guys should try it out yourself. Sign up for a free-of-charge account with ChatGPT for a start so that it can remember your conversations. With free account you are limited by number of chats a day, but you don't need all that many chats to start with. First message you should give all your details. Write it in the format as if chatting with a human - give as much detail as you can including age, weight, current FTP, VO2 max, and then an idea of how much you are currently training and what you are training for with specific info. Ask it then for a training plan and I suggest then to ask for workouts for the next week only. Asking for too much info in advance doesn't really work for me because you may in any case not stick to it. I prefer that it gives me the workout in text so that I can program it into Zwift as a custom workout. I also like if it gives me the plan in "Python" format to understand exactly how to program it into zwift. It typically gives me something like the below:
✅ Tuesday 23 July – VO2max Focus (Short Intervals)
Type: Repeated 30/30s VO₂max intervals
Structure:
2 sets of 6 × (30s @ 125–130% / 30s @ 50–60%)
4 min recovery between sets
Followed by long Zone 2 block
Focus:
More neuromuscular demand (acceleration + recovery)
Higher total intensity density
Great for improving oxygen utilization efficiency
More explosive, but not as aerobically deep
⚖️ Which One to Use?
Both are effective for VO₂max, but:
Use the 3-min intervals (what you received earlier in Python) if you're building long-range aerobic capacity and pacing.
Use the 30/30s if you're working on oxygen kinetics, repeatability, and explosive responses — or if you're a bit fatigued and want a less mentally demanding structure.
🧠 Tip:
You could alternate these styles weekly leading up to Baviaans:
This week (23 July): Use the short intervals for variety and recovery from last Saturday’s long ride.
Next VO₂max session (after recovery from mini-Munga): Do the 3-min intervals to deepen fitness.
Would you like the 30/30s short interval session in Python or .zwo format?
PvStaden: Please give me the Python code including recommended cadence for the 30/30s version
Here is the Python-formatted training session for the VO₂max Short Intervals (30/30s) version you mentioned — complete with recommended cadence for each segment.
🔥 Tuesday 23 July – VO₂max Focus: Short Intervals
🕒 Duration: ~75 minutes
🎯 Focus: VO₂max development through high-repetition short intervals
💡 Ideal for: Aerobic power, oxygen uptake kinetics, repeatability under fatigue
Python code:
# VO2max Short Intervals – Tuesday 23 July
[
# Warm-up: 15 min ramp from 50% to 75% FTP @ 85–90 rpm
('Warm-up Ramp', 900, 0.5, 0.75, 90),
# Set 1: 6 × (30s @ 130% / 30s @ 55%) @ 100–105 rpm for the high efforts
('30s #1 - Hard', 30, 1.30, 1.30, 100),
('30s #1 - Easy', 30, 0.55, 0.55, 85),
('30s #2 - Hard', 30, 1.30, 1.30, 100),
('30s #2 - Easy', 30, 0.55, 0.55, 85),
('30s #3 - Hard', 30, 1.30, 1.30, 100),
('30s #3 - Easy', 30, 0.55, 0.55, 85),
('30s #4 - Hard', 30, 1.30, 1.30, 100),
('30s #4 - Easy', 30, 0.55, 0.55, 85),
('30s #5 - Hard', 30, 1.30, 1.30, 100),
('30s #5 - Easy', 30, 0.55, 0.55, 85),
('30s #6 - Hard', 30, 1.30, 1.30, 100),
('30s #6 - Easy', 30, 0.55, 0.55, 85),
# Recovery between sets: 4 min @ 60% FTP @ 85 rpm
('Recovery Between Sets', 240, 0.6, 0.6, 85),
# Set 2: Repeat the 6 × 30/30s
('30s #7 - Hard', 30, 1.30, 1.30, 100),
('30s #7 - Easy', 30, 0.55, 0.55, 85),
('30s #8 - Hard', 30, 1.30, 1.30, 100),
('30s #8 - Easy', 30, 0.55, 0.55, 85),
('30s #9 - Hard', 30, 1.30, 1.30, 100),
('30s #9 - Easy', 30, 0.55, 0.55, 85),
('30s #10 - Hard', 30, 1.30, 1.30, 100),
('30s #10 - Easy', 30, 0.55, 0.55, 85),
('30s #11 - Hard', 30, 1.30, 1.30, 100),
('30s #11 - Easy', 30, 0.55, 0.55, 85),
('30s #12 - Hard', 30, 1.30, 1.30, 100),
('30s #12 - Easy', 30, 0.55, 0.55, 85),
# Endurance Block: 25 min @ 65–70% FTP @ 90 rpm
('Zone 2 Endurance', 1500, 0.65, 0.7, 90),
# Cooldown: 5 min @ 50–60% FTP @ 85 rpm
('Cooldown', 300, 0.5, 0.6, 85)
]