Mosaic

Building the most advanced
training platform

Mosaic reads your sleep, HRV, training load, and every activity to adapt your plan in real time.

Built for all athletes. iOS — coming soon.

No spam. Early access notification only.

See it in action
Built for the way you train

One platform. Three sports.
Your whole life.

Whatever you train for, Mosaic adapts to what you actually do — including the stuff outside your main sport.

Running

5K to ultra

VDOT, LT pace, HR zones — auto-derived from your training. Plan adapts when life happens.

  • Marathon, half, 10K, 5K — and beyond
  • Adaptive long-run progression with taper
  • All sports factored into load

Triathlon

Sprint to Ironman

Swim, bike, run modelled separately. Race-day target updates daily. Course factors calibrated against 1.3M finishes.

  • FTP, CSS, LT pace — all auto-derived
  • Bike & aero setup affects projected time
  • All sports factored into load

Hyrox

Doubles, singles, pro

Heavy-load sport tracking. Skierg, sled, wall balls all factored. The plan blends endurance with power.

  • Race-time prediction across 89,000 finishes
  • Strength & endurance balance per phase
  • All sports factored into load
Demo

See a real user's current plan

Click around. Every number is a doorway.

Tap the readiness card

A single number — 48 — that reads sleep, HRV, training load, freshness, and leg fatigue. Tap it to see what's driving it.

9:41
T's Sandusky 70.3
Base · Week 3 of 20
SWIM · 3300m RPE 3   TSS 40
Swim technique
3300m total. 200m Warm up. Drills: 6×25m fist swim + 4×50m 6-kick switch. Main: 8×75m easy pull @ 2:10/100m. 200m Cool down.
Readiness
48
Manage Load
Sleep
847h 32m
Strain
2TSS
Physiology
71/100
Run load is elevated. Bike is not the primary concern.
Recent
Cardio
Mon 11 May
3.7 km
HIIT
Fri 8 May
77 min
Climbing
Thu 7 May
78 min
Tennis
Wed 6 May
0.7 km
Run
Tue 5 May
21.1 km
Readiness
 
48
Manage Load

Run load is elevated. Bike is not the primary concern. Sleep debt is 2h above your typical level. Prioritise sleep tonight.

Discipline Readiness
Bike46 Manage
Run47 Manage
Cross-training43 Manage
Today's Strain
3%Starting
Light activity logged. No significant effect on readiness yet.
Freshness
−15Heavy
~18h to baseline
Heavy recent load. Easy sessions or rest until this clears.
Load Ratio
0.49×Low
7d: 121 TSS / 28d avg: 248 TSS
Acute load is well below chronic baseline. Deload phase.
Physiology
71/100Moderate
Physiology signals are moderate.
Sleep History
57Low
7-night trend · 6h 34m debt
Cumulative sleep debt is impairing recovery.
Leg Fatigue
7Light
Light residual leg load from recent activity. No effect on today's session.
Sleep
Wed, May 20, 2026
75/100
Good
Last night
7h 23m
In target range (7–9h)
Sleep stages
Deep Good1h 26m · 19%
REM Excellent1h 39m · 22%
Light4h 18m · 58%
Awake Normal8m · 2%
Analysis
REM at 22%. Above your 7-day average. Recovery quality was good.
7-night avg
7h 11m
per night
Score 75/100
30-day avg
7h 21m
per night
Tonight's target
8h 33m
Base 7h 33m + 60 min debt recovery
Last 7 nights
Duration vs 7h 33m target
target
Cumulative sleep debt
5h 5m · moderate
Above your typical 4h 17m. Sleep is worse than usual.
3h 17m from 2 short nights · down 34m this week
target 2h 4h 6h 8h
Sleep score
74
Thu
71
Fri
23
Sat
90
Sun
89
Mon
94
Tue
88
Wed
Today's Strain
May 12, 2026
2
TSS · Target 55–75
This week
Mon
75
Tue
2
Wed
Thu
Fri
Sat
Sun
Daily steps
2,052
2 passive TSS from background activity
Physiology
May 12, 2026
71%
recovered
Resting HRV
80.0ms
Normal · −19% vs baseline
Resting HR
40bpm
Normal · +1 vs baseline
Sleep Score
84/100Optimal
7h 32m total sleep
Adequate recovery
HRV at 80.0ms. Resting HR at 40bpm. Sleep score 84 (7.5h), well-recovered. Recovery adequate for planned training.
HRV trend−19.2% vs baseline
80.0ms
Personal recovery rate
1.63×
slower than average
Used in your recovery countdown and load ramp.
Freshness
 
−15
Heavy

Sustained hard training. Easy sessions or rest recommended.

18Hours
To Baseline · Session fatigue
5Days
Fully Clear · All fatigue
18 hours of recovery needed from recent sessions. Hard sessions will not produce useful adaptation. 5 days until all accumulated load clears.
Weekly Trend
+19
+16
+14
+12
+10
+9
−13
−12
Wk 5Wk 6Wk 7Wk 8Wk 9Wk 10Wk 1Wk 2
Fitness vs Fatigue
Fitness (CTL)17
Fatigue (ATL)32
Fatigue exceeds fitness by 15. Recent training load is above what the body has adapted to.
Load Ratio & Injury Risk
 
0.49
Low
Training below baseline
This week's load (121 TSS) is well below the 4-week average (248 TSS). Normal during a deload or recovery week.
Acute vs Chronic Load
This week (acute)121 TSS
4-week average (chronic)248 TSS
This week's load is 51% below the 4-week average.
By Discipline
Bike1.08
Run1.03
SwimNo direct activity
Sleep History
7-night and 30-day trend
57
Low
Cumulative debt
6h 34m
Above your typical 4h 17m · target 7h 33m/night
Cumulative deficit compounds even when individual night scores look fine. Add 15–30 min/night until cleared.
Last 7 nights
Duration vs 7h 33m target
target
Cumulative sleep debt
6h 34m · moderate
Above your typical 4h 17m. Sleep is worse than usual.
3h 17m from 2 short nights · up 41m this week · not clearing yet
target 2h 4h 6h
Sleep score
62
Thu
58
Fri
23
Sat
67
Sun
55
Mon
49
Tue
57
Wed
Leg Fatigue
 
7
Light

Light residual leg load from recent activity. No effect on today's session.

Decay Timeline
7.2
2 sessions · 7d
7d agotoday+4d
Past load Decay projection
Recent Sessions
Rugby
yesterday
Mon, May 11 · 8:01 PM
still loading legs
Running · 21.1 km
7 days ago
Tue, May 5 · 9:08 PM
cleared
How it works
Leg fatigue tracks localised mechanical load from cross-training. Activities load the legs at different rates: hiking and skiing are highest (eccentric quad damage), cycling and rowing are sustained but lower-impact, walking is minimal.
Each session decays with a 48h base half-life, scaled by sport. A subsequent session within 72h slows clearance by 1.3x per reload, capped at three.
Above 20, readiness is capped at Manage Load. Above 60, capped at Ease Back. Calibrated against EIMD recovery research (Clarkson and Hubal 2002, Paulsen 2012): functional force-absorption deficits last 72 to 96 hours after heavy eccentric loading and measurably increase impact-injury risk.
This signal is independent of TSB and HRV. Cardiovascular metrics rebound faster than tissue does.
Cardio
Mon, May 11, 2026 · 7:14 PM
3.7 km
Distance
28 min
Time
7:34/km
Pace
22 TSS
Load
Heart rateavg 142 · max 168 bpm
0:0014:0028:00
Time in Zones
Z1
5:02
Z2
11:46
Z3
6:43
Z4
3:22
Z5
1:07
Mosaic notes
Easy zone-2 cardio, complementing yesterday's heavy session. 22 TSS contributes to weekly cross-training load. Counted as low-impact for leg fatigue (multiplier 0.40).
Plan
Sandusky 70.3 · Week 3 of 20 · Base
This week8h 45m · 245 TSS
Mon
Swim technique · 3300m
60 min · TSS 40 · RPE 3
Today
Tue
Easy run · 8 km
45 min @ 5:25/km · TSS 32
+1d
Wed
Endurance ride · 90 min
90 min @ 175W · TSS 48
+2d
Thu
Threshold intervals
5×6min @ 4:02/km · TSS 56
+3d
Fri
Recovery
Rest day
+4d
Sat
Long bike + brick run
2h ride + 20min run · TSS 95
+5d
Sun
Long run · 22 km
1h 50m @ 5:00/km · TSS 88
+6d
Plan adapts overnight
If readiness drops, intensity reduces automatically.
Plan a holiday
Mosaic reshapes around it
Where to?
Lisbon, Portugal
Dates
22 May
29 May
8 days · Sun → Sun
Training intent
Facilities available
Replace bike sessions with
Pool swim + walk
Travel days
What Mosaic does
Volume drops 30% across the 8 days. Bike sessions swap for pool work (CSS-maintenance) and walks. Long run on day 4 replaced with a fasted easy run; threshold session moved to day 7 back home. Race-day projection widens by ±5 min during the gap, re-tightens within a week of return.

Saving activates holiday mode and reshapes the plan.

Report illness
 
Type
Flu / chest
Symptoms (select all)
Location of symptoms
Severity7 / 10
MildSevere
Day of symptoms
Resting HR (vs baseline)
+9 bpm · elevated
What can you do today?
Mosaic's response
Below-the-neck symptoms + severity 7 + elevated RHR. Hard sessions for the next 5 days replaced with rest. Day 6–8: easy walk only. Day 9+: gradual return at 60% volume with a zone-2 ceiling. Mark "Cleared" to release. Race-day projection widens by ±12 min during recovery.

Saving activates illness mode and reshapes the plan.

Report injury
 
Where does it hurt?
Calf
Side
Pain level4 / 10
MildSevere
Can you walk pain-free?
Yes, walking is fine
Can you run?
Preferred rehab activity
Auto (protocol default)
Expected days off running
Affected sessions
4runs · 12 days
Auto-replaced with cycling + swim
Threshold run on Thursday swaps for a cycling tempo (same TSS). Long run on Sunday swaps for a steady-state ride. Aerobic load preserved, mechanical load drops to zero. Strength sessions kept.
Return-to-Run protocol
Day 1–3Rest + ice
Day 4–7Cycling + swim
Day 8–12Walk–jog intervals
Day 13+Easy runs, build slowly
Standard return-to-play timeline for calf strain. Mosaic scales by your personal recovery rate (1.63× slower than average for this athlete).

Saving activates injury mode and adjusts your training plan.

Tap Sleep, Strain or Physiology

It's not obvious what each score means on its own. Tap a ring to see how Mosaic builds it from your own 28-day baseline.

Race forecast

A finish time, built from every input.

Swim, bike and run modelled separately. Tap any factor to see how it shapes race day.

A finish time that updates daily

Swim, bike and run are modelled separately. The race-day target compresses as fitness builds, from ±21 min today toward race week.

9:41
Forecast
T's Sandusky 70.3 · Week 6 of 20
70.3 forecast
4:55:00
−14 min vs today
±18 min · narrows to race day
Each leg is modelled on its own marker, then compounded with transitions, course factors and race-day heat. The full plan counts toward race day.
Swim
38:00
2:00/100m
−2:10 vs today
Bike derived
2:28:00
36.5 km/h · 253W
−6:30 vs today
Run
1:43:00
4:53/km
−3:10 vs today
You
Recreational
PBs on file
Capacity
1:51 · 295W · VDOT 47
Race in 14w
Adaptation
Responding
4 of 5 signals
Training
6 sess/wk
S 1.3 · B 3.3 · R 1.5
Endurance
63 · On track
S 55 · B 70 · R 66
Durability
Met
Bike 100% · Run 100%
Bricks
4 bricks
Run fade reduced
Open water
3 OW swims
Wetsuit · adapting
Venue
Sandusky
+4.0% vs flat
Transitions
6:00
T1 3:24 · T2 2:36
Bike & aero
Clip-ons
Calibrated · CdA 0.42
Heat
Cool training
Train 14°C · race 24°C
All major factors present. This is a high-confidence forecast.
Race-time progressionLower is faster
2,000 simulated builds across all three legs. The band is the realistic spread of where the next 14 weeks could land, factoring adherence, training response, and race-day form.
Goal 5:00:00
Wk 1Wk 6Wk 8Wk 16Wk 20
Likely range Median Goal
Chance of beating your goal of 5:00:00
64%Comfortable. A solid build breaks 5 hours.
Edit goal time
Tap an outcome to set it as your goal
Optimistic
4:42:00
top 10%
Median
4:55:00
most likely
Conservative
5:08:00
bottom 10%
Race-day pacing is subject to course profile, weather, fueling, and how the build finishes. The forecast tracks fitness, not the day itself.
Forecast factor
You
PBs anchor the prediction
Profile · anchors the model
Recreational tier
Aerobic-builder archetype · CTL 64 · Strava since Mar 2022
Personal bests · on file
Swim 1500m29:10
Bike FTP295W
Run 10K44:40
Half marathon1:39:20
How it works
PBs across swim, bike and run anchor the prediction. The run leg blends every PB into a single race-time estimate through the same engine running mode uses, then projects forward by training response. Race history feeds calibration once you have two logged races.
Forecast factor
Capacity
Fitness markers that set the pace floor
Fitness markers · 14w to race day
CSS swim1:51 → 1:48/100m
FTP bike295W → 312W
VDOT run47 → 49
How it works
CSS, FTP and VDOT anchor each leg of the prediction. The horizon model projects each marker to race day based on weeks remaining, planned sessions per discipline, your ability band, and recent adherence. Markers without recent training get demoted so the projection does not overpromise gains.
Forecast factor
Adaptation
How fast you respond vs population average · 4 of 5 signals
Response ratio · 1.00 = on track
Swim1.04
Bike1.06
Run1.03
How it works
Each discipline blends its own weighted signals into a ratio. Above 1.05 the model credits faster horizon gains; below 0.95 it tempers them. Signals you have not yet generated count as zero, so a discipline only moves once at least one signal is present. HRV is the only cross-discipline signal; everything else is sport-specific.
Forecast factor
Training
Engine inputs from your plan
Planned next 4 weeks
6 sess/wk · 142 km bike+run
Build · Week 6 of 20
Per discipline · planned / wk
Swim1.3 sess · 5,400 m
Bike3.3 sess · 96 km
Run1.5 sess · 42 km
How it works
The horizon model projects fitness using planned sessions per week per discipline. The readiness closure rate combines sessions and hours as a geometric mean. The run row also feeds the readiness penalty directly from your last four weeks of synced runs.
Forecast factor
Endurance
Endurance fit per discipline
Overall readiness
63 · On track
Swim55 · 12 / 16 sessions
Bike70 · 96 / 110 km/wk
Run66 · 44 / 50 km/wk
How it works
Readiness scores how well your recent volume and longest session match what the race distance demands, rated against your ability tier in each sport. Today is penalised when readiness is low; the projected race-day prediction credits the plan with closing the gap.
Forecast factor
Durability
Long sessions vs race-distance threshold
Long ride2.6h / 2.5h · met
Long run2.0h / 1.9h · met
Long swimNot modelled
How it works
Durability is an asymmetric cap: it can only slow you down, never speed you up. If either threshold is below race demand the engine multiplies the run leg upward. Once both are met the multiplier is 1.0. The model rewards meeting the bar, not exceeding it. Extra long-session volume shows up in Endurance and Capacity, not here.
Forecast factor
Bricks
Bike-to-run adaptation
Adapting
4 bricks logged
Run fatigue discount
3.8% (base 5%)
Recent bricks
Most recent: 50 min bike to 25 min run (Tue), 2h10 bike to 20 min run (Sat). Detection looks for a ride immediately followed by a run within 45 minutes.
How it works
Bricks train the legs to switch from cycling to running. The engine reduces the run-leg fatigue discount as you log more bricks, up to a 40% reduction at full adaptation. Even a veteran still fades, but less.
Forecast factor
Open water
Adaptation to race-day swim conditions
Adapting
3 OW swims · 26w
Remaining penalty
+1.2% (wetsuit)
How it works
Open-water swims train sighting, chop tolerance and pacing without walls. The engine reduces the penalty as you log more sessions, saturating around 8 swims. Wetsuit races carry a lower base penalty because buoyancy offsets some of the open-water gap.
Forecast factor
Venue
Sandusky 70.3 course adjustments
+4.0% slower
Net +7:54
vs an ideal flat, cool, sea-level course
By leg
Swim · open-lake, exposed wind+4:48
Bike · pancake-flat 200 m−2:54
Run · flat 30 m, warm+6:00
How it works
Course factors are calibrated against 1.3 million historical Ironman and 70.3 finishes (CoachCox, Kaggle, 2002 to 2024). Each leg is adjusted for elevation, profile, swim type, wind and climate relative to an ideal flat, cool course.
Forecast factor
Transitions
T1 and T2 clock time
6:00
Field average
T1 (swim → bike)3:42
T2 (bike → run)2:49
Sock choiceSocks on at T1
How it works
Transitions are added directly to the finish time, no multiplier. Defaults come from 1.3 million historical finishes at your predicted swim-bike-run time. T1 runs longer than T2 because of the wetsuit strip and the longer run in from the swim exit. You can override with your own benchmark.
Forecast factor
Heat
Training temperature vs race climate
Cool training base
+10°C gap
Race climate~24°C anchor
Recent training avg14°C (12 activities)
How it works
Athletes who train in heat similar to the race retain 3 to 5 percent performance versus athletes who train cool. The engine discounts the climate penalty up to 50 percent when training temperature is within 15°C of the race anchor, and zero when the gap is larger. Swim is unaffected.
Leg breakdown
Swim
How 38:00 is built
Base marker
CSS 1:51/100m · details →
35:10
Open water +0:32
Wetsuit, 3 OW swims logged · details →
35:42
Course +1:50
Open-lake, exposed wind · details →
37:32
Readiness +0:28
Swim volume on track
38:00
Projected leg time
2:00/100m
38:00
Each step shows the cumulative time after it is applied. Tap a factor row to open its detail.
Leg breakdown
Bike
How 2:28:00 is built
Base marker
FTP 295W · CdA 0.42 · details →
2:30:30
Course −2:55
Pancake-flat 200 m · details →
2:27:35
Durability +0:00
Long-ride threshold met · details →
2:27:35
Readiness +0:25
Bike block on track
2:28:00
Projected leg time
36.5 km/h · 253W avg
2:28:00
Each step shows the cumulative time after it is applied. Tap a factor row to open its detail.
Leg breakdown
Run
How 1:43:00 is built
Base marker
VDOT 47 · details →
1:39:30
Course +3:25
Flat 30 m, warm · details →
1:42:55
Heat +0:00
Discounted by cool base · details →
1:42:55
Bricks −0:25
4 bricks reduce run fade · details →
1:42:30
Readiness +0:30
Run block on track
1:43:00
Projected leg time
4:53/km
1:43:00
Each step shows the cumulative time after it is applied. Tap a factor row to open its detail.
Bike & Aero
Sandusky 70.3 · 90 km bike leg
Target time
2:30:18
Avg power
263W
Aero Setup
FrameTri / TT
PositionAero bars · tucked
WheelsDeep front + disc rear
HelmetAero TT
SuitTri suit · sleeved
Estimated CdA0.245 m²
Lower CdA = less drag. 0.20–0.25 is competitive age-grouper territory.
Pacing Strategy
NP target263 W
IF0.86
VI ceiling1.05
Cadence range85–92 rpm
263W steady is achievable at your current FTP (295W). Spikes above 320W on rollers cost more than they save.
Wind & Drafting
Flat, exposed Sandusky course. Expect 8–14 mph crosswind. Stay in aero. 12m gap rule enforced.

Twelve inputs, all tappable

Capacity, durability, bricks, venue, heat and more. Tap any card to see how it is built and what would move it.

Your numbers

Fitness markers, tracked over time.

CSS, FTP, LT pace and VO2max, auto-derived from your training. No 20-minute tests.

Markers from your training

CSS, FTP, LT pace and VO2max, all auto-derived from your actual sessions. They update when you improve.

9:41
Stats
Sandusky 70.3 · Week 6 of 20
Your Numbers
Swim CSS1:51/100m Well-Trained
Well-Trained
BuildingElite
Bike FTP295 W Well-Trained
Well-Trained
BuildingElite
Run Threshold (LT)4:02/km Well-Trained
Well-Trained
BuildingElite
173 bpm · 88% max HR
VO2max55 Well-Trained
Well-Trained
BuildingElite
Swim CSS trend−65.0s since first sample
Critical swim speed · faster pace = lower number
1:51/100m
Bike FTP trend+10 since first sample
Functional threshold power · auto-derived from rides
295W
Run threshold trend−26.7s since first sample
Threshold pace derived from VO2max history
4:02/km
VO2max trend+9.5 since first sample
Aerobic capacity over time · higher = better
55.0ml/kg/min

Trends, not snapshots

Every marker has a trajectory. The sparklines show direction of travel since you joined.

Live adaptation

See what happens when you do a sport outside the plan.

A 2-hour padel session lands on Tuesday of marathon week 8. Tap through the four choices the app actually gives you.

Cross-training counts as training

A heavy session that isn't running still hits the running plan. Mosaic folds it into the same load model that drives your week.

9:41
Plan
Berlin Marathon · Week 8 of 16 · Build
This week9h 30m · 312 TSS
Mon
Easy run · 10 km
52 min @ 5:12/km · TSS 45 · Done
Done
Tue
Padel · 2h 12m
Logged · 126 TSS cross-training
Today
Wed
Threshold · 5×6min
14 km @ 4:02/km · TSS 70
+1d
Thu
Easy run · 8 km
42 min @ 5:15/km · TSS 36
+2d
Fri
Recovery
Rest day
+3d
Sat
Easy run · 10 km
52 min @ 5:15/km · TSS 45
+4d
Sun
Long run · 32 km
2h 40m @ 5:00/km · TSS 145
+5d
Plan rebalancedReplace & Reduce
Plan check
A non-planned session just landed.
Padel · 2h 12m
Synced from Strava · avg HR 152
+126 TSS
Load above safe range.
ACWR 1.62× against a 1.50× ceiling. The week needs to absorb 89 TSS of excess load.
Adjust your week?
A padel session added load on top of your planned running. The adjustments below bring the week back in line. Quality sessions are preserved where possible.

The plan is dimmed for a reason

When the model spots an overload, it surfaces the choice up-front. The full plan is one tap away — but the decision comes first.

This is what we do.

Why it works

Takes in every input. Acts accordingly.

Every number is scientifically backed. Six months of model-building behind the scenes.

Plan adjusts for every sport
Two hours of sport (e.g. padel) impacts your running.

Padel, climbing, rugby, tennis, HIIT — Mosaic understands how each loads the body and folds it into your training load. Cross-training counts as training, because it is.

Adjusts overnight, every night
Poor sleep last night? Heavy load this week?

Mosaic recalculates before you open the app. No manual overrides, no "should I do this session?" doubt. The plan is already updated.

A finish time that updates daily
Dual-tau race model with per-leg pacing.

Calibrated against 1.3M historical race finishes. Compresses from ±18 min today to under 3 min on race week. The prediction tightens with you.

HRV, sleep, RHR vs your own history
Not population norms. Your baseline.

80ms is normal for you, not the average athlete. Every signal is z-scored against your last 28 days. A bad day is bad relative to you.

ACWR across every sport
Injury risk, monitored automatically.

Acute vs chronic load with cross-training transfer. When the ratio crosses the safe zone, the plan deloads itself — before you feel the breakdown.

Built on your training history
It doesn't start fresh — it picks up where you are.

Mosaic learns from your Strava history and previous training. CSS, FTP, LT pace, VO2max all come from sessions you've already done. No 20-minute tests. No restart.

Works with your watch
Strava
Garmin
Apple Health
The science

Rigorous by construction

Every model peer-reviewed-defensible. Citations underwrite the numbers you see.

1.3M
Race finishes ingested to calibrate course factors. Ironman + 70.3, 2002–2024.
89k
Hyrox results ingested for percentile-based race prediction across S4–S6.
12
Defensible models — Banister, ACWR, Riegel, dual-tau race, EPOC decay, iTRIMP, more.
28d
Personal baseline window for every physiology signal. Your own history, not population norms.

Banister (1975) impulse-response · Riegel (1981) race prediction · Coggan & Allen (2019) TSS & FTP · Gabbett (2016) ACWR · Borresen & Lambert (2009) iTRIMP · Daniels & Gilbert (1979) VDOT · Plews & Laursen (2017) HRV.

The most advanced training
platform — coming to iOS

Private beta in progress. Join the waitlist for early access.

No spam. Early access notification only.