Training block review board for your plan versus actual
See every planned session next to what you actually ran, with weekly compliance, ramp rate, and an AI review that drafts next week.
Build me a training block review board: an app where the plan I wrote and the training I actually did sit side by side. The plan lives in a Google Sheet and the actual side comes from Google Health. Nothing runs on a schedule; I open the app and work in it.
Plan side. Let me pick a spreadsheet and tab, and read the plan with Get Values (use Batch Get Values when the app needs several ranges or tabs in one pass). The sheet has one row per planned session with columns for week, date, session type, target distance and target duration, plus a note column the app writes back into. Read the header row and map columns by name rather than hardcoding positions, so my sheet layout can differ.
Actual side. Pull individual workouts with List Data Points on the Google Health exercise data type across the block's date range, taking start time, activity type, duration, distance and heart rate for each session. Important: the exercise data type defaults and caps at a pageSize of 25, unlike the 1440 default on other types, so page through with nextPageToken until the whole range is covered. For weekly volume, use Daily Roll-Up Data Points on distance and on active-zone-minutes rather than summing sessions by hand, and use Get Data Point when a single session needs a full re-read.
The main view is one row per training week across the block. Each week shows planned volume against actual volume in both distance and time, a compliance percentage (sessions completed against sessions planned, and actual volume against target volume), and the ramp rate, meaning how much volume changed against the previous week. Give me a visible trend of volume across the whole block so the shape of the build is obvious at a glance.
Flag the injury-risk weeks. Any week where volume jumped by more than the ramp threshold while resting heart rate was trending up over the same window gets called out, because that combination is the one that precedes injury. Read recovery signals from the Google Health health-metric types daily-resting-heart-rate and daily-heart-rate-variability using Daily Roll-Up Data Points. The threshold is a setting I can adjust, defaulting to ten percent, and it should be presented as a coaching guideline rather than a hard rule. When a week is flagged, show me exactly which two numbers triggered it.
Clicking a week opens a detail view listing every session in that week. Match each planned row to the actual workout on the same date; show planned sessions with no matching workout as missed, and workouts with no matching plan row as unplanned, so nothing gets quietly smoothed over. Every session row shows planned target next to what actually happened.
Each session row gets two actions. First, a note field: what I type saves back into the note column of that session's row in the plan sheet using Update Values, writing the precise cell for that row so nothing else is touched. Second, a button that pulls that workout down as a file using Export Exercise TCX on the session's data point, so I can send it to a coach.
Add a Review this block button that kicks off a background agent. The agent reads the last four weeks of actual sessions with List Data Points on the exercise data type (paging through, given the 25 cap), reads daily-resting-heart-rate and daily-heart-rate-variability trends over the same window with Daily Roll-Up Data Points, and reads the existing plan rows from the sheet. It compares planned against actual, decides whether next week should hold, back off, or progress, and writes next week's adjusted sessions into the plan sheet with Append Values in the same column shape as the existing rows.
The agent's reasoning has to be visible in the app, not buried in the sheet. Show its run status while it works, then display the written rationale alongside the newly appended week so I can read why it chose those sessions and delete the rows if I disagree. Keep a history of past reviews so I can see how its thinking changed across the block.
Rules throughout: never overwrite an existing plan row, only append new ones and only touch the note column on existing rows. If a health data type returns nothing for part of a range, show it as a data gap rather than treating it as zero volume, since a missing sync and a rest week are not the same thing. Handle rate limiting with backoff on both services.
What does this prompt do?
- Puts the training plan you wrote in a Google Sheet side by side with the sessions your watch actually recorded, week by week.
- Shows planned against actual volume for every week, a compliance percentage, and how sharply your training load is ramping.
- Flags any week where volume jumped past your ramp limit while resting heart rate was trending up, the combination that tends to precede injury.
- Lets you leave a note on any session that saves straight back into your plan, pull a session down as a file to send a coach, and hit Review this block to have an AI draft next week's adjusted sessions with its reasoning shown in the app.
What do I need to use this?
- A Google account with your training plan in a Google Sheet, one row per planned session (week, date, session type, target distance, target duration)
- A Google Health account with workouts syncing from a Fitbit, Pixel Watch, or another connected device
- A few weeks of recorded training already in place, so week over week trends and the ramp calculation have something to work with
How can I customize it?
- Change the ramp threshold from the default ten percent, or switch whether ramp is measured on distance or on time
- Set how many weeks the Review this block agent looks back at, and how conservative you want its suggested adjustments to be
- Rename or reorder the columns in your plan sheet, and add your own session types, since the app reads the header row rather than assuming a fixed layout
FAQs
Will this overwrite the training plan I already wrote?
Which watches and apps does the actual side work with?
Why ten percent, and can I change it?
Can I send a single session to my coach?
What happens to weeks where I missed sessions?
Related templates
Stop buying stale lists. Reps run a saved search, work the results like an inbox, and only the accounts they approve ever reach your CRM.
Drag creators through Sourced to Wrapped on a board grouped by campaign, with audience stats on every card and a one-click brief for each creator.
Pick a repricing rule, send an assistant out to check competitor pages, then approve the new prices that clear your margin floor.
See the projected bounce rate for any outbound send before it goes out, and keep the launch button locked until the list is clean enough to be safe.
Pick any date range and see what each device in your home actually cost to run, not just how many kilowatt-hours it used.
Search three months of global coverage on your topic, rank the outlets actually writing about it, and draft a tailored pitch for each one.
Stop guessing whether you actually ran the plan.
Put your written training block and your recorded sessions on one screen, and let an AI review tell you what next week should look like.