[Project Share] PlanWatts: I built an AI assistant to build Intervals workouts

Hey Cooper! You saw the modal box before my post here… I hope my previous post clarified things for you
Just in case: TBD just means “To Be Defined” The exact costs and limits will depend on what we see in Phase Zero. Up until now, I haven’t been tracking how much anyone spends, so this phase is strictly to help me understand how much LLM usage each action actually consumes. With that data, I’ll be able to set a sensible free token quota and a solid Supporter package that reliably covers the monthly costs. In any case, my goal is to make sure the final pricing is fair and sustainable for everyone

All right, thanks

Hey Cooper!

v0.12.2 is deploying now with the feature you requested.

You can now set a power range (min–max) on any step — not a ramp, just a flat zone band.
zone-selection-ranges

In the zone picker, click Range, then select your min and max zones. The step exports to Intervals.icu as e.g. 2h40m 65-82%, which renders as the flat band you were looking for.

Let me know how it works for you!

1 Like

For me - perfect :folded_hands:

1 Like


Why do the same unit have different titles? It doesn’t always happen, and I have no idea why!

Thanks for the report! I can see what’s happening here.

The card title shows the planned event name from your Intervals calendar (“Dr. Amen rück”), while the activity detail shows the completed activity name from Strava/Intervals (“Düsseldorf Rennradfahren”). They’re two different fields: one is what you planned, the other is what got recorded.

How do you think it should work? Always show the activity name once it’s completed (replace “Dr. Amen rück” with “Düsseldorf Rennradfahren”)? Or keep the planned name as the main title, and show the activity name as a subtitle? Something else?

Would love to hear what feels right to you!

I would prefer the name from Intervals. That’s also how it appears in the calendar and the small preview from PlanWatts.



Got it, makes total sense! So the calendar card and the detail modal correctly show “Dr. Amen rück” (the Intervals event name), but when you click View Activity, it switches to “Düsseldorf Rennradfahren”.

I’ll fix it so the activity detail page uses the Intervals event name when available, keeping it consistent everywhere.

Quick question: do you have Strava connected to Intervals? “Düsseldorf Rennradfahren” looks like a typical Strava auto-generated name (city + activity type). If not Strava, it probably comes from another integration you have connected in Intervals (Garmin, Wahoo, etc.). Either way, PlanWatts will use the Intervals event name as the main title going forward.

1 Like

It can only be from Garmin then, I don’t use Strava.

1 Like

Fixed on v0.12.3

And following this suggestion

I’m introduced the ability to generate open steps: here is the docs PlanWatts Docs | Open Steps

2 Likes

Hi txuselo
:thinking:Why am I not seeing a TSS value on the side in the weekly view?

have you imported your ATP from intervals?
PlanWatts Docs | ATP-Workout-Filler

or have you applied your PW plan to the calendar?
PlanWatts Docs | 3. Wöchentliche Zielwerte im Kalender

I mean in the calendar view. When I switch to month view, the TSS value is displayed to the left of each week, but when I switch to week view, the value is missing. It has nothing to do with any plans.

Hi Cooper, you’re right! In the weekly view the TSS summary was showing above the week instead of on the left side like in the monthly view. This was a layout issue: I had originally designed the weekly view header for mobile screens and forgot to add the left-column layout for desktop. It’s now fixed and will show the TSS value on the left side of the week in both views. Thanks for reporting it!


I will deploy a patch today with other new minor improvements!

1 Like

v0.13.2 — Choose Your AI Model

March 11, 2026

Supporters can now choose between OpenAI and Claude as their AI coach.

This is the first feature exclusive to the Supporter plan — and it’s a big one. You can switch models per conversation or set a default in Settings. Both providers get the same coaching quality, tools, and training science knowledge.

Pick your model right from the chat header. The current model shows as a chip — click it to switch. Your choice is saved per conversation, so you can try Claude for one chat and OpenAI for another.

Set your default in Settings > Preferences. New conversations will start with your preferred model automatically.

How do I get Supporter? Subscriptions aren’t live yet — I’m still finalizing pricing based on real usage data from the credit tracking phase. Stay tuned!

Smarter coaching handoffs

The AI Coach now recognizes when your question falls outside the current specialist’s area and seamlessly redirects to the right one. For example, if you’re in the middle of planning workouts and ask a general nutrition question, the coach will hand off to the coaching specialist instead of giving a half-baked answer. You can always return to what you were doing with a simple confirmation.

More improvements

  • Live thinking steps — See exactly what the AI is doing while it works: which specialist is active, which tools are running, and how long each step takes. Steps persist above each response so you can review them anytime

  • Activity picker in analysis — The “Analyze Activity” proposal card now includes a picker to change the pre-selected activity before running the analysis

  • Cadence analysis improved — Activity analysis now sees min/max cadence per interval, not just averages, so critiques like “no cadence variation” only appear when it’s actually true

  • Weekly TSS layout fixed — Weekly TSS summary in calendar week view now displays correctly to the left on desktop

v0.13.4 — Activity analysis overhaul

This release fixes several issues with how workout analysis scores are generated, especially for structured workouts with cadence targets.

What changed:

  • Cadence targets now visible to the AI coach — If your workout plan includes cadence targets (e.g., 90rpm, 65rpm low-cadence, 105rpm high-cadence drills), the analysis now evaluates your actual cadence against those targets. Previously, only power targets were considered.
  • Repeat blocks properly analyzed — Workouts with repeat blocks like 3x(8min@90rpm + 2min@65rpm + 2min@105rpm) were previously collapsed into a single averaged step. The AI saw “avg 87rpm for 44min” instead of your actual cadence variations within each block. Now each sub-segment is analyzed individually, so hitting 105rpm and 65rpm targets is properly recognized.
  • More consistent scores across models — We’ve calibrated the scoring to reduce variance between AI providers. If you noticed scores feeling too harsh or too generous depending on the model, this should help.
  • Conversation titles respect your language — Fixed an issue where conversation titles were always generated in Spanish regardless of your language setting.

As always, you can re-analyze any activity by clicking the “Re-analyze” button on the activity detail page to get updated scores with these improvements.

Hi everyone, the calendar is a complete mess this morning. Deleted and moved entries aren’t being recognized, and entire days are listed with the wrong dates. I’ve fixed it manually and after several rounds of analysis, take a look. :man_raising_hand:

Hi Cooper! :waving_hand:

Thank you so much for reporting the calendar issues. I’ve been looking into the server logs to investigate the sync behavior between PlanWatts and Intervals.icu based on your recent sessions, and I can now reconstruct exactly what went wrong. I’d appreciate it if you could confirm this matches your experience!

The Core Issue: Moving Workouts When you asked the coach to move a planned session (like your Sweet Spot workout) to a different day, the coach confirmed the move and claimed it was “synchronized.” However, as you noticed, nothing actually changed on the Intervals side, forcing you to move it manually.

What actually happened: I found a bug in our sync logic. When a new calendar entry is created, it correctly pushes to Intervals.icu. But when you move or update an existing entry, it was only updating our local database without sending the change to Intervals. The “synced” status the coach saw was leftover from the original import, which led the AI to confidently (and incorrectly) assure you it was handled.

The Ripple Effect: Drifting Dates and Days Because that initial move never reached Intervals, our database and your Intervals calendar drifted apart. Every time the coach checked your schedule after that, it was reading stale data. This explains the later issues you experienced:

  • Workouts showing up on dates that didn’t match your actual Intervals calendar.
  • The coach getting confused about the current day of the week (trying to reconcile conflicting information).
  • The frustration of trying to force a sync from Intervals back to PlanWatts and realizing it was only working in one direction.

What I’ve fixed:

  • Calendar moves/updates now sync to Intervals.icu just like new entries do (fixing the core bug).
  • Automatic calendar refresh is actively in the works, so when you open PlanWatts, our data will automatically stay in sync with your Intervals account.

Both changes are pending to deploy into v0.13.10

Does this breakdown align with the sequence of events you experienced? Please let me know if you are still seeing any ghost entries or sync delays after these fixes!

1 Like

PlanWatts updates (v0.13.5 → v0.13.10)

A lot has happened since the last update! Here’s a summary:

  • Strava-only activity analysis (v0.13.10) — The big one. If you use Strava without Intervals.icu, PlanWatts can now analyze your activities with full stream-level depth: interval breakdowns, power/cadence targets comparison, and AI coaching insights. Strava has officially approved PlanWatts, so you can connect your account from Settings → Integrations. When you connect, PlanWatts automatically backfills your last 90 days of activities and calculates NP/TSS/IF from stream data.

  • Internal fitness metrics (v0.13.9) — For Strava-only users, PlanWatts now calculates CTL (fitness), ATL (fatigue), and TSB (form) internally from your activity history, so the coach can give training load advice even without Intervals.icu.

  • Calendar sync fixes (v0.13.10) — Moving workouts in PlanWatts now properly syncs to Intervals.icu (previously only new workouts synced). Also, your calendar
    now refreshes in the background when you open PlanWatts, so you always see the latest state.

  • Coaching improvements (v0.13.7–v0.13.8) — Cadence targets in generated workouts now work correctly. When the coach recommends a Z2 workout and you click “Generate workout”, it actually generates a Z2 workout (not Z3). Bulk modification requests (“add cadence to all workouts”) are now handled gracefully.

Thank you :man_raising_hand:

1 Like