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 128 sessions · 5840.1 km · 291h 43m · 7771 load
W39 1× · 33.3 km · 1h 30m · 22 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
33.3 km
80.1w
|
W38 2× · 134.5 km · 5h 34m · 160 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
34.3 km
166.8w
|
Ride
100.2 km
122.7w
|
W37 3× · 249.3 km · 10h 58m · 177 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
60.2 km
156.2w
|
Ride
110.4 km
110.9w
|
Ride
78.7 km
116.7w
|
W35 3× · 191.9 km · 7h 14m · 201 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
54.2 km
164.6w
Ride
54.5 km
143.5w
|
Ride
83.2 km
127.8w
|
W34 4× · 196.7 km · 7h 23m · 94 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
38.4 km
173.7w
|
Ride
59.4 km
160.2w
|
Ride
11.9 km
|
Ride
87.0 km
151.5w
|
W33 2× · 191.8 km · 8h 12m · 228 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
34.6 km
205.5w
|
Ride
157.2 km
129.9w
|
W32 3× · 236.0 km · 10h 00m · 188 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
71.1 km
139.4w
|
Ride
113.4 km
132.3w
|
Ride
51.5 km
101.5w
|
W31 4× · 237.2 km · 8h 53m · 137 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
85.4 km
137.9w
|
Ride
32.6 km
146.6w
|
Ride
59.6 km
160.2w
|
Ride
59.6 km
141.5w
|
W30 4× · 245.6 km · 10h 08m · 161 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
102.5 km
160.9w
|
Ride
54.7 km
149.0w
|
Ride
60.7 km
158.4w
|
Ride
27.7 km
106.4w
|
W29 8× · 489.6 km · 19h 53m · 416 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
64.9 km
127.3w
Ride
10.4 km
177.3w
Ride
39.6 km
164.6w
Ride
29.5 km
167.0w
|
Ride
35.8 km
165.6w
|
Ride
95.9 km
151.8w
|
Ride
50.4 km
130.5w
|
Ride
163.1 km
140.7w
|
W28 6× · 298.7 km · 12h 01m · 180 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
60.7 km
147.9w
|
Ride
35.8 km
149.8w
|
Ride
60.7 km
169.4w
|
Ride
57.5 km
182.1w
|
Ride
40.0 km
227.1w
|
Ride
44.0 km
110.6w
|
W26 8× · 435.1 km · 17h 30m · 293 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
54.2 km
201.0w
Ride
54.7 km
168.1w
|
Ride
54.2 km
170.7w
Ride
5.0 km
81.9w
Ride
54.3 km
158.9w
|
Ride
35.8 km
137.7w
|
Ride
94.5 km
156.1w
|
Ride
82.4 km
149.4w
|
W25 6× · 193.6 km · 8h 33m · 79 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
34.3 km
168.5w
|
Ride
0.8 km
80.8w
Ride
25.0 km
80.3w
Ride
35.0 km
126.5w
Ride
36.3 km
217.5w
|
Ride
62.2 km
159.3w
|
W23 2× · 106.0 km · 4h 35m · 239 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
35.8 km
185.3w
|
Ride
70.2 km
128.0w
|
W22 7× · 140.0 km · 6h 47m · 169 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
0.9 km
163.3w
Ride
1.1 km
102.5w
Ride
4.0 km
135.1w
|
Ride
7.4 km
288.4w
Ride
52.0 km
99.0w
Ride
38.8 km
71.6w
|
Ride
35.8 km
172.6w
|
W21 2× · 71.7 km · 3h 07m
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
35.9 km
122.0w
|
Ride
35.8 km
153.4w
|
W20 1× · 35.8 km · 1h 42m
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
35.8 km
155.9w
|
W18 1× · 198.9 km · 8h 02m · 352 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
198.9 km
145.3w
|
W17 1× · 52.7 km · 2h 05m · 61 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
52.7 km
164.8w
|
W16 1× · 161.7 km · 6h 23m · 574 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
161.7 km
178.7w
|
W15 3× · 188.1 km · 7h 39m · 451 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
79.4 km
184.4w
|
Ride
54.2 km
191.8w
Ride
54.5 km
172.4w
|
W14 1× · 35.9 km · 1h 15m · 106 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
35.9 km
213.4w
|
W11 2× · 28.0 km · 40h 00m
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
10.0 km
|
Ride
18.0 km
|
W10 6× · 387.4 km · 15h 32m · 1027 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
58.6 km
Ride
58.4 km
|
Ride
54.2 km
Ride
53.9 km
183.2w
|
Ride
35.9 km
|
Ride
126.4 km
174.4w
|
W9 2× · 125.2 km · 5h 08m · 406 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
56.4 km
|
Ride
68.8 km
|
W8 1× · 52.8 km · 2h 03m · 217 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
52.8 km
|
W7 1× · 19.7 km · 47m · 101 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
19.7 km
|
W3 1× · 52.4 km · 2h 21m · 182 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
52.4 km
|
W49 1× · 35.6 km · 1h 17m · 167 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
35.6 km
|
W46 4× · 130.3 km · 5h 38m · 375 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
3.9 km
Ride
35.5 km
Ride
55.1 km
|
Ride
35.8 km
|
W44 1× · 51.4 km · 2h 34m · 46 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
51.4 km
|
W43 1× · 3.9 km · 9m · 13 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
3.9 km
|
W42 1× · 100.0 km · 4h 33m · 334 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
100.0 km
|
W41 2× · 154.2 km · 6h 57m · 198 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
35.8 km
|
Ride
118.4 km
|
W38 1× · 54.3 km · 2h 22m · 50 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
54.3 km
|
W37 1× · 71.9 km · 3h 59m · 55 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
71.9 km
|
W36 3× · 135.5 km · 9h 20m · 97 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
38.0 km
Ride
26.7 km
|
Ride
70.8 km
|
W35 8× · 20.5 km · 1h 05m · 12 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
4.2 km
Ride
1.0 km
Ride
1.1 km
Ride
4.0 km
|
Ride
4.0 km
Ride
1.2 km
Ride
1.0 km
Ride
4.0 km
|
W34 1× · 1.1 km · 4m
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
1.1 km
|
W33 1× · 11.1 km · 1h 07m · 13 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
11.1 km
|
W32 1× · 33.1 km · 1h 51m · 20 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
33.1 km
|
W31 1× · 44.0 km · 3h 52m · 37 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
44.0 km
|
W30 3× · 15.0 km · 40m · 5 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
3.3 km
Ride
6.3 km
|
Ride
5.4 km
|
W29 1× · 45.2 km · 2h 53m · 29 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
45.2 km
|
W28 2× · 2.2 km · 9m
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
1.0 km
Ride
1.2 km
|
W27 5× · 81.1 km · 4h 01m · 70 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
22.8 km
Ride
1.1 km
Ride
1.0 km
Ride
4.1 km
|
Ride
52.1 km
|
W37 2× · 48.6 km · 2h 54m · 24 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
36.4 km
Ride
12.2 km
58.8w
|
W36 2× · 11.5 km · 39m · 5 load
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
|
Ride
5.7 km
105.7w
Ride
5.8 km
74.4w
|