Training
Strava + Apple Health → GPT-4.1 coach. Everything self-hosted.
YTD
| Sessions | Distance | Time | Elevation | Calories |
|---|---|---|---|---|
| 367 | 11032.0 km | 485h 04m | 27879 m | 317916 kcal |
Gear
| Bike | Sessions | km |
|---|---|---|
| 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 week | 12-mo avg | vs avg | |
|---|---|---|---|
| Sessions | 8 | 8.7 | -8.0% |
| Distance | 70.7 km | 253.6 km | -72.1% |
| Time | 3h 09m | 11h 06m | -71.6% |
| Elevation | — | 585 m | -100.0% |
| Avg HR | 118 bpm | 115 bpm | +2.2% |
| Avg HRV | — | 37.2 ms | |
| Load | 147 | 385.0 | -61.8% |
| Avg Power | 129 W | 158 W | -18.6% |
AI coaching insights
-
**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.
-
**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.
-
**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.
-
**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.
-
**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
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
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
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
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
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Row
10.0 km
162.0w
|
Row
10.0 km
166.3w
|
W39 1× · 10.0 km · 42m · 15 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Row
10.0 km
162.7w
|
W38 1× · 10.0 km · 43m · 24 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Row
10.0 km
157.9w
|
W37 1× · 10.0 km · 43m · 14 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Row
10.0 km
158.4w
|
W36 2× · 20.0 km · 1h 26m · 33 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Row
10.0 km
162.8w
|
Row
10.0 km
152.1w
|
W35 2× · 20.0 km · 1h 26m · 42 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Row
10.0 km
167.0w
|
Row
10.0 km
151.0w
|
W34 2× · 20.0 km · 1h 25m · 21 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Row
10.0 km
166.5w
|
Row
10.0 km
166.8w
|
W33 1× · 10.0 km · 42m · 10 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Row
10.0 km
166.1w
|
W32 1× · 10.0 km · 42m · 18 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Row
10.0 km
163.3w
|
W31 3× · 30.0 km · 2h 09m · 57 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
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
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Row
10.0 km
168.4w
|
W22 1× · 10.0 km · 42m · 55 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Row
10.0 km
170.4w
|
W21 2× · 20.0 km · 1h 24m · 71 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Row
10.0 km
169.5w
|
Row
10.0 km
168.7w
|
W20 1× · 10.0 km · 41m · 66 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Row
10.0 km
176.0w
|
W19 3× · 41.1 km · 2h 57m · 106 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
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
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Row
10.0 km
159.3w
|
W14 1× · 10.0 km · 41m · 57 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Row
10.0 km
|
W13 1× · 10.0 km · 42m · 37 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Row
10.0 km
170.7w
|
W12 3× · 63.3 km · 4h 36m · 219 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
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
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Row
10.0 km
168.7w
|
Row
21.1 km
143.7w
|
W9 2× · 20.0 km · 1h 26m · 113 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Row
10.0 km
|
Row
10.0 km
|
W8 2× · 20.0 km · 1h 28m · 115 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Row
10.0 km
|
Row
10.0 km
|
W7 2× · 20.0 km · 1h 29m · 67 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Row
10.0 km
|
Row
10.0 km
|
W52 4× · 11.1 km · 46m · 72 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
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
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Row
10.0 km
|
Row
10.0 km
|
Row
10.0 km
|
W50 2× · 20.0 km · 1h 24m · 137 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Row
10.0 km
|
Row
10.0 km
|
W49 2× · 20.0 km · 1h 24m · 146 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Row
10.0 km
|
Row
10.0 km
|
W46 2× · 20.0 km · 1h 24m · 132 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Row
10.0 km
|
Row
10.0 km
|
W45 2× · 20.0 km · 1h 24m · 162 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Row
10.0 km
|
Row
10.0 km
|
W44 2× · 20.0 km · 1h 24m · 147 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Row
10.0 km
|
Row
10.0 km
|
W43 1× · 10.0 km · 42m · 64 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Row
10.0 km
|
W42 2× · 20.0 km · 1h 24m · 132 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Row
10.0 km
|
Row
10.0 km
|
W41 2× · 20.0 km · 1h 23m · 58 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Row
10.0 km
|
Row
10.0 km
|
W40 1× · 10.0 km · 43m · 41 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Row
10.0 km
|
W39 1× · 10.0 km · 43m · 23 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Row
10.0 km
|
W38 2× · 20.0 km · 1h 25m · 54 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Row
10.0 km
|
Row
10.0 km
|
W37 1× · 10.0 km · 41m · 43 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Row
10.0 km
|
W36 3× · 41.1 km · 2h 58m · 93 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Row
10.0 km
|
Row
21.1 km
|
Row
10.0 km
|
W35 3× · 30.0 km · 2h 06m · 129 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Row
10.0 km
|
Row
10.0 km
|
Row
10.0 km
|
W34 2× · 20.0 km · 1h 23m · 63 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Row
10.0 km
|
Row
10.0 km
|
W33 3× · 27.1 km · 1h 54m · 68 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Row
10.0 km
|
Row
10.0 km
|
Row
7.1 km
|
W32 2× · 20.0 km · 1h 29m · 31 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Row
10.0 km
|
Row
10.0 km
|
W31 2× · 23.7 km · 1h 42m · 54 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Row
10.0 km
|
Row
13.7 km
|
W30 4× · 54.9 km · 3h 58m · 115 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
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
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Row
10.0 km
|
Row
13.4 km
|
Row
10.0 km
|
W28 3× · 41.1 km · 2h 58m · 99 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Row
21.1 km
|
Row
10.0 km
|
Row
10.0 km
|
W27 3× · 30.0 km · 2h 07m · 98 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Row
10.0 km
|
Row
10.0 km
|
Row
10.0 km
|
W26 1× · 10.0 km · 44m · 23 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Row
10.0 km
|
W43 2× · 31.1 km · 2h 21m · 90 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Row
21.1 km
128.4w
|
Row
10.0 km
151.8w
|
W42 3× · 30.0 km · 2h 13m · 57 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
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
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
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
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Row
10.0 km
128.1w
|
W39 4× · 40.0 km · 2h 56m · 104 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
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
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
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
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
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
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Row
10.0 km
151.0w
|
Row
6.9 km
162.0w
|
Row
6.6 km
135.9w
|