Training

Strava + Apple Health → GPT-4.1 coach. Everything self-hosted.

#MihiContraMe →

YTD

Sessions Distance Time Elevation Calories
367 11032.0 km 485h 04m 27879 m 317916 kcal
2.01 ACWR
Very high injury risk Acute 60.6 · Chronic 30.1 (daily avg suffer score)

Gear

BikeSessionskm
HoneyBadger 40 2480.6 km
ErgBike C2 74 1513.3 km
Hoops 33 1294.4 km
Holly Grail 15 1195.7 km
TheMule 2 62.7 km
Commuter 2 62.4 km

HR & HRV — last 90 days

Resting heart rate and HRV (SDNN) with daily training load and sleep overlay.

Weekly training — 12 months

km per week with average heart rate and HRV trend lines.

Fitness — CTL / ATL / Form

Chronic Training Load (42d), Acute Training Load (7d) and Form (TSB = CTL − ATL). Computed from suffer score.

This week

This week12-mo avgvs avg
Sessions88.7 -8.0%
Distance70.7 km253.6 km -72.1%
Time3h 09m11h 06m -71.6%
Elevation—585 m -100.0%
Avg HR118 bpm115 bpm +2.2%
Avg HRV—37.2 ms
Load147385.0 -61.8%
Avg Power 129 W 158 W -18.6%

AI coaching insights

  • activity 2026-11-10

    **Today's Activity** - Today's 15,008m BikeErg was short and easy, well below your average session for distance, duration, and difficulty. - Average HR (105.3), power (111.1W), cadence (70.9), and suffer score (8) were all lower than weekly (~112 bpm avg HR, ~83 WL), showing clear active recovery status. - Positive: Kept effort light, suggesting good discipline for recovery. No concerns—just ensure you're fueling and hydrating well. **Weekly Load & Trends** - Current weekly load (83) is moderate and aligned with your recent pattern; no sharp spikes or drops in intensity. - You're in a maintenance phase, not ramping up or dropping volume—appropriate for late-season or post-peak block. **Recovery Recommendation** - HRV (26.3) is low and resting HR (56) is a touch high for you, indicating accumulated fatigue. - Take an easy/recovery day tomorrow; avoid high intensity or big volume. Focus on rest and supportive recovery habits.

  • activity 2026-11-10

    **Today's Activity** - This 3x20min interval on the BikeErg (29.6 km, 198 W avg, 129 bpm avg HR, 58 rpm avg cadence, Suffer Score 64) is at the higher end of your average effort (avg ride HR: ~112 bpm; avg watts, cadence not available for all rides), indicating a solid threshold session with sustained intensity. - HR (129 vs 112 avg), power (198.3 W), and Suffer Score (64 vs avg per session ~41) are all elevated; cadence is in a typical endurance range. - Standout: Strong, consistent effort above average intensity; no concerning max HR. Slightly lower cadence may indicate fatigue or focus on power. **Weekly Load & Trends** - Weekly load is 83 so far, within your 7-day (416) and 28-day (4281) Suffer Score trends; typical for you (~10 sessions/week). - Trend is maintaining/building, with no major spikes or drops; volume is steady and controlled. **Recovery Recommendation** - HRV is slightly low (26.3), and resting HR is at baseline (56); coupled with a hard session today, this suggests you should take an easy aerobic or rest/recovery day tomorrow.

  • activity 2026-11-10

    **Today's Activity** Today's BikeErg session was very short and low intensity (28s, 237.9m), with HR (100.7), power (223.7W), cadence (62.6) all below your average, and a suffer score of 0. This is far lighter than your normal efforts—no concerns, but this looks like a technique or warm-up drill, not a training load contributor. **Weekly Load & Trends** Weekly load is 83, much lower than typical (recent 7d: 352 suffer score, 10 sessions), showing a drop compared to recent workload (4281 over 28d). You're clearly in a recovery or down week—no spikes, just a notable reduction. **Recovery Recommendation** HRV (26.3) and resting HR (56) are both within normal range given the decreased load; you're recovering well. Suggest one more easy or moderate session tomorrow—no need to go hard yet, let the body soak up recovery benefits.

  • activity 2026-11-10

    **Today's Activity** - This 30-min BikeErg session (13.4 km, 110 avg HR, 149W, 74 cadence, suffer score 8) is below the athlete's typical ride intensity and duration. - HR (110.1) is slightly below recent average (112.4), power moderate, cadence typical, and suffer score much lower than weekly (avg 35/session). - Positives: Kept effort very aerobic, showing good control. Concern: Session does not add much training stimulus; may be a recovery or maintenance ride. **Weekly Load & Trends** - Weekly load (83) is in the maintain/recovery range, much lower than recent 28d average weekly suffer score (~1070); 7d (352) is also low. - The number of sessions (10) and step count (7975) indicate moderate activity; overall, the athlete is in a light training week with no concerning spikes. **Recovery Recommendation** - HRV (26.3) and resting HR (56) are normal; with low training load, athlete is likely adequately recovered. - Recommendation: Easy or moderate session tomorrow is appropriate—can resume build if feeling fresh, but ensure gradual ramp-up.

  • activity 2026-11-09

    **Today's Activity (Rowing: 2,337m, 848s, 59.9W, 23.1 cadence, 117 kcal)** - This rowing session is a light cross-training effort compared to your usual cycling volume and intensity. - No HR data recorded; power and cadence are moderate, but suffer score is not available, so likely low impact given your usual bike work. - Positive: Good to see cross-training and easy aerobic work; no concerns, just keep HR/wattage logged for better analysis. **Weekly Load & Trends** - This week’s load (83) is below your recent 28-day average (1,074 weekly), showing a marked drop; you are in a recovery phase. - No load spikes; trending lighter, likely by design or enforced downtime. **Recovery Recommendation** - HRV (26.3) is below baseline; resting HR (56) is typical, but lower load supports recovery. - Recommend another easy/recovery day or rest; avoid hard training until HRV rebounds.

Activities this week

W46 8×  ·  70.6 km  ·  3h 09m  ·  147 load
MonTueWedThuFriSatSun
Row 7.2 km 180.5w
Row 1.2 km 34.8w
Row 1.7 km 77.4w
Row 2.3 km 59.9w
V.Ride 13.4 km 149.4w
V.Ride 0.2 km 223.7w
V.Ride 29.6 km 198.3w
V.Ride 15.0 km 111.1w
All activities 120 sessions · 1244.9 km · 89h 59m · 4210 load
W46 4×  ·  12.4 km  ·  1h 02m  ·  67 load
MonTueWedThuFriSatSun
Row 2.3 km 59.9w
Row 1.7 km 77.4w
Row 1.2 km 34.8w
Row 7.2 km 180.5w
W40 2×  ·  20.0 km  ·  1h 25m  ·  37 load
MonTueWedThuFriSatSun
Row 10.0 km 162.0w
Row 10.0 km 166.3w
W39 1×  ·  10.0 km  ·  42m  ·  15 load
MonTueWedThuFriSatSun
Row 10.0 km 162.7w
W38 1×  ·  10.0 km  ·  43m  ·  24 load
MonTueWedThuFriSatSun
Row 10.0 km 157.9w
W37 1×  ·  10.0 km  ·  43m  ·  14 load
MonTueWedThuFriSatSun
Row 10.0 km 158.4w
W36 2×  ·  20.0 km  ·  1h 26m  ·  33 load
MonTueWedThuFriSatSun
Row 10.0 km 162.8w
Row 10.0 km 152.1w
W35 2×  ·  20.0 km  ·  1h 26m  ·  42 load
MonTueWedThuFriSatSun
Row 10.0 km 167.0w
Row 10.0 km 151.0w
W34 2×  ·  20.0 km  ·  1h 25m  ·  21 load
MonTueWedThuFriSatSun
Row 10.0 km 166.5w
Row 10.0 km 166.8w
W33 1×  ·  10.0 km  ·  42m  ·  10 load
MonTueWedThuFriSatSun
Row 10.0 km 166.1w
W32 1×  ·  10.0 km  ·  42m  ·  18 load
MonTueWedThuFriSatSun
Row 10.0 km 163.3w
W31 3×  ·  30.0 km  ·  2h 09m  ·  57 load
MonTueWedThuFriSatSun
Row 10.0 km 158.8w
Row 10.0 km 162.2w
Row 10.0 km 157.0w
W23 1×  ·  10.0 km  ·  42m  ·  59 load
MonTueWedThuFriSatSun
Row 10.0 km 168.4w
W22 1×  ·  10.0 km  ·  42m  ·  55 load
MonTueWedThuFriSatSun
Row 10.0 km 170.4w
W21 2×  ·  20.0 km  ·  1h 24m  ·  71 load
MonTueWedThuFriSatSun
Row 10.0 km 169.5w
Row 10.0 km 168.7w
W20 1×  ·  10.0 km  ·  41m  ·  66 load
MonTueWedThuFriSatSun
Row 10.0 km 176.0w
W19 3×  ·  41.1 km  ·  2h 57m  ·  106 load
MonTueWedThuFriSatSun
Row 21.1 km 149.3w
Row 10.0 km 167.2w
Row 10.0 km 176.6w
W16 1×  ·  10.0 km  ·  43m  ·  51 load
MonTueWedThuFriSatSun
Row 10.0 km 159.3w
W14 1×  ·  10.0 km  ·  41m  ·  57 load
MonTueWedThuFriSatSun
Row 10.0 km
W13 1×  ·  10.0 km  ·  42m  ·  37 load
MonTueWedThuFriSatSun
Row 10.0 km 170.7w
W12 3×  ·  63.3 km  ·  4h 36m  ·  219 load
MonTueWedThuFriSatSun
Row 21.1 km 153.9w
Row 21.1 km 154.3w
Row 21.1 km 157.0w
W11 2×  ·  31.1 km  ·  2h 16m  ·  114 load
MonTueWedThuFriSatSun
Row 10.0 km 168.7w
Row 21.1 km 143.7w
W9 2×  ·  20.0 km  ·  1h 26m  ·  113 load
MonTueWedThuFriSatSun
Row 10.0 km
Row 10.0 km
W8 2×  ·  20.0 km  ·  1h 28m  ·  115 load
MonTueWedThuFriSatSun
Row 10.0 km
Row 10.0 km
W7 2×  ·  20.0 km  ·  1h 29m  ·  67 load
MonTueWedThuFriSatSun
Row 10.0 km
Row 10.0 km
W52 4×  ·  11.1 km  ·  46m  ·  72 load
MonTueWedThuFriSatSun
Row 10.0 km
Row 0.5 km
Row 0.5 km
Row 0.1 km
W51 3×  ·  30.0 km  ·  2h 07m  ·  181 load
MonTueWedThuFriSatSun
Row 10.0 km
Row 10.0 km
Row 10.0 km
W50 2×  ·  20.0 km  ·  1h 24m  ·  137 load
MonTueWedThuFriSatSun
Row 10.0 km
Row 10.0 km
W49 2×  ·  20.0 km  ·  1h 24m  ·  146 load
MonTueWedThuFriSatSun
Row 10.0 km
Row 10.0 km
W46 2×  ·  20.0 km  ·  1h 24m  ·  132 load
MonTueWedThuFriSatSun
Row 10.0 km
Row 10.0 km
W45 2×  ·  20.0 km  ·  1h 24m  ·  162 load
MonTueWedThuFriSatSun
Row 10.0 km
Row 10.0 km
W44 2×  ·  20.0 km  ·  1h 24m  ·  147 load
MonTueWedThuFriSatSun
Row 10.0 km
Row 10.0 km
W43 1×  ·  10.0 km  ·  42m  ·  64 load
MonTueWedThuFriSatSun
Row 10.0 km
W42 2×  ·  20.0 km  ·  1h 24m  ·  132 load
MonTueWedThuFriSatSun
Row 10.0 km
Row 10.0 km
W41 2×  ·  20.0 km  ·  1h 23m  ·  58 load
MonTueWedThuFriSatSun
Row 10.0 km
Row 10.0 km
W40 1×  ·  10.0 km  ·  43m  ·  41 load
MonTueWedThuFriSatSun
Row 10.0 km
W39 1×  ·  10.0 km  ·  43m  ·  23 load
MonTueWedThuFriSatSun
Row 10.0 km
W38 2×  ·  20.0 km  ·  1h 25m  ·  54 load
MonTueWedThuFriSatSun
Row 10.0 km
Row 10.0 km
W37 1×  ·  10.0 km  ·  41m  ·  43 load
MonTueWedThuFriSatSun
Row 10.0 km
W36 3×  ·  41.1 km  ·  2h 58m  ·  93 load
MonTueWedThuFriSatSun
Row 10.0 km
Row 21.1 km
Row 10.0 km
W35 3×  ·  30.0 km  ·  2h 06m  ·  129 load
MonTueWedThuFriSatSun
Row 10.0 km
Row 10.0 km
Row 10.0 km
W34 2×  ·  20.0 km  ·  1h 23m  ·  63 load
MonTueWedThuFriSatSun
Row 10.0 km
Row 10.0 km
W33 3×  ·  27.1 km  ·  1h 54m  ·  68 load
MonTueWedThuFriSatSun
Row 10.0 km
Row 10.0 km
Row 7.1 km
W32 2×  ·  20.0 km  ·  1h 29m  ·  31 load
MonTueWedThuFriSatSun
Row 10.0 km
Row 10.0 km
W31 2×  ·  23.7 km  ·  1h 42m  ·  54 load
MonTueWedThuFriSatSun
Row 10.0 km
Row 13.7 km
W30 4×  ·  54.9 km  ·  3h 58m  ·  115 load
MonTueWedThuFriSatSun
Row 10.0 km
Row 21.1 km
Row 10.0 km
Row 13.8 km
W29 3×  ·  33.4 km  ·  2h 26m  ·  86 load
MonTueWedThuFriSatSun
Row 10.0 km
Row 13.4 km
Row 10.0 km
W28 3×  ·  41.1 km  ·  2h 58m  ·  99 load
MonTueWedThuFriSatSun
Row 21.1 km
Row 10.0 km
Row 10.0 km
W27 3×  ·  30.0 km  ·  2h 07m  ·  98 load
MonTueWedThuFriSatSun
Row 10.0 km
Row 10.0 km
Row 10.0 km
W26 1×  ·  10.0 km  ·  44m  ·  23 load
MonTueWedThuFriSatSun
Row 10.0 km
W43 2×  ·  31.1 km  ·  2h 21m  ·  90 load
MonTueWedThuFriSatSun
Row 21.1 km 128.4w
Row 10.0 km 151.8w
W42 3×  ·  30.0 km  ·  2h 13m  ·  57 load
MonTueWedThuFriSatSun
Row 10.0 km 143.5w
Row 10.0 km 146.5w
Row 10.0 km 144.8w
W41 3×  ·  30.0 km  ·  2h 15m  ·  58 load
MonTueWedThuFriSatSun
Row 10.0 km 135.2w
Row 10.0 km 137.4w
Row 10.0 km 146.4w
W40 1×  ·  10.0 km  ·  46m  ·  10 load
MonTueWedThuFriSatSun
Row 10.0 km 128.1w
W39 4×  ·  40.0 km  ·  2h 56m  ·  104 load
MonTueWedThuFriSatSun
Row 10.0 km 142.3w
Row 10.0 km 153.1w
Row 10.0 km 162.0w
Row 10.0 km 142.3w
W38 3×  ·  30.0 km  ·  2h 13m  ·  66 load
MonTueWedThuFriSatSun
Row 10.0 km 146.7w
Row 10.0 km 144.8w
Row 10.0 km 151.1w
W37 3×  ·  30.0 km  ·  2h 13m  ·  67 load
MonTueWedThuFriSatSun
Row 10.0 km 141.6w
Row 10.0 km 145.2w
Row 10.0 km 150.8w
W36 3×  ·  23.5 km  ·  1h 43m  ·  39 load
MonTueWedThuFriSatSun
Row 10.0 km 151.0w
Row 6.9 km 162.0w
Row 6.6 km 135.9w