Skip to main content

Planning Workouts with AI

Table of Contents

ChatGPT for Planning
#

Over the past year, I’ve gradually built a system where past me plans workouts for present me.

The overall structure starts with longer training cycles. I typically work in roughly 16-week cycles focused around a broader goal: building endurance for longer rides, improving climbing power, increasing FTP, preparing for an event, or improving VO₂max. Before each cycle starts, I’ll use ChatGPT to help define what the goal of the block actually is and what constraints exist in my real life.

That last part matters a lot because I’m very much a time-crunched cyclist. I’m not training 15 hours a week, and I’m not trying to optimize my life around cycling at all costs. Early on, we converged on a sustainable structure that usually looks something like:

  • one or two structured interval sessions per week

  • a longer weekend ride

  • consistent commute riding

That’s an amount of training I can realistically absorb into my life without the entire system collapsing.

Once I’ve locked in on the broader goals and constraints, I use ChatGPT to generate a week-by-week progression for the entire 16-week cycle. Those plans include structured interval sessions, long ride progressions, recovery weeks, and estimated training load. I’ll usually do some sanity checking and ask questions or tweak details if something doesn’t feel quite right, but by and large the planning process is collaborative and iterative.

Importantly, I don’t have ChatGPT directly controlling anything. I’m still very much the human in the loop. I save its output to a note on my computer initially, just to have as a reference.

Week-by-Week Schedule
Example Week-by-Week Schedule

Intervals.icu as the Operational Layer
#

Once I’m satisfied with the plan, I start building it out in Intervals.icu. That’s where the plan becomes real.

I place all of my planned workouts into the Intervals calendar: interval sessions, long rides, commute rides, and recovery weeks.

Example Intervals.icu Calendar

Text-Based Workout Creation
#

To build the actual workouts, Intervals.icu has a surprisingly simple text-based workout format for defining intervals: duration, power targets, cadence targets, repeat blocks, recovery periods, and so on. There are graphical workout builders too — both Intervals and Zwift have drag-and-drop editors — but I’ve found the text approach dramatically faster and less frustrating.

Most workouts are iterative variations of previous workouts anyway. Maybe this week’s threshold session is just last week’s workout with slightly longer intervals or slightly higher targets. In a graphical editor, that often turns into a lot of clicking, dragging, zooming, resizing, and fiddling around with tiny blocks. In the text editor, I can usually copy a previous workout, tweak a few numbers, and be done in seconds.

That workflow feels much more natural to me. Here’s an example of a 4x4 VO2Max session with 4 minutes at 110% FTP, 4 minutes at 40% FTP, repeated 4 times. It starts with a 10 minute ramp up and ends with a 10 minute cool down:

Warmup
- 10m ramp 40%-65%

4x
- 4m @ 110%
- 4m @ 40%

Cool Down
- 10m @ 40%

The format is very straightforward, and is well documented . Once you understand the structure, workouts become quick to read, quick to modify, and quick to experiment with.

I think this also subtly lowers the barrier to adjusting workouts intelligently. When editing a workout feels lightweight, I’m much more willing to tweak interval durations, recovery periods, cadence targets, or progression details instead of treating workouts as fixed artifacts that are annoying to modify.

That’s become especially useful when iterating on plans with ChatGPT. We might adjust progression timing, alter workout density, or slightly reshape interval structures over the course of a training cycle. Because the workouts are text-based, operationalizing those changes inside Intervals is quick and painless instead of becoming another layer of friction.

Planning the workout is only part of the story, though. I also had to learn what those intervals were supposed to feel like, which became its own kind of AI-assisted interval tech support .

Forecasting Fitness and Fatigue
#

Structured workouts automatically generate estimated Load/TSS values, while longer outdoor rides get rough estimates based on expected duration and intensity. My commute rides are consistent enough at this point that I already know approximately how much training load they contribute each week.

Once everything is placed on the calendar, Intervals can project the Fitness and Fatigue trends forward into the future. That turns out to be incredibly useful when planning longer cycles because you can see potential problems emerging weeks ahead of time instead of discovering them accidentally after you’re already exhausted.

Fitness Graph

After loading a full 16-week cycle into Intervals, I’ll often screenshot the Fitness graph back into ChatGPT and note areas of concern — building too much fatigue too quickly, not being sufficiently fresh for a big event, or ramping long rides too aggressively. ChatGPT tends to do a pretty good job of helping adjust the structure to smooth those problems out.

For example, before one longer event block, I realized the projected fatigue ramp was much steeper than intended leading into a major ride weekend. We ended up redistributing interval intensity and inserting a lighter week earlier in the progression to create a more sustainable build.

Adapting to Reality
#

That iterative loop has become one of my favorite parts of the whole process. The plan isn’t static, but it also isn’t random. There’s enough structure to create progression and consistency, while still leaving room for reality to intervene. And reality absolutely intervenes.

I definitely miss workouts from time to time. Sometimes work gets busy, sometimes family schedules explode, sometimes I’m simply too tired to execute a hard interval session properly. I try to stay consistent, but I’ve also learned that a sustainable training system needs enough flexibility to survive imperfect weeks.

Adapting to Reality

One unexpectedly useful part of this setup is that my Intervals calendar also syncs directly into my phone’s calendar using iCal. That means all of my planned workouts simply show up alongside the rest of my life.

Once those workouts are planned and loaded into Intervals, the next step is making them easy to actually do. I wrote more about that in how I move planned workouts from Intervals to Zwift .

I don’t think this changed my behavior in some dramatic productivity-hacker way, but it did subtly change how I prepare for workouts. Seeing an interval session sitting on my evening calendar gives me time to mentally prepare for it. Sometimes that just means getting into the right headspace. Other times it’s a reminder to make sure I’m fueling appropriately during the day or that I have enough background content queued up to survive an hour on the indoor trainer.

That kind of preparation sounds minor, but I think it reduces friction more than people realize. Structured workouts are mentally easier when they stop feeling like surprises.

Closing Thoughts
#

I still don’t think there’s a perfect training plan.

Real life interferes too often for that.

But I do think there’s value in having a system that makes planning feel flexible instead of rigid. Over time, ChatGPT has become less of a “plan generator” for me and more of a collaborative tool for thinking through goals, constraints, progression, and tradeoffs.

The end result isn’t a perfectly optimized training system. It’s just a structure that feels sustainable enough to keep showing up consistently — which probably matters more anyway.