Training
Strava + Apple Health → GPT-4.1 coach. Everything self-hosted.
YTD
| Sessions | Distance | Time | Elevation | Calories |
|---|---|---|---|---|
| 296 | 9855.6 km | 439h 12m | 26925 m | 282011 kcal |
Gear
| Bike | Sessions | km |
|---|---|---|
| HoneyBadger | 36 | 2342.1 km |
| Hoops | 33 | 1294.4 km |
| Holly Grail | 15 | 1195.7 km |
| ErgBike C2 | 25 | 533.7 km |
| TheMule | 2 | 62.7 km |
| Commuter | 1 | 52.0 km |
HR & HRV — last 90 days
Resting heart rate and HRV (SDNN) with daily training load 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 | 6 | 8.1 | -25.9% |
| Distance | 193.9 km | 247.5 km | -21.7% |
| Time | 7h 33m | 10h 54m | -30.7% |
| Elevation | 224 m | 571 m | -60.8% |
| Avg HR | 116 bpm | 116 bpm | -0.8% |
| Avg HRV | 27.9 ms | 38.0 ms | -26.6% |
| Load | 105 | 399.2 | -73.7% |
| Avg Power | 152 W | 158 W | -4.3% |
AI coaching insights
-
**Today's Activity** - Today's 33.3 km ride (5400s, avg HR 108.3 bpm, avg watts 80.1, cadence 67.1, suffer score 22) is lower intensity and volume than your typical ride (avg ~21 km/ride, avg HR 112, suffer score ~159 per ride). - HR, power, cadence, and suffer score all below your usual averages; this was an easy session. - Positive: Good adherence to an easy ride; no concerning metrics. Negative: None, unless you were targeting intensity. **Weekly Load & Trends** - Weekly load is 83, which is slightly higher than your recent average (~76/week), but in line with a gradual build; no major spikes or drops. - You're trending upward, building load moderately. **Recovery Recommendation** - HRV is on the low side (31.5), and resting HR is typical (52), but with a higher weekly load and lower HRV, recommend easy or rest tomorrow for optimal recovery.
-
**Today's Activity** Session was a typical steady-state effort: 2 hours at 171.8W, 117.6 bpm, 71 rpm. All metrics (HR, power, cadence, suffer score 27) were below your recent averages, indicating a moderate session with low strain—good aerobic work, no concerns. **Weekly Load & Trends** Current weekly load (83) is steady, not unusually high or low; 7-day (243) and 28-day (4,281) Suffer Scores show consistent training. No sharp spikes or drops—you're holding a maintenance pattern, not building or tapering. **Recovery Recommendation** HRV (31.5) and resting HR (52) are typical and not suppressed, but the moderate load and today's low strain indicate you're handling volume well. Go easy or consider active recovery tomorrow—no need to push hard.
-
**Today's Activity** - This 15,000m BikeErg (VirtualRide) was well below your typical ride efforts in both volume and intensity. - Average HR (109.9 bpm), power (146.9 W), cadence (65.8), and suffer score (6) were all lower than your 28-day averages (avg HR ~112, suffer score ~153). - Positives: Good aerobic session with no signs of excessive fatigue; no concerns. **Weekly Load & Trends** - Your weekly load (83) is significantly lower than your recent 28-day average (4281/4 ≈ 1070), indicating a substantial drop this week. - You are in a clear recovery phase with no concerning acute spikes. **Recovery Recommendation** - With HRV (37) and resting HR (51) in typical ranges plus low weekly load, you can choose an easy aerobic session or a rest day; avoid a hard effort tomorrow.
-
**Today's Activity** Today's session (Virtual Ride/Erg) was shorter and lighter than their norm, with a suffer score of 11 vs a recent ride average of ~148, lower power (185.9W) and cadence (56.2) than typical real-ride efforts, and avg HR of 120.3 vs recent 112.4. Positive: maintained good aerobic control; Concern: effort was well below recent averages—could indicate intentional recovery or low motivation. **Weekly Load & Trends** Weekly load (83) is typical, with 10 sessions and no signs of big spikes or sudden drops—athlete is maintaining rather than building or recovering. 7-day suffer score (222) is much lower than 28-day (4281), confirming a steady week. **Recovery Recommendation** HRV (37) and resting HR (51) indicate moderate recovery; since load and HR responses are mild, recommend an easy to moderate session tomorrow, not full rest, unless more fatigue is felt.
-
**Today's Activity (Rowing: 10,000m, 42:54, Avg HR: 125, Avg Power: 162.7W, Cadence: 21.7, Suffer Score: 15):** - Effort was steady and submaximal, well below typical bike session intensity; lower HR, power, and suffer score indicate an easy/recovery focus. - HR (125, 77% of weekly avg), low power, and cadence all conservative; suffer score (15) far below ride averages (219+). - Positive: Good aerobic flush and cross-training stimulus; no red flags. **Weekly Load & Trends:** - Weekly load at 83 is slightly below recent averages (down from a 28-day suffer score average of ~153/wk); trending towards maintenance or slight deload. - No concerning spikes or drops; load is consistent and manageable. **Recovery Recommendation:** - With HRV at 37 (on the low end) and resting HR at 51, plus low session intensity, recommend an easy to moderate session tomorrow—avoid maximal efforts to allow full recovery.
Activities this week
W39 6× · 193.9 km · 7h 32m · 105 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
V.Ride
56.4 km
167.5w
|
Row
10.0 km
162.7w
V.Ride
22.3 km
185.9w
V.Ride
15.0 km
146.9w
|
V.Ride
56.9 km
171.8w
|
Ride
33.3 km
80.1w
|
All activities 114 sessions · 1212.5 km · 87h 31m · 4106 load
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
|