Blog · Periodization · the UltraFlow plan engine

Periodization with brakes —
that knows when not to use them.

T
Tomasz — UESCA Ultra Coach · Firefighter · Ultrarunner
7 min read · periodization · adaptation · safety
±2days
key-session reschedule window
0
Plan rebuilds without your consent
100%
numbers from your own data
Block shape · build and recovery in rhythm base → specific → taper → race
🏁 build recovery (planned) race-specific block taper
block start · from your real base build : recovery rhythm race day

Your race is four months out. The plan exists, in theory: base, quality, peak, taper. Then life happens — work, family, bad sleep. Suddenly your long run lands on a Wednesday, intervals fall the day after a hard session, and the taper starts three days before the race because “it didn’t work out”.

This is not a story about lacking discipline. It’s a story about the fact that a plan on paper cannot see your body. A rigid plan has one mode: execute. Your body has more.

A plan is also what you DON’T do

Periodization in UltraFlow is not a spreadsheet of kilometres. It’s a system of constraints guarding the boring things that decide everything:

🛑 Three brakes that act before something breaks

→Volume progression has a ceiling. Weeks grow gradually, following principles well known from mountain-training literature — not because “that’s how it worked out”, but because a sudden jump in mileage is the shortest route to an injury break.
→Monotony is computed, not guessed. A week that is too repetitive — even an “easy” one — raises risk. The engine checks the load distribution of every planned week before you ever see it.
→The connective-tissue window is respected. After a long ultra, tendons and ligaments take weeks to recover — far longer than muscles, and far longer than how you feel. The most treacherous moment is when your metrics are back to normal and you “feel great”. That’s when UltraFlow says plainly: metrics normal, tissue window still open — this is not the week for downhills.

And the thing almost nobody does: when data is missing, the system says “I don’t know”. An incomplete night from your watch is not a reason to guess readiness — it’s a reason not to compute it, and to say why.

The day the plan meets reality

Every morning the report confronts the plan with your physiology: HRV against your own baseline, resting heart rate against your personal alarm threshold, sleep, your morning check-in. And here is where a system differs from a spreadsheet:

Day adaptation · example
Thursday’s long run, but your morning resting heart rate is above your threshold. The system doesn’t delete — it moves, and says why.
Mon Tue Wed Thu Fri Sat Sun mobilityZ1Z1 LONG RUN → easy (swap) Z1 LONG RUN 🛡 rescheduled rest ⚠ reason: resting HR +6 above base
Every adaptation is visible in the app with its reason — not “the plan changed”, but why. And when bad days pile up, you get a proposal for a gentler block rhythm — approved with one tap, never automatic.

It also works the other way — and that’s the part rigid plans stay silent about.

Brakes aren’t everything — how the system knows you can do more

Most plans from the internet undershoot, because they must be safe “for everyone”. UltraFlow doesn’t plan for everyone — it plans for you, from two sources:

First: your real capacity, not a declaration. The engine calibrates block volume from your actual, healthy training weeks — ones with complete data, outside post-race recovery windows. If your history shows you carry more than a typical template would assume — your plan starts higher. If there isn’t enough data, the system says so openly and plans conservatively instead of faking confidence.

Calibration · template vs your weeks
An off-the-shelf “100k plan” assumes one averaged base. UltraFlow reads yours from your history.
one-size-fits-all template everyone gets the same your real base · from healthy weeks recov ✕ weeks with complete data, outside post-race window
Not enough healthy weeks in your history? The system doesn’t guess — it plans conservatively and says so, until the data arrives.

Second: an explicit green light. When the night is complete, HRV stable and resting heart rate normal — the report doesn’t mutter precautionary warnings. It says: ready for a stimulus. A key-session day with a green light is a day you can trust — because you know that if something were off, the system would say so, just as concretely.

And a third thing, minor at first glance: when you want to add your own route into a plan week, the system checks it before saving — does it land next to a heavy day, does it blow up the week, does it fall inside a recovery window:

🟢
Clean — saved
The route fits the week and collides with nothing. No questions, no friction.
🛡
Key-session collision
The route lands on long-run day. The system asks directly: should it take over the key session’s role? You decide.
⛔
Safety veto
A day next to a heavy session, or a recovery week. Refusal with a reason — and a suggestion of the nearest sensible day.

Not a gram more, not a gram less

“It’s not about training more. Nor less. It’s about training, every single day, exactly as much as your body can turn into fitness.”

— the UltraFlow plan engine principle

A rigid plan you either execute or you don’t. A plan that sees your data, you execute wisely — with brakes when needed, and with a clear conscience when you can push.

Every number in UltraFlow has a source: your watch, your history, your check-in. Zero guessing — including when the honest answer is “not enough data”.

Join UltraFlow

€29 / 129 zł a month. App Store, Google Play and PWA; Garmin, Suunto or any watch via FIT upload.

Join →

AI reports · for fitness and performance purposes only · not a substitute for a certified coach’s judgement

Tomasz · UESCA Certified Ultra Coach · Founder, UltraFlow™
Firefighter, Polish State Fire Service. Mountain ultrarunner. KBL 110 km, SOG 160 km, Tatra Ridge Ultra 71k.
Join UltraFlow →
Read next
The same course. A different race for everyone.KBL 110 km — what the system saw, from the plan to the post-race debrief. Monotony: the number quietly killing your training blocks.Lack of stimulus variability is the best injury predictor.

Tomasz · UESCA Certified Ultra Coach · Founder, UltraFlow™
Firefighter, Polish State Fire Service. Mountain ultrarunner. KBL 110 km, SOG 160 km, Tatra Ridge Ultra 71k.