Achieve your personal best
Physiology · Statistics · OptimizationAdd five pounds once you clear the bar. Deload every fourth week. Sixteen sets a muscle. Every training app runs on heuristics like these, and none of them survive the person in front of them. So Platebook doesn't use rules — it models the physiology underneath them: stimulus, fatigue, recovery, capacity, fit to the research and then re-fit to you. Population priors on day one; your own posteriors as your data accumulates. Your week is the solution to that model under your constraints. Where the evidence is thin, it says so instead of inventing precision.
iOS · in development
Today, decided for you
The gap
The problem isn't that lifters lack information — it's that nothing on the market turns the physiology into a plan. Balancing a dozen muscles' stimulus, recovery, indirect volume and time cost inside a fixed weekly budget is a constrained optimization problem over a state that changes every session. No consumer app treats it as one.
Written for a hypothetical lifter with your day count and nobody else's schedule, equipment, injury history or recovery. Static from week one, and silent about what to change when your circumstances do.
// fixed · not yours
A language model producing text that reads like a program. There's no physiological model underneath, no accounting of what a set actually costs you, and no guarantee the same inputs produce the same plan twice — or a defensible one once.
// plausible · unverifiable
Excellent at recording what you already decided to do. They'll chart your volume after the fact, but the hard question — what should this week contain — is left entirely to you.
// after the fact
The closest anyone gets, and still a decision tree: progressive overload means "add five pounds once you clear some bar." A fixed set of heuristics can't weigh how hard your last set actually was, what it cost you, or what it gave the four other muscles it loaded.
// heuristics, not models
The engine
Not a rule set and not a chatbot. Platebook runs a strength model, a fatigue model, a stimulus model and a recoverability model that feed each other, over a per-user state estimated from every set you log — and a multi-stage optimizer that turns all of it into one week. The detail below is what the engine actually does; each block ends with what it means for your training.
Your true strength is never observed directly — what you see in a set is capacity minus whatever fatigue you brought to it. Platebook estimates the two separately, running a Kalman filter over a hierarchical state: a shared per-muscle factor plus a near-static per-exercise offset, updated by every set you log and read through the fatigue you were carrying at the time.
Because the state is shared, a hard session of rows sharpens the estimate for pulldowns too. Because it drifts between sessions, a lift you haven't trained in months widens its own error bars instead of pretending the last data point still holds.
In plain terms A bad session and getting weaker look identical in a training log. Platebook can tell them apart — and tracking that gap over time is what lets it see a deload coming before you dig yourself into a hole.
An acute pool saturates within a session and clears fast. A slow damage pool accrues through the session, commits at the end with super-linear compounding — residual fatigue amplifies fresh damage — then decays on a time constant set by that muscle's tissue class.
This isn't a soreness score in a corner of the app. It's the same state that suppresses your strength estimate, gates when a muscle may be trained again, and prices every candidate session the solver considers.
In plain terms Some fatigue is gone by tomorrow; some takes days and stacks up if you keep training through it. Training hard on a muscle that hasn't recovered costs you more than the identical session would have cost you fresh — so the plan doesn't schedule it that way.
Each set earns a growth stimulus that saturates across the working rep range and rises sharply as the set approaches failure, normalized against a reference set. Weekly totals accumulate in those native units. Muscles that aren't the target earn graded credit, scaled by how close that tissue actually works to failure inside the movement.
In plain terms Three sets taken to the edge aren't the same as three comfortable ones, and counting "sets per week" pretends they are. Platebook counts what each set is actually worth — and gives your triceps proper credit for the pressing they already did, instead of a round number somebody guessed at.
Published landmarks give population ranges. Platebook computes a conditional ceiling per muscle: the largest weekly dose whose best possible spacing still clears the recovery gate, given your training days, your intensity, and how much of that muscle's work arrives indirectly from compounds. A boundary of feasibility, never a target.
In plain terms There's a point where extra sets stop buying growth and just cost you recovery. That point isn't the same for you on four days as it is for someone training six — so it gets worked out for your schedule instead of read off a chart.
A target vector is scaled at the sub-muscle level until it meets those ceilings. Muscle rhythms are enumerated against a running spillover ledger, so what compounds already delivered is subtracted before any direct work is assigned. Assembly then enforces a rule most programs violate blind: a downstream muscle may not sit in the recovery shadow of an upstream compound day that recruits it.
The daily solve enumerates feasible integer-RIR paths across a rest grid per movement class and works backward from the terminal set, so sets, reps, RIR and rest come out of one joint decision. Packing places it all under a strict-priority objective in which your session-length window is a tolerance — and inside it, physiological coherence outranks making every day the same length.
In plain terms It doesn't fill slots in a template. It works out what each muscle needs, subtracts what your big lifts already gave it, refuses to schedule anything that's still wrecked from two days ago — including your triceps before a bench day — then decides sets, reps and rest together rather than one at a time.
Heavy triples aren't just local fatigue — there's a central and bracing cost no per-muscle pool captures. Platebook carries a separate systemic pool, so the layout question (which day each heavy lift lands on) is scored on realized systemic load across the whole week.
In plain terms Three heavy days stacked together will bury you even when every individual muscle says it's ready. The plan knows that and spreads them out — because it loses on the objective, not because someone had an opinion.
Candidates compete on lengthened-tension (stretch and range, gated by whether the movement genuinely holds tension at length), loadability resolved against your real equipment — including whether a bodyweight movement can be loaded at all and how finely you can add weight — and practicality carrying a stability tax. Emphasis re-weights the axes; implement preference composes on top as a separate dimension.
In plain terms It picks the movement that grows the target muscle best with the equipment you actually have. Gear you don't own never scores badly — it simply isn't considered, because an exercise you can't do isn't a worse option, it's not an option.
Platebook tests genuine movement identity, so rotation buys new stress patterns rather than the appearance of change — within the week, and slowly across months at rates matched to each lift's class.
In plain terms Swapping a barbell for dumbbells isn't variety, it's the same movement in different clothes. Big lifts hold for months; smaller work refreshes sooner.
Adaptive mode isn't a second algorithm bolted on. There is one generator, and a fresh program is the zero-state case. A deviation changes the state; the same solver re-phases what's ahead from there. Deviate from nothing and it reproduces your cycle exactly — behavior continuous in your data, not a jump between "the plan" and "the improvised plan."
In plain terms Miss a week and it re-plans around what actually happened instead of pretending you didn't. Follow it exactly and nothing moves. Short on time today, it recomposes the session two ways and lets you choose; want a different exercise mid-workout, it ranks the alternatives your gym allows and shows what the swap does to your week before you accept it.
The coach
Most apps bolt a chatbot on the side that can read a summary of your data and talk about it. Platebook does the opposite: the engine does the programming, and the coach is given real access to the app and real sight of the math behind it — so it can explain what the model decided, and change things on your say-so. It's off until you turn it on, and the app is fully functional without it.
The coach can query the engine directly — your program's full analysis, per-muscle stimulus, what's fed by compounds, how the week is laid out, the trade-offs the solver made, your strength estimates, your training history. The stimulus model in particular is deliberately exposed to it: functional form, constants and every computed intermediate, because an explanation grounded in the actual math beats a plausible-sounding one.
In plain terms Ask "why is my chest only twice a week" or "why this exercise and not that one" and you get the real reason the program was built that way — not a generic answer about hypertrophy.
Read and write, across the app: log sets mid-session, swap an exercise for a ranked alternative, add or remove work, restructure a program, build a one-off session, import training you did elsewhere, and edit your own settings — priority muscles, injuries, equipment and training environments, warm-up protocols, units, dashboard, theme.
In plain terms "Swap the leg press for hack squats, my knee's cranky" or "I did this workout at a hotel gym yesterday, log it" — and it does it, rather than telling you which screen to go find.
Write access is only acceptable with an audit trail. Each mutation snapshots what it touched before it writes, so the full change log is inspectable and any edit can be reverted — by you, or by telling the coach to undo it.
In plain terms If it changes something you didn't want, say "undo that." Nothing it does is a one-way door.
No home-grown model, no thin wrapper around a fine-tune. Platebook runs Anthropic's Claude, with the model selectable in Settings, given a purpose-built tool surface and the engine's own state as its context.
In plain terms The reasoning quality is the same as the assistants you already use — except this one can see your training data and the model that built your program.
The coach is a switch in Settings. Off, every AI surface disappears and the engine still builds, adapts and explains your programs — the physiology and the solver are local, and none of the programming depends on the model.
In plain terms Don't want AI anywhere near your training? Leave it off. You lose the conversation, not the program.
What it buys you
Ask why an exercise is in your program and there's a real answer — the target it serves, what it beat, and what constraint put it there. Same inputs, same program, always.
Tell it 60 minutes and it solves for 60 minutes. When your schedule genuinely can't reach a muscle's productive volume, it says so instead of quietly under-dosing you.
Muscle balance isn't a chart you read afterward — it's the objective the plan is built against, and you can reshape it directly and watch the program re-solve.
Not an abstract percentage. Hours until each muscle clears the readiness bar the scheduler itself trains against, per muscle, on its own scale.
Because indirect work is counted, arms and delts get what they actually need on top of what your pressing and pulling already delivered — not a fixed template's guess.
Movements rotate to give joints new stress patterns on a schedule matched to the lift, rather than shuffling your bench every four weeks because a template said to.
Make it yours
The engine has strong views on recovery and stimulus because the evidence does. Everything else — how you log, what you see, what it looks like, what counts as a hard set — is yours to set.
Enter effort as RIR or RPE, whichever you think in. Supersets log two ways: one sheet that swaps from exercise A to B as you save, or a single sheet with both side by side committed together. Unilateral work consolidates or stays split. Rest-timer alerts by sound, haptic, notification, or none.
You set the effort thresholds — the RIR at which a set counts as hard, and how close to failure a rep has to be to count as a hard rep. Those definitions flow through your volume views and the coach's recommendations, so the numbers mean what you think they mean.
Pick a default protocol or write your own in the editor — percentage-based, RM-based, or mixed ramps, with your own set counts and jumps. The plate calculator follows whatever you build, per bar and per gym.
Track at whatever granularity you actually care about, from coarse groups to individual heads, by preset or a custom set you pick muscle by muscle. Flag priority muscles to bias the volume views and the coach toward what you're chasing.
Multiple training environments — home rack, commercial floor, hotel gym — each with its own bars, plates, machines and implements. Programs are built against the one you're actually standing in, and travel doesn't break the plan.
Emphasis, session length and tolerance, variety and rotation pace, implement preference, the RIR band, the set cap per exercise, cycle length, per-class rep ranges, spacing versus clustering — and the default muscle balance the whole plan scales from. Defaults are calibrated; nothing is locked.
Fifteen built-in themes across light and dark, or go into deep customization and set every role yourself — accents, surfaces, borders, text, highlight. Photo backgrounds with blur, dimming, tint and card opacity; glow color, strength and reach. Legibility warnings tell you when a combination has stopped being readable. Save and name your own.
Nine card types — PRs, streaks, recent exercises, single-lift progress, muscle volume, stimulus, recovery, notes, lifetime totals — added, removed and reordered as you like. Units in pounds or kilograms with your own increment. Export your programs, history and settings whenever you want them.
In plain terms The parts where the research has an answer are decided for you. The parts where it's just how you like to train are not.
Screens
Drop iPhone screenshots into assets/ as shot-1.png / shot-2.png /
shot-3.png and swap the three placeholder blocks below for
<img> tags.
The builder · your solved week · the stimulus you're actually buying
Cost
Free. No subscription, no paywalled muscles, no "unlock the good programming" tier. If that ever changes it'll be said plainly and in advance — but nothing here is currently built to charge you.
// $0
Bring your own API key. If you turn the AI on, you connect your own Anthropic account and pay Anthropic directly for what you use — at cost, with no markup, because the money never passes through me.
// billed by Anthropic, to you
Nothing. Not a cut of your API spend, not ad revenue, not your data. This is a side project that exists because I wanted it to exist.
// zero
Why it matters An app that doesn't need to monetize you has no reason to pad your program, manufacture engagement, or hold the useful part behind a tier. The incentive is just to be correct.
Why I built it
I'm a competitive marathon runner turned lifter. For years I tried nearly every lifting app there is, and kept hitting the same wall.
Almost every "auto-coach" out there is algorithmic in the narrow sense — a fixed set of heuristics. Progressive overload means add five pounds once you clear some bar. None of them generate programs the way an experienced coach would.
They don't contextualize how hard your last set actually was. They don't account for the fact that taking every set to failure deposits far more fatigue, and demands longer recovery, than stopping at 2 RIR. They don't credit the secondary and tertiary muscles a movement loads, or the stimulus those muscles are already receiving from it. And none of them give you a tractable way to see and edit how your finite training time gets distributed across your muscles.
What a coach actually does is balance a large set of interacting variables at once: per-muscle fatigue and recovery, volume, exercise rotation, direct and indirect stimulus to supporting muscles, axial and whole-body fatigue — and the way every one of those interacts with volume. That is a multidimensional problem. A set of decision rules cannot represent it, let alone solve it.
The physiology and exercise-science literature answers a great deal of it — just disjointedly, one paper and one variable at a time. So I built the models that put it back together: a system that treats program design as the optimization problem it actually is, spacing your training to protect recovery while extracting the most stimulus the time you have can realistically buy. Rooted in mathematics and statistics rather than a handful of rules, with the numbers supported by the research.
I'm an Associate Professor of Biostatistics and Data Science. Interpreting medical research, analyzing data, and building sophisticated statistical and machine-learning models is my day job. I wanted an app that approached lifting and workout programming as rigorously as the models I develop and use daily to conduct medical research.
Platebook is independent personal work. It was developed on my own time and with my own resources, and is not funded, sponsored, supported, reviewed, or endorsed by my employer or by any academic institution. Nothing here represents the views of my employer, and no institutional affiliation is implied.
Platebook is in active development for iOS. It'll release when it's right.
Coming to iOS