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.

App
Google HealthGoogle SheetsPersonal ProductivityOperationsAI ReportsData Sync
PromptCreate

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?
No. Your existing plan rows are never rewritten. The only thing the app writes into an existing row is the note you type on a session, which goes into the note column for that row. When the review agent proposes next week, it adds new rows at the bottom of the sheet so you can compare them against what was already there and delete them if you disagree.
Which watches and apps does the actual side work with?
Anything that syncs into Google Health, which covers Fitbit devices, Pixel Watch, and third party apps and devices that write into it. If a workout shows up in your Google Health data, it shows up in the board.
Why ten percent, and can I change it?
Ten percent a week is a long standing coaching rule of thumb for how fast to add volume. It is a guideline rather than a law, so it appears in the app as a setting you can raise or lower. The flag only fires when a ramp above your threshold lines up with resting heart rate trending in the wrong direction.
Can I send a single session to my coach?
Yes. Every session row has a button that pulls that workout down as a standard training file, the same format coaching platforms and analysis tools import. Pair it with the note you left on the session and your coach has the context alongside the data.
What happens to weeks where I missed sessions?
Missed sessions stay visible. A planned session with no matching workout is shown as missed and counts against that week's compliance percentage, and a workout with no matching plan row is shown as unplanned, so the gap between intent and reality stays honest instead of being smoothed over.

Related templates

Prospecting desk that builds account lists from the live web

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.

Hyperbrowser
HubSpot
Google Sheets
App
Influencer campaign roster board with AI creator briefs

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.

HypeAuditor
Google Sheets
Notion
App
Morning repricing console for Shopify with margin-safe rules

Pick a repricing rule, send an assistant out to check competitor pages, then approve the new prices that clear your margin floor.

Hyperbrowser
Shopify
Google Sheets
App
Pre-flight bounce check before you launch a cold email sequence

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.

Hunter
Google Sheets
App
Per-device electricity cost explorer for your smart home

Pick any date range and see what each device in your home actually cost to run, not just how many kilowatt-hours it used.

Home Assistant
Google Sheets
App
Build a PR media list from real worldwide news coverage

Search three months of global coverage on your topic, rank the outlets actually writing about it, and draft a tailored pitch for each one.

GDELT
Google Sheets
Gmail
App

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.