← SkillSafe / Training Desk

Your training log, by the numbers

Paste your log — one session per line: a date, a name, how long, how hard (session RPE 0–10) — or a lift as 5x5 @ 100 kg. Your browser computes what a coach would: session load, weekly load, monotony and strain, the acute:chronic workload ratio, estimated 1RM per lift and plateaus — free, before you sign in. Then a coach reviews the log against those numbers, or designs the next block as sessions the browser prices and checks for spikes.

Each example ships with a saved model run, so you can see a whole review and a whole block — including the projection and the reconciliation — without signing in and without spending a credit.

nothing written yet
nothing pasted yet
Drag a .csv or .txt in, or Everything is read in your browser. Nothing uploads until you run.
Paste a log and a line about yourself to price the run.

What this does, and what it does not

The numbers are each paper's definition, applied as written: session load is minutes × session RPE (Foster 2001); monotony is the mean daily load over the sample standard deviation across the seven days of an ISO week, with rest days counted as zero, and strain is the weekly load × monotony (Foster 1998); the rolling acute:chronic ratio is this week over the mean of this week and the three before it (Hulin 2016, Gabbett 2016), and the EWMA form uses λ = 2/(N+1) with N = 7 and 28 (Williams 2017); CTL, ATL and TSB follow Coggan's Performance Management Chart with 42- and 7-day constants; estimated 1RM is Epley's w(1 + r/30) and Brzycki's w·36/(37 − r). The build compared every figure against an independent Python oracle written from those definitions on 400 random logs — 112,161 figures, none disagreed — and confirmed that five wrong definitions do disagree: the population standard deviation, the uncoupled ratio, λ = 1/N, same-day TSB, and the two 1RM formulas swapped.

The bands are named for their source and are flags to weigh, not forecasts: the acute:chronic ratio's predictive value is contested (Impellizzeri 2020). Every figure the coach then writes is re-read against this engine, and the page shows you where the two disagree. The engine also flags what the ratios cannot see: a log line or note that mentions illness (or chest pain, fainting, palpitations - stop and get care), a week of identical daily loads, where monotony is undefined because it is maximal, more than 30 hours of training in a week, and implausible durations or weights. It does not diagnose anything and it is not a substitute for a coach or a physiotherapist who has seen you move. Derived from the agent skills @onewave-ai/training-log-analyzer and @onewave-ai/workout-program-designer (onewave-ai/claude-skills, MIT); not affiliated with their author.

Nothing to hand? Load the — eight weeks whose last week spikes past 1.5 — or the flat at 107.5 kg since week 3, or the after six weeks off. All three replay a saved run for free.