This was one of the things that kept bothering me when I thought about hybrid training apps.
If I squat heavy on Monday, run easy Tuesday, bench Wednesday, and do intervals Thursday, saying I trained four days does not tell me much. Even saying I had "X amount of workload" is still missing something.
Monday and Thursday are the sessions I am probably going to feel. Tuesday might barely matter. Wednesday could be almost irrelevant to my legs.
Same week. Four sessions. Completely different stress depending on what those sessions actually were.
I did not want one number hiding all of that
Mass in Motion keeps an eye on running load, lifting load, and the bigger combined picture.
The reason is pretty practical. You can have a normal-looking week overall and still hammer one side of your training way too hard.
Imagine you cut your running way down for a week but turn your lower-body lifting up. The total may not look crazy. Your posterior chain might still be cooked.
Or flip it. Lifting is easy, but suddenly you add mileage and a second hard run. That is a running problem first. I want the app to know that before it decides what to do with the rest of the week.
Recent training should matter more
A hard workout from yesterday matters more to me than something you did three weeks ago. I think most people would agree with that without needing a research paper to explain it.
Training history still matters because it tells you what you are used to. That is where ideas like acute-to-chronic workload ratio are useful. If your recent workload suddenly jumps way above what you have been handling for the last few weeks, that is worth paying attention to.
Worth paying attention to. Not obeying blindly.
I would never want one ratio deciding the whole program. A high number can mean something useful happened. Maybe you just raced. Maybe you had a training camp. Maybe you are intentionally pushing a block. Context still matters.
The same thing goes for HRV and recovery scores
This one drives me crazy because people can get one bad recovery reading and act like the day is already over.
HRV is down. Sleep score is bad. Watch says red. Time to cancel training.
I do not like that approach.
One bad night can happen for a hundred reasons. Training late. Stress. Alcohol. Travel. A noisy reading. Sometimes you just slept like garbage.
So Mass in Motion looks at whether the signal is sticking around and what else is happening with it. Did workload also spike? Has resting heart rate been moving? Are you suddenly struggling through sessions that should be normal?
When several things start lining up, now I care more.
I wrote more about that in Should You Change Your Workout Based on Your Recovery Score?
What are you actually training today?
This is the part I think gets overlooked the most.
Say your legs are a little beat up. If today's workout is an easy upper-body session, I probably feel very different about that than if today's workout is max-effort deadlift.
Same athlete. Same recovery score. Different answer.
That is why the upcoming session is part of the decision. Readiness does not exist in a vacuum. You have to be ready for something.
Here is a better example
Monday: heavy squat.
Tuesday: 30-minute easy run.
Wednesday: upper-body lift.
Thursday: hard intervals.
Now change Tuesday to a hard tempo run.
Nothing else changed. Same four training days. Same calendar. The second version is a much nastier week for your legs.
That is the kind of difference I want the system to catch. Not just how much training you did, but where the hard work landed and what it was hard on.
It is also why the hybrid training schedules on the site care so much about sequencing. You can write a good lifting plan and a good running plan separately and still create a terrible hybrid plan when you smash them together.
Why I keep workout programming rule based
I want the app to make training decisions for reasons I can actually explain.
If two athletes have the same inputs, the same rules should produce the same decision. I do not want a generative model improvising a new workout because it saw a recovery score and decided today felt like a good day for something different.
Generative AI does not write the workouts in Mass in Motion. That has been a line for me from the beginning.
The app can look at workload, recovery, injury status, recent performance, and what is scheduled next. Then deterministic rules decide what happens.
There are already enough moving pieces in hybrid training. I would rather make those rules better than add randomness on top of them.
That is really what this whole system is trying to solve. Lifting and running need to live in one picture, but they cannot be flattened into the same thing. Once you stop pretending every workout creates the same kind of fatigue, the week starts making a lot more sense.