I see …I guess the next evolution will be to have the AI create the workouts directly rather than shoehorning a prediction into a workout category …I wonder how closely an existing TR library workout created by a human being can match whatever the AI is conjuring up?
I was surprised to learn that the plan is telling the AI to pick a certain kind of workout on a certain day. I hope the next iteration can say “today you should do workout X” without being told “WORKOUT X MUST BE THRESHOLD, even if the optimal workout for this athlete today would be Tempo”. Don’t get me wrong, I’m loving the new TR so far, but that would be even better.
Yes, surely there must be occasions where the best match is not a Threshold workout at all. In that case I’d be happy if it gave me whatever the closest match is, be it Tempo or Sweetspot or whatever …
I imagine the type of workout becomes important to align to the demands of the event that the plan is centred around. For example, if the plan is for XC or a crit its surely correct that the workouts need to focus on repeatable short V02 max and anaerobic efforts, whereas say a time trial, triathlon plan would surely more focus on sustained power. But i agree that if the general focus of the plan and workout for that day is “sustained power” say - does it really matter if the workout has a “threshold”, “sweet spot” or “tempo” label if is actually just down to watts and a workout in the “wrong” category actually better fits what is required on that day.
As mentioned by other users, if TR included a scaling factor that applies a specific intensity factor to the AI workout and AI workouts dropped the label of threshold, tempo, etc - the univese of available workouts that would match the target watts would surely increase exponentially - e.g. a sweet spot workout at 105% intensity could be used for “threshold” watts.
So the plan sees my XC race and is working towards this but the AI doesn’t know that an XC race is my target?
The way I see it, the zones in the plan are not constraints to the model, but guardrails. It is quite optimistic when it comes to progression and does not seem to hold back. Detection to prediction on the day of the detection, it had a plan laid out for me, which predicted a 4% increase (3 months worth of steady progression looking at my history) and was trying to achieve it by pushing the intensity as much as it could. Renove the guardrails and who knows what could happen
Yes. The way i understand it. The event determines the type of workouts (threshold, sweet spot etc) that will be scheduled in the plan. Then the AI chooses a workout within that category of workout and based on the all various factors - what it thinks your target wattage should be, fatigue etc. As noted this could be limited, because it can only pick within that category of workouts. I think the exception is if it suggests an enduance workout bcause of fatigue.
They did talk about the AI being used more broadly e.g. to inform the plan - but i think noted that may require massive volumes of simulations so not viable at this point so have relied on “their existing knowledge of plan structure”.
Sure, I agree that the plan should focus on the skills needed for that type of plan, but I don’t agree at all that X type of plan means VO2 is MANDATORY on a Tuesday. I’d like to see it have the ability to say, “I’m moving your VO2 to Wednesday this week because that is optimal”
That’s way too much for a working person to follow though. The plan cannot tell you when to do your workouts. I’m constantly dragging and rearranging stuff based on other circumstances and I imagine that most people who don’t have cycling as the top priority in their lives do so, too. And as soon as you drag something around, the AI recalculates it. Sure, it’s the same structure, but that’s why it’s a plan. Otherwise you could just use TrainNow
I don’t get what the difference is in this context between constraints and guardrails?
Of course, a guardrail is a constraint. What I meant is that it’s a good one. It doesn’t hamper the AI by limiting it, it keeps it in touch with reality.
But wouldn’t you rather it show you the optimal plan and then you adjust it? I would.
But the AI is already aware of fatigue since it can set yellow/red days and downgrade workout levels (at least that is my understanding).
You’re right. That does look like a bug. ![]()
I just shared this with the team.
Thanks!
What I am taking from this is that the AI is currently picking the best available workout from the library of available workouts for a given zone, to best match what it predicts is optimal for me.
If there is a better match in a different zone, this will not be considered since it is not part of my plan.
Under the hood it is capable of much more than this but limited by the cost/time constraints of running a huge number of simulations. It does not ‘know’ the goal of a given plan.
There is no optimal plan. Even if there were, things fall apart the moment you adjust something. The AI needs some skeleton to build around. You need human input at some point
I get you don’t want the same thing I do, but I don’t get why. Why do you not want a better plan?
I mean I do think that if I keep doing these workouts that my FTP will come back quite fast anyway - sweetspot-which-is-actually-threshold will do that. And I know the FTP that it is suggesting is an FTP I have had before, and would not take me too much determined training for it to come back.
I want a plan and I rely on humans to know what that means. AI models don’t really get abstractions. They compute well. So for me, the best human/computer collaboration would be for the humans to handle the abstraction and the AI to find the best implementation for it. That’s pretty much what happens now and we also see how it breaks. The moment there’s a slip with the abstraction (training zones in my case), the AI runs wild. It’s great at absorbing dynamic change of plans though. Move things around, perform better or worse than expected, and it will adapt. I don’t think I need more from the AI side.
Andy! Let me look into this and get back to you ![]()
I apologize for the wait here. Trying to get to everyone.