Intermediate phase, in full

Daily jumps stop working, so progress moves to a weekly clock: one real test attempt a week per lift, with lighter days around it for volume and technique.

New to intermediate programming? Read the weekly structure and the rep-scheme table below — that is the whole phase. Where this fits in the whole arc

Already intermediate, looking for the numbers? Jump straight to the Build/Groove/Test percentages and the worked example. Build and Groove Day numbers

Three named days a week

DayEffort
Buildthe week's real stimulus
Groovelighter, technique only
Testthe one day a lift’s number moves

Only Test Day moves a lift's official number. Build Day is real, moderate-heavy work — the week's actual training stimulus. Groove Day is deliberately lighter: technique upkeep, no attempts at a personal best. Squat trains all three days every week. Deadlift, kept to its lower weekly frequency the whole program through, tests once a week and uses Romanian deadlift — loaded by feel, not tracked as a percentage — on Build and Groove days instead (4 × 8 on Build, 3 × 8 on Groove). Every working set generated for any of these three days still gets the same warm-up ramp any other session does — see how the ramp is built if that machinery is new to you.

Bench press and overhead press take turns holding the Test Day slot, one week each. The press not being tested that week still trains — but only at Groove Day's numbers, on both Build and Groove days, so it keeps its frequency without taking the fuller Build Day stimulus on a week it isn't the one being tested. The swap itself happens at one exact moment: the instant a completed Test Day session rolls the week back to Build, whichever press just held the slot hands it to the other one for the week that's starting — there's no separate weekly-rotation clock running alongside the day pointer, it's the same state flipping at the same time.

That day pointer — Build → Groove → Test → Build — only ever moves when you actually complete a session, win or lose. It has no idea what day of the week it really is: train twice in five days and the cycle simply runs faster; leave nine days between sessions and it waits exactly where you left it. A program “week” here means three completed sessions, not seven calendar days — see the common mistakes page's own note on training inconsistently for what this design does and doesn't protect you from.

Romanian deadlift here is a real, prescribed example of the phase's own structure opening up room for by-feel work, not a lifter bolting something extra onto the program — see accessory work for how that compares to what a novice should or shouldn't add on their own.

A weekly test, rather than novice's daily one, isn't an arbitrary slowdown — see stress, recovery, and adaptation for the real theory behind why a lift that's stopped adapting to a daily jump still adapts to a weekly one.

Build and Groove Day numbers

Every percentage below is against the lift's own current confirmed weight — the number you last actually hit on a Test Day. Sets taper down as the rep target gets lower, and the effort itself is held roughly constant across states rather than the percentage: Build Day sits around 3 reps in reserve, Groove Day around 5.

Squat, bench press, overhead press — Build Day (~3 reps in reserve).
Rep-scheme stateRepsSets% of current weight
5RM5590%
3RM3590%
doubles2592%
singles1492%
Squat, bench press, overhead press — Groove Day (~5 reps in reserve, technique only).
Rep-scheme stateRepsSets% of current weight
5RM5385%
3RM3385%
doubles3385%
singles3380%

Test Day itself is one top set at whatever the current rep-scheme state calls for — a single set of 5, 3, a double, or a single, at a real attempt, not a percentage: the current confirmed weight plus that lift's weekly increment.

Worked example: squat testing at 300 lb, still in the 5RM state — round numbers, picked to make the arithmetic legible, not a real lifter's data.
DaySets × reps% of current weightLoad this week
Build5 × 590%270 lb
Groove3 × 585%255 lb
Test1 × 5300 + 5 lb increment305 lb

Pass that 305 lb Test attempt and it becomes next week's confirmed weight — Build and Groove's own numbers move with it, since they're both percentages of whatever that confirmed weight currently is, not a fixed figure. See what these particular percentages are and aren't verified against below.

When a Test attempt fails

A single missed Test Day doesn't change anything by itself — the same weight and rep target come back next week. 3 failed Test Day attempts in a row on the same lift move its rep target down one step, cycling through 5RM → 3RM → doubles → singles → back to 5RM — rather than repeating the same stimulus indefinitely against a weight that has stopped moving. A lift that has never been tested in this phase before — freshly graduated from novice, or a lift the app has simply never seen a rep-scheme state for — defaults to the start of that same cycle, 5RM.

The weight itself never drops when the rep scheme cycles — only the rep target does. That's a deliberate difference from novice's own stall-and-reset rule, which cuts the working weight to 90% of what just failed. Here, the same confirmed weight simply gets re-attempted at a lower rep count the following week — the fail counter itself clears back to zero the moment the scheme cycles, the same as it does on an outright pass, so three fresh fails are always what it takes to cycle again from wherever the scheme currently sits. The same discipline that page describes for a novice reset applies here too: a cycled rep target is the mechanism doing its job, not a step back to argue with.

Following the same example squat (confirmed weight 300 lb) through three straight missed Test attempts.
WeekRep-scheme stateTest Day attemptResult
15RM305 lb for 5 repsMissed — 1st consecutive fail
25RM305 lb for 5 repsMissed — 2nd consecutive fail
35RM305 lb for 5 repsMissed — 3rd fail, cycles to 3RM
43RM305 lb for 3 repsConfirmed weight is still 300 lb — only the rep target moved
LiftWeight added on a passed Test
Squat+5 lb (2.5 kg)
Bench press / overhead press+2.5 lb (1.25 kg) (on-week press only)
Deadlift+5 lb (2.5 kg)

Getting here, and moving on

Moving from novice is always your own call — see the novice phase page for the signal the app surfaces there. Intermediate has no equivalent signal at all: novice's own graduation flag reads a reset count that this phase doesn't produce — nothing here resets a lift's weight, so there's no reset count left to watch once you've moved past it. Deciding to move on to advanced is entirely a training-feel call, informed by what you can already see on this page: a lift that keeps cycling through the whole 5RM → 3RM → doubles → singles ladder without the confirmed weight itself ever climbing is a real, visible sign this phase has stopped producing progress on that lift, even though nothing in the app will flag it for you the way novice's reset counter does.

Like novice to intermediate, moving into advanced is a deliberate choice, not automatic — and there's no path back to the phase you came from on that same enrollment once you move forward. See the advanced phase page for what changes, including a direct-entry path for an experienced lifter who doesn't need to pass through this phase at all.

What this phase’s numbers are, and aren’t, checked against

The Build and Groove Day percentages above don't carry the same evidence the advanced phase's Heavy/Medium/Light table does. Advanced's percentages and reps-in-reserve targets are two views of the exact same Epley-based math this app's RPE/RIR calculator uses, independently checkable against each other. Intermediate's numbers were never built that way — they're a single research pass's reasoned derivation from standard rep-max and reps-in-reserve relationships, done once, under an exhausted search budget, and never since replaced with a freshly cross-verified figure or a named published source. They're not arbitrary — the derivation itself holds up (set count only ever tapers as the rep target drops, and Groove Day is never more intense than Build Day for the same state, both checked directly in this program's own code) — but they're a reasoned estimate, not a citation, and this page says so plainly rather than presenting them as more settled than they are.

The phase also has no deload week of any kind, unlike advanced's own block structure — every week runs Build, then Groove, then Test, indefinitely, with the rep-scheme cycle above as the only built-in response to a real stall. See the advanced phase's block structure for what a scheduled deload week actually looks like once you're there.