LLM Plan Builder is finally live :)

Hi Alex! I sent the text to chatgpt as follows:
I’m a 47-year-old athlete looking for a 13-hour-per-week cycling training plan to improve my endurance for mountain biking. I currently ride 5 hours per week. I have access to an indoor trainer and outdoor roads. I prefer 3 to 4 sessions per week, including a longer ride on the weekend. I need a progressive 8-week plan that fits my work schedule, with most weekday workouts being no longer than 60 to 90 minutes. I have varying cadences for mountain biking and varied training styles. I rest on Mondays and train the rest of the days, and long workouts on the weekends. To import to the Intervals platform, uic

Please do this in the EXACT format of the json file

Andy you included the file? See below

You can copy the JSON below.

{
  "blockType": "base",
  "startHours": 5,
  "endHours": 13,
  "name": "8-Week MTB Endurance Build Plan",
  "description": "An 8-week progressive endurance plan for a 47-year-old mountain biker building from 5 to 13 hours per week. Includes 3–4 workouts weekly with weekday rides under 90 minutes and longer weekend endurance rides.",
  "workoutProgressions": [
    {
      "title": "Endurance Builder",
      "description": "Steady aerobic endurance rides to develop fat metabolism and base fitness.",
      "progression": [
        "1 X (60m@65%)",
        "1 X (75m@67%)",
        "1 X (90m@68%)",
        "1 X (105m@70%)",
        "1 X (120m@70%)",
        "1 X (135m@72%)",
        "1 X (150m@72%)",
        "1 X (165m@73%)"
      ]
    },
    {
      "title": "Sweet Spot Intervals",
      "description": "Controlled intervals just below threshold to improve sustainable power and aerobic efficiency.",
      "progression": [
        "2 X (8m@88% + 4m@60%)",
        "3 X (8m@88% + 4m@60%)",
        "2 X (12m@90% + 5m@60%)",
        "3 X (10m@90% + 5m@60%)",
        "3 X (12m@90% + 5m@60%)",
        "2 X (20m@88% + 5m@60%)",
        "3 X (15m@90% + 5m@60%)",
        "3 X (18m@90% + 5m@60%)"
      ]
    },
    {
      "title": "Tempo + Cadence Variations",
      "description": "Variable-cadence tempo work simulating mountain biking terrain and muscular endurance.",
      "progression": [
        "1 X (3m@75% + 3m@85% + 3m@75%)",
        "1 X (4m@75% + 4m@85% + 4m@75%)",
        "2 X (5m@80% + 5m@88%)",
        "2 X (6m@80% + 6m@88%)",
        "3 X (6m@80% + 6m@88%)",
        "3 X (7m@82% + 7m@88%)",
        "3 X (8m@82% + 8m@90%)",
        "3 X (10m@82% + 10m@90%)"
      ]
    }
  ],
  "recoveryPattern": "3/1",
  "trainingDays": [
    {"day": "mon", "type": "indoor"},
    {"day": "tue", "type": "indoor"},
    {"day": "wed", "type": "mixed"},
    {"day": "thu", "type": "indoor"},
    {"day": "fri", "type": "outdoor"},
    {"day": "sat", "type": "outdoor"},
    {"day": "sun", "type": "outdoor"}
  ],
  "bestLongRideDay": "sun",
  "secondaryStartingWorkIntensity": 3
}

Hi Alex! Thanks, I get it! I can now run tests! The cadences still aren’t working very well.

Cadence in the app? Or cadence with LLM Builder? We don’t have cadence with LLM builder yet.

ok thanks. very tests

Alex. I sent some workouts for application, but when they’re sent to Coach Jack, they don’t fully apply. For example: I have a 1h15 weekly workout, and he reduces the training time. The cadences aren’t working yet, but you already know that…

Hi send me the JSON file and show my a screenshot of what you mean.

Hi Alex,
I’ve done several tests on different types of intervals and Coach Jack doesn’t follow what the original JSON reports across the different weeks. This is the JSON created by ChatGPT.

  "blockType": "base",
  "startHours": 6,
  "endHours": 10,
  "name": "Base Phase – Forza e Capacità Aerobica (Aggiornata)",
  "description": "Blocco base di 8 settimane con focus su forza resistente, sweet spot e resistenza aerobica con sprint. Sweet Spot spostato al giovedì sui rulli.",
  "workoutProgressions": [
    {
      "title": "SFR – Forza Resistente",
      "description": "Salite o rulli con basse cadenze (50-60 rpm) per sviluppare forza muscolare specifica e migliorare l’efficienza di pedalata.",
      "progression": [
        "1 X (3m@85%)",
        "2 X (4m@85%)",
        "3 X (5m@85%)",
        "3 X (6m@85%)",
        "4 X (6m@85%)",
        "4 X (7m@85%)",
        "5 X (7m@85%)",
        "2 X (5m@80%)"
      ]
    },
    {
      "title": "Z2 con Sprint",
      "description": "Uscite aerobiche con inserimento di sprint massimali per stimolare potenza neuromuscolare.",
      "progression": [
        "1 X (60m@70% + 3x10s@180%)",
        "1 X (75m@70% + 4x10s@180%)",
        "1 X (90m@70% + 4x12s@180%)",
        "1 X (100m@70% + 5x12s@180%)",
        "1 X (110m@70% + 5x12s@180%)",
        "1 X (120m@70% + 6x12s@180%)",
        "1 X (130m@70% + 6x15s@180%)",
        "1 X (90m@68%)"
      ]
    },
    {
      "title": "Sweet Spot – Potenza Aerobica",
      "description": "Intervalli al 88–94% FTP per aumentare capacità aerobica e tolleranza allo sforzo prolungato. Ora eseguiti il giovedì sui rulli per massima precisione.",
      "progression": [
        "1 X (10m@88%)",
        "2 X (8m@90%)",
        "2 X (10m@90%)",
        "3 X (10m@90%)",
        "3 X (12m@92%)",
        "3 X (15m@92%)",
        "2 X (20m@90%)",
        "1 X (30m@88%)"
      ]
    }
  ],
  "recoveryPattern": "3/1",
  "trainingDays": [
    {
      "day": "mon",
      "type": "indoor"
    },
    {
      "day": "tue",
      "type": "outdoor"
    },
    {
      "day": "thu",
      "type": "indoor"
    },
    {
      "day": "sat",
      "type": "outdoor"
    }
  ],
  "bestLongRideDay": "sat",
  "secondaryStartingWorkIntensity": 2
}

Oh yes, because we re-used CJ logic this does not make sense in this case. We need to remove that from LLM builder.

I’m really liking this and am experimenting with 4 and 8 week plans to “sharpen the knife” with focuses on 1 and 5 minute power and even playing with more sustained 20 minute power building. It seems the 4 week plans I create CJ follows the duration just fine, but the 8 week plans not so much. I’m probably doing something wrong with what I’m telling it.

I can’t get CJ to give me a 4-5 hour Zone 2 ride on Sundays. Despite me telling it I can only do 60-90 minutes during the work week, it’s giving me 2.5 hour HIIT and VO2 Max sessions. I guess the work around I can do is just go in and edit the work week workouts to fit my time constraints.

I’ve tried doing a 5 session/week plan and 2 separate 3 and 2 day plans but it just can’t get it right. Again, maybe I"m doing something wrong.

Share the json file either here using the code command (see below) or email me the file support@trainerday.com, we are working through some duration stuff now so this might be connected.

image

Hi Alex,
I did some further exercises for an 8 week plan starting on Monday 20. At the moemnt I can hardly use it.

Here are my observations:

  • I don’t need warm-up and cool-down from the plan builder. LLM may create the warm-up and cool-down if I need it (e.g. no warm-up / cool-down for Z1/Z2). I could start by just jumping on the trainer and start before I switch to the LLM plan.

  • As already reported by others Tempo/Sweet-Spot is off from the LLM design

Regards
Rolf

Ok a feature to allow you to tell the LLM you don’t want warmup/cd is now on my list. I am trying to balance it so you don’t have to specify too much and most users would want w/u + c/d. If this LLM builder gets popular enough I will allow you to just make edits right in the site “remove warmup cool down” for example, after you see the workouts.

I think the only problem regarding the itnervals is we do “doubling…” Meaning if you have extra time we add more intervals… :slight_smile:

You said: At the moemnt I can hardly use it. What does that mean?

I tried to send the JSON to the suppport@trainerday.com email address but it got bounced back. Before it got bounced back, I played around with creating other plans and it seems like maybe the duration issue might have been corrected?

You have 3 P s in yours should be support@trainerday.com

that was a typo. In the original I copy and pasted, so there shouldn’t have been an issue.

you can send to me just alex@trainerday.com I tested support and it worked.

Anyone else getting the submit button appearing as “Premium feature - upgrade to create plans in Coach Jack Builder” even though they are a premium member?

What browser are you on? This is some kind of cookie blocking. Chrome with no blockers is safest. Also try CMD+R mac, CNTRL+F5 PC

Hi @Alex, this may be related to the duration stuff you mentioned above, but I’m finding the CJ plan built from my LLM input does not match the duration I requested.

Here was the prompt I entered into Claude:

“I am a 34-year-old busy male looking for a 60-minute-per-week tabata cycling training plan to maximize my fitness gains. I’m using an indoor exercise bike (Bowflex C6). I want three, 20-minute tabata sessions per week (totaling 60 minutes per week) that maximizes fitness gains in 20 minute workout sessions, and I need an 8-week progressive plan with workout sessions on Tuesday, Wednesday, and Friday, with each workout being 20 minutes max for the entire workout (warmup, active workout, and cooldown included). My current cycling FTP is 245. Do it in the EXACT format of the attached json file and let me download it in json format.”

The problem is, when I put this into CJ, I was still getting workouts where the entire duration exceeded 20 minutes (workouts went as long as 30 minutes).

Here is the json file from Claude:

{
“blockType”: “build”,
“startHours”: 1,
“endHours”: 1,
“name”: “8-Week Tabata High-Intensity Plan”,
“description”: “Progressive 8-week Tabata protocol focusing on maximum fitness gains in 60 minutes per week across three 20-minute sessions”,
“workoutProgressions”: [
{
“title”: “Tabata Tuesday”,
“description”: “Classic Tabata intervals building from 4 to 8 rounds of 20sec max/10sec recovery”,
“progression”: [
“1 X (3m@50% + 20s@150% + 10s@30% + 20s@150% + 10s@30% + 20s@150% + 10s@30% + 20s@150% + 10s@30% + 14m@50%)”,
“1 X (3m@50% + 20s@155% + 10s@30% + 20s@155% + 10s@30% + 20s@155% + 10s@30% + 20s@155% + 10s@30% + 20s@155% + 10s@30% + 12m@50%)”,
“1 X (2m@50% + 20s@160% + 10s@30% + 20s@160% + 10s@30% + 20s@160% + 10s@30% + 20s@160% + 10s@30% + 20s@160% + 10s@30% + 20s@160% + 10s@30% + 11m@50%)”,
“1 X (2m@50% + 20s@165% + 10s@30% + 20s@165% + 10s@30% + 20s@165% + 10s@30% + 20s@165% + 10s@30% + 20s@165% + 10s@30% + 20s@165% + 10s@30% + 20s@165% + 10s@30% + 9m@50%)”,
“1 X (2m@50% + 20s@170% + 10s@30% + 20s@170% + 10s@30% + 20s@170% + 10s@30% + 20s@170% + 10s@30% + 20s@170% + 10s@30% + 20s@170% + 10s@30% + 20s@170% + 10s@30% + 20s@170% + 10s@30% + 7m@50%)”,
“1 X (2m@50% + 20s@170% + 10s@30% + 20s@170% + 10s@30% + 20s@170% + 10s@30% + 20s@170% + 10s@30% + 20s@170% + 10s@30% + 20s@170% + 10s@30% + 20s@170% + 10s@30% + 20s@170% + 10s@30% + 7m@50%)”,
“1 X (2m@50% + 20s@165% + 10s@30% + 20s@165% + 10s@30% + 20s@165% + 10s@30% + 20s@165% + 10s@30% + 20s@165% + 10s@30% + 20s@165% + 10s@30% + 9m@50%)”,
“1 X (3m@50% + 20s@160% + 10s@30% + 20s@160% + 10s@30% + 20s@160% + 10s@30% + 20s@160% + 10s@30% + 20s@160% + 10s@30% + 20s@160% + 10s@30% + 11m@50%)”
]
},
{
“title”: “Tabata Wednesday”,
“description”: “Modified Tabata with extended recovery building aerobic capacity between sprints”,
“progression”: [
“1 X (3m@50% + 20s@150% + 20s@30% + 20s@150% + 20s@30% + 20s@150% + 20s@30% + 20s@150% + 20s@30% + 12m@50%)”,
“1 X (3m@50% + 20s@155% + 20s@30% + 20s@155% + 20s@30% + 20s@155% + 20s@30% + 20s@155% + 20s@30% + 20s@155% + 20s@30% + 10m@50%)”,
“1 X (2m@50% + 20s@160% + 20s@30% + 20s@160% + 20s@30% + 20s@160% + 20s@30% + 20s@160% + 20s@30% + 20s@160% + 20s@30% + 20s@160% + 20s@30% + 8m@50%)”,
“1 X (2m@50% + 20s@165% + 20s@30% + 20s@165% + 20s@30% + 20s@165% + 20s@30% + 20s@165% + 20s@30% + 20s@165% + 20s@30% + 20s@165% + 20s@30% + 20s@165% + 20s@30% + 6m@50%)”,
“1 X (2m@50% + 20s@170% + 20s@30% + 20s@170% + 20s@30% + 20s@170% + 20s@30% + 20s@170% + 20s@30% + 20s@170% + 20s@30% + 20s@170% + 20s@30% + 20s@170% + 20s@30% + 20s@170% + 20s@30% + 4m@50%)”,
“1 X (2m@50% + 20s@170% + 20s@30% + 20s@170% + 20s@30% + 20s@170% + 20s@30% + 20s@170% + 20s@30% + 20s@170% + 20s@30% + 20s@170% + 20s@30% + 20s@170% + 20s@30% + 20s@170% + 20s@30% + 4m@50%)”,
“1 X (2m@50% + 20s@165% + 20s@30% + 20s@165% + 20s@30% + 20s@165% + 20s@30% + 20s@165% + 20s@30% + 20s@165% + 20s@30% + 20s@165% + 20s@30% + 20s@165% + 20s@30% + 6m@50%)”,
“1 X (3m@50% + 20s@160% + 20s@30% + 20s@160% + 20s@30% + 20s@160% + 20s@30% + 20s@160% + 20s@30% + 20s@160% + 20s@30% + 20s@160% + 20s@30% + 8m@50%)”
]
},
{
“title”: “Tabata Friday”,
“description”: “Power-focused Tabata intervals with progressive intensity and volume”,
“progression”: [
“1 X (3m@50% + 20s@155% + 10s@30% + 20s@155% + 10s@30% + 20s@155% + 10s@30% + 20s@155% + 10s@30% + 14m@50%)”,
“1 X (3m@50% + 20s@160% + 10s@30% + 20s@160% + 10s@30% + 20s@160% + 10s@30% + 20s@160% + 10s@30% + 20s@160% + 10s@30% + 12m@50%)”,
“1 X (2m@50% + 20s@165% + 10s@30% + 20s@165% + 10s@30% + 20s@165% + 10s@30% + 20s@165% + 10s@30% + 20s@165% + 10s@30% + 20s@165% + 10s@30% + 11m@50%)”,
“1 X (2m@50% + 20s@170% + 10s@30% + 20s@170% + 10s@30% + 20s@170% + 10s@30% + 20s@170% + 10s@30% + 20s@170% + 10s@30% + 20s@170% + 10s@30% + 20s@170% + 10s@30% + 9m@50%)”,
“1 X (2m@50% + 20s@175% + 10s@30% + 20s@175% + 10s@30% + 20s@175% + 10s@30% + 20s@175% + 10s@30% + 20s@175% + 10s@30% + 20s@175% + 10s@30% + 20s@175% + 10s@30% + 20s@175% + 10s@30% + 7m@50%)”,
“1 X (2m@50% + 20s@175% + 10s@30% + 20s@175% + 10s@30% + 20s@175% + 10s@30% + 20s@175% + 10s@30% + 20s@175% + 10s@30% + 20s@175% + 10s@30% + 20s@175% + 10s@30% + 20s@175% + 10s@30% + 7m@50%)”,
“1 X (2m@50% + 20s@170% + 10s@30% + 20s@170% + 10s@30% + 20s@170% + 10s@30% + 20s@170% + 10s@30% + 20s@170% + 10s@30% + 20s@170% + 10s@30% + 20s@170% + 10s@30% + 9m@50%)”,
“1 X (3m@50% + 20s@165% + 10s@30% + 20s@165% + 10s@30% + 20s@165% + 10s@30% + 20s@165% + 10s@30% + 20s@165% + 10s@30% + 20s@165% + 10s@30% + 11m@50%)”
]
}
],
“recoveryPattern”: “2/1”,
“trainingDays”: [
{“day”: “tue”, “type”: “indoor”},
{“day”: “wed”, “type”: “indoor”},
{“day”: “fri”, “type”: “indoor”}
],
“bestLongRideDay”: “tue”,
“secondaryStartingWorkIntensity”: 8
}