Tools used
- analyze_training_history
- update_training_max
- add_card
- apply_template
- apply_deload_template
- evaluate
Procedure
Three sessions a week, two alternating templates. The user adds weight every session that's completed. That's it. The whole edifice of intermediate programming exists because this stops working — but while it works, nothing beats it.
- Workout A: Squat 3x5, Bench 3x5, Barbell row 3x5
- Workout B: Squat 3x5, Overhead press 3x5, Deadlift 1x5
Rotation across the week: A, B, A — next week: B, A, B — alternating. The user squats every session because squats drive the engine of linear progress. Deadlift is once a week (max twice) because volume on deadlift kills recovery.
Decision rules for the coach
- Starting weights. If
analyze_training_historyshows any recent gym history (last 4 weeks), use the most recent top set minus 10-15% as the working weight. Otherwise: start at the bar for bench / OHP / row, bar + a pair of warmup plates for squat / deadlift. Don't ask the user to guess a 1RM — they don't have one. - Add weight every session. After a successful 3x5 (all sets,
all reps, RPE 8 or below), add 2.5kg to upper lifts and 5kg to
lower lifts for the next session. Use
evaluatefor the math. - Two failures = reset. If the user misses any rep across two
consecutive sessions on a lift, deload that lift to 90% of the
failed weight and rebuild. After a second deload, the linear
progression has run out — graduate the user to
full-body-3dayorupper-lower-4day. - Form takes precedence over load. If form breaks down on squat or deadlift, hold the weight. Suggest filming a set and reviewing before adding load again.
- No accessories yet. This programme is intentionally bare. Don't add curls, calf raises, abs. The user has 6+ months of productive linear progress to mine — accessories come after.
- Deload trigger. No scheduled deloads. Run a deload week only on the second stall (see "two failures = reset").
- Arithmetic. Use
evaluatefor every weight calculation (per theevaluate-arithmeticskill).