Z/2ZoneTwo

Features · Multi-sport

One athlete, three sports.

Your body doesn’t know the difference between a 90-minute run and a 90-minute ride. It knows fatigue, accumulated stress, and whether you slept. Training platforms pretend otherwise. ZoneTwo doesn’t.

Why single-sport models fail triathletes

If you’re a pure cyclist on TrainingPeaks, or a pure runner on Runna, the single-discipline model works fine. The moment you add a second sport — even recreationally — those tools start lying to you:

  • Your cycling fitness number (CTL-bike) looks healthy, but the real combined CTL is 40% higher, and you’re overreached.
  • Your run volume is conservative, but cumulated with the Saturday long ride you’re stacking two hard days back to back.
  • Your swim is “easy” on its own, but it’s the third session in 24 hours and nobody is tracking the total.
  • Monotony per-sport looks fine, combined monotony is 2.3, and injury risk is real.

This is the default problem for every amateur triathlete and every runner who commutes by bike. Our model fixes it.

What combined load actually means

We compute a single TSS per activity, regardless of sport, using whichever method your data supports:

  • Cycling: Coggan power-TSS from normalized power and FTP. Falls back to HR if power is missing.
  • Running: Friel rTSS from pace and threshold pace. Falls back to HR-based TRIMP otherwise.
  • Swimming: sTSS from 100m pace against threshold pace.
  • Fallback:Banister-style TRIMP on HR if pace/power aren’t available.

Once we have a single TSS per activity, the classical Banister model gives us combined CTL (42-day EWMA), ATL (7-day EWMA), and TSB as derived values. These are the numbers the coach actually reasons on.

Cross-sport rules we detect

Two dedicated rule-engine checks are specific to multi-sport athletes:

DISCIPLINE_NEGLECT

If you’ve declared two or more primary sports and one of them has zero activities in the last 14 days, the coach flags it. Your next block will include the neglected sport — not because the model wants to, but because the rule engine forces it and the system prompt makes ignoring it a bug.

CROSS_SPORT_LOAD_ADD

When your last 7-day ATL is ≥1.3× the previous week, and at least 20% of that new load comes from a sport that was under 5% of the prior two weeks, we flag it. Textbook injury pattern: runner starts cycling, cyclist adds running. The coach will either redistribute or force recovery.

Plus all the single-sport rules — acute spikes, prolonged negative TSB, monotony watch — run on combined load, not per-sport. That’s the difference.

Plans that actually balance three sports

When the coach prescribes the next block, the weekly template must include at least one workout per declared primary sport, unless your available time is severely constrained. A triathlete with zero swim sessions in the plan is a bug the system catches.

48-hour spacing applies across sports too. Tuesday threshold ride + Wednesday hard run? The coach won’t prescribe that. If you did it anyway and rated the run “too hard”, the next plan will notice.

Read next

Train like one athlete.

Connect Strava, and the three sports become one honest read — no more juggling spreadsheets.

Free during beta · No credit card

By connecting, you agree to our Terms of Use and Privacy Policy.