Built an AI coach for triathletes that reaches out to you - not the other way around

Todays Update (2026/04/27)

All minor fixes and improvements:

• scheduled jobs and weekly recap messages now read your recent chat + plan adherence before drawing conclusions, so the coach won’t lecture you about a session you legitimately skipped due to injury or moved earlier in the week
• sleep readings now distinguish “time in bed” from “actual asleep” - Apple Watch and Garmin both report the in-bed window by default, which made nights look 1-2h longer than they really were
• Garmin was firing its daily summary ~10x/day every time your step count ticked up, spamming the coach with the same data; we now ingest those silently
• new races panel on the plan page - see all your A/B/C races at a glance, add or edit them right from the UI
• when you add a new race goal, the coach now proactively reaches out to talk through prep (CTL target, weekly template, key sessions)
• plan generation is less conservative now - the coach pushes harder where the data supports it instead of defaulting to safe
• account deletion + cookie banner + updated privacy / terms shipped (GDPR cleanup)
• fixed sign-out not always clearing the session properly

Looking forward to more feedback :slight_smile:

Today’s Update (2026/04/29)

Mostly fine tuning the system right now

Here is whats New:

• ask the coach to “stop pulling WHOOP workouts” or “ignore Garmin body comp” → it’ll flip the data setting and tell you what changed (also on the integrations page)
• Resync button on the Intervals.icu card if you think the plan calendar drifted out of sync
• food_log_get is now available to MCP-tier users (Cronometer / MyFitnessPal queries were previously coach-only)

and some adjustments:

• WHOOP strain is no longer summed across activities ; it’s a 0-21 log score per workout, so “lift 10.7 + golf 7.6 = 18.3 strain” was nonsense. The coach now reports each session separately or pulls the WHOOP day total
• same workout on Garmin + Strava + WHOOP (sometimes with a phantom HR on the WHOOP side) now collapses into one entry instead of three
• Garmin run power: zero samples (downhills, walk breaks) are now included in avg power ; was filtered out, inflating easy runs to 1500W+ and trashing TSS
• running power-based TSS is gated to cycling only ; applying cycling FTP math to Stryd watts was overstating run TSS 3-4x
• threshold parsing validates against physiological ranges, so a profile note like “field test planned for week of Apr 14” doesn’t get parsed as LTHR = 14 (~11,500 TSS for an hour run)
• Terra power data (Polar / Zwift / TrainingPeaks) capped at 2500W → TP has shipped 1574W normalized power for a 16-min run, was polluting CTL
• readiness: sleep score now adds a deviation from neutral (65), capped +10 / -15, instead of pulling everything toward sleep. A neutral or missing sleep no longer taxes a strong HRV/RHR signal
• “steady” readiness threshold dropped from 55 → 50 so a missing-sleep day with otherwise normal HRV/RHR doesn’t auto-route to “easy”
• every cycling session in the plan (indoor or outdoor, easy or hard) now ships workout_blocks so you can always download a .zwo/.erg
• fixed silent logouts after the access token expired

Today’s Update (2026/04/30)

Big push on letting you tell us how training actually felt

What’s new:

  • Add RPE, feel, and notes to any activity from /analytics. tap “+ feel” on a row, pick from 5 buttons (exhausted → great), and add a quick comment. Works even if your watch didn’t capture it.
  • Tell the coach how a session felt in chat (“yesterday’s run was RPE 8, felt good”) and they’ll log it.
  • When you log feel on the dashboard, the coach reads it and reacts — flagging when feel doesn’t match the data, saving complaints to your profile, suggesting plan adjustments if you’re cooked. Stays quiet for routine “good run, RPE 6” entries.
  • RPE, feel, and notes from your intervals.icu history now show up in your activity feed (90 days backfilled).
  • /plan now shows a 28-day adherence summary alongside the 7-day one.
  • Coach can save personal recovery baselines from chat (“I’m a 7h person”, “active recovery works better than full rest”). Consistent 6.5h sleepers no longer accumulate fake sleep debt.

Fixes and adjustments:

  • New users no longer look “fatigued for six weeks” — fitness now ramps up from your first two weeks of training instead of starting at zero.
  • Strength, yoga, and walks no longer inflate your training load from gym days at 140 bpm.
  • Spike detection (training way more than usual) is back to working correctly after a silent regression.
  • Fixed apple health sleep data sometimes not syncing

Hi, I’ve been using it for about a week now and have to say it’s really great! One thing I noticed is that it sometimes doubles up workouts if I ask it to move a workout from one day to another. I have two bikes planned for today not, a 75 minute endurance ride and threshold intervals because I couldn’t do the threshold intervals on Tuesday.

I’m really liking the WhatsApp interface and sometimes find myself just having a random training chat with the AI coach for no reason, maybe I need more friends lol.

2 Likes

Thanks so much for this :folded_hands:
I´ll look into the doubling-up bug - will be fixed today!

And honestly the “random training chat for no reason” thing is the best feedback I could get haha!! that’s exactly what I’m building for. (I do the same)
No notes, keep going lol.

We are live on the5krunner :face_with_peeking_eye:

1 Like

Today’s Update (2026/05/01)

Still mostly fine tuning stuff, while I am in touch with garmin regarding the workout calendar syncing feature.

What’s new:

  • Plan edits show up in chat everytime (the coach sometimes made that silently)
  • Better planning context on what has been discussed in the chat
  • Coach is now instructed to make small plan tweaks proactively without asking for permission
  • When the coach moves a session it now catches accidental duplicates instead of leaving two rows on the same day.
  • /plan shows weekly hours split by swim / bike / run / strength.
  • Interval recaps cleaner: auto-1km warmup/cooldown laps no longer pollute rep detection
  • Smarter retries on WhatsApp send failures

As always, feel free to reach out anytime something comes up :slight_smile:

Today’s Update (2026/05/02)

Big day today, the model upgrade has shipped across the board (just emailed everyone about it). Some of you flagged the coach making up numbers - fixed by switching every AI
path to a smarter, more reliable model. Same coach, sharper reasoning, far fewer hallucinations.

What’s new:

  • Coach now has long-term file memory. Lab results, lactate tests, DEXA scans, blood panels, race reports, training plans from external coaches - drop them in chat and the coach pulls them into context when relevant.
  • Power profile fixes - FTP resolution on the analytics dashboard was off in some edge cases.

Still in touch with Garmin re: workout calendar syncing.

As always, reply or ping me anytime :slight_smile:

Today’s Update (2026/05/03)

Got really good feedback regarding yesterdays model upgrade, super happy about that!!

What’s new today:

  • COROS integration is now live

  • added a “share” page where you can create cool images to share on your socials

  • some oura related HRV/RHR adjustments

  • Sometimes metric/imperial units were off in the generated plan, thats not fixes

As always, reply or ping me if anything comes up :slight_smile:

I’m really enjoying this AI analysis and feedback! I get good explanations of the various numbers that Training Peaks and Garmin and other apps create. It doesn’t mind getting a lot of questions, and going into more detail when asked. It’s also made clear the kind of progress I’ll need to sustain through consistent training to reach my goal for an A race later this year. This is a perfect complement to my IRL coach and I have to say I would never have said that before trying it.

3 Likes

Sharon, this made my day (seriously) - thank you for taking the time to write it out.
The “I would never have said that before trying it” line especially means a lot, since thats exactly the bar Im trying to clear for athletes who already have good coaches.

Rooting for your A race!!!

Today’s Update (2026/05/04)

What’s new today:

As always, reply or ping me if anything comes up :slight_smile:

I signed up today for the 7-day trial of the MCP version. I am still uncertain which version works best for my needs. I don’t need a plan builder, but I am interested in the proactiveness of the next tier.

1 Like

Hey! You can switch between plans anytime during your trial, and downgrade back to MCP before it ends if you just want to test the proactive tier :slightly_smiling_face:

1 Like

Today’s Update (2026/05/06)

What’s new today:

  • coach now uses parsed .fit data for swim stroke rate, SWOLF, cadence, and per-rep analysis on garmin activities.

  • late-night workouts no longer file to the wrong day. a 22:00 PT run was getting bucketed into “tomorrow” UTC across strava, hevy, whoop, and terra-backed providers
    (polar/coros/zwift/etc.). fixed everywhere.

  • “last 7 days” now actually spans 7 days. dashboard summary, run/bike share cards, plan-page weekly volume, and the MCP analytics_summary tool were all silently pulling an extra trailing day.

  • CTL/ATL/TSB now fills sync gaps for intervals.icu users. where intervals didn’t write, strava activity history fills in instead of leaving a hole.

  • readiness score now prefers your direct wearable over relayed intervals.icu values. oura/whoop/garmin/withings outrank intervals for the readiness field specifically.

  • vo2max chart now renders with 2+ data points (was 5+).

1 Like

Today’s Update (2026/05/07)

Started fine-tuning our own AI model today. Targeting ~1 month to get it dialed in, but this should meaningfully improve output quality on the niche stuff we care about: training analysis, day-to-day coaching decisions and plan generation.

Will keep you posted. I think this is going to be a real step change for AI endurance coaching.