LiftingLabs

Methodology

Every number the engine outputs is traceable to a published rule. This page is the rule set — the frameworks we build on, and the design principles that shape how they’re combined.

Design principles

Training math is deterministic

Every load, percentage, set count, and TM update is computed by a pure function in our engine — these numbers are deterministic and auditable. LiftingLabs uses LLMs only for narrow, structured tasks (mapping your Hevy exercise names to our dictionary; parsing a pasted program text into our Template schema) — never to invent or modify your numbers. If we ever can't trace a number back to a published rule, that's a bug, not a feature.

Autoregulation over rigid percentages

A pre-printed program assumes you feel the same every day. You don't. The engine treats your first working set as a calibration set: it back-solves a "day-of" e1RM from your reported RPE, then re-prescribes the rest of the session against that — capturing sleep, stress, food, and stress-of-life that a static percentage can't.

Volume landmarks, not arbitrary targets

Per-muscle weekly hard sets are tracked against your MEV / MAV / MRV bands, seeded from RP's published ranges and personalized over time based on your performance, soreness, and RPE drift. The engine generates accessory volume to land you in the productive zone — neither under-stimulating (below MEV) nor digging holes (above MRV).

Deload because you need to, not because the calendar says so

Deload weeks are recommended when fatigue signals fire — performance regression on a main lift, RPE creep over 3 consecutive sessions, ≥2 muscles breaching MRV, low readiness for 5+ days, or 7+ weeks without one. You see why; you decide whether to accept.

Concurrent strength + hypertrophy ("powerbuilding")

A goal vector (powerlifting ↔ bodybuilding) weights both your intensity distribution and accessory volume. A per-muscle fatigue ledger debits next-day accessory volume after heavy main-lift days at RPE 9+, so you can honestly train both your total and your physique in the same block without over-spending either.

Frameworks we build on

5/3/1 — Jim Wendler

What we use it for: Training Max convention (TM = ~90% of 1RM), 4-week microcycles, periodized progression on the main lifts.

Where in the engine: The 531-bbb template + the TM convention used across every program in the engine.

Reference: Wendler, J. (2009). 5/3/1: The Simplest and Most Effective Training System for Raw Strength. Jim Wendler LLC. · link

Reactive Training Systems (RTS) — Mike Tuchscherer

What we use it for: RPE/RIR autoregulation. The RPE-to-%1RM table that the engine uses to derive day-of e1RM and re-prescribe back-offs.

Where in the engine: engine/src/rpe-table.ts (the Tuchscherer chart) + autoregulate.ts (overshoot/undershoot rules).

Reference: Tuchscherer, M. (2009). The Reactive Training Manual: Developing Your Own Custom Training Program for Powerlifting. Reactive Training Systems. · link

Renaissance Periodization (RP) — Dr. Mike Israetel et al.

What we use it for: Volume landmarks: MEV (Minimum Effective Volume), MAV (Maximum Adaptive Volume), MRV (Maximum Recoverable Volume) per muscle group.

Where in the engine: engine/src/volume.ts — DEFAULT_INTERMEDIATE_LANDMARKS seed values for the 13 tracked muscle groups.

Reference: Israetel, M., Hoffmann, J., Smith, C., & Feather, J. (2017–2024). Scientific Principles of Hypertrophy Training & Scientific Principles of Strength Training. Renaissance Periodization. · link

Prilepin's Chart — A. S. Prilepin

What we use it for: Empirical reps-at-intensity ranges for strength training (Soviet weightlifting origin). Used as a sanity rail for main-lift sessions.

Where in the engine: engine/src/prilepin.ts — the chart + validateMainLiftSession().

Reference: Prilepin, A. S. (1974). Training of young weightlifters. Original Russian; widely cited in modern programming literature. · link

Stronger By Science (SBS) — Greg Nuckols et al.

What we use it for: Meta-analytic synthesis of training research — informs our volume/intensity priors and the calibration of the e1RM blend.

Where in the engine: engine/src/estimators.ts (the 0.7 RPE-adjusted / 0.3 rep-only blend), volume.ts landmark personalization rules.

Reference: Nuckols, G. et al. Stronger By Science: monthly research reviews + the MASS (Monthly Applications in Strength Sport) publication. · link

Epley & Brzycki — 1RM estimators

What we use it for: Closed-form 1RM estimation from sub-maximal sets when RPE is absent.

Where in the engine: engine/src/estimators.ts — epley(), brzycki(), and the blended rep-only estimator.

Reference: Epley, B. (1985). Boyd Epley Workout. Body Enterprises. · Brzycki, M. (1993). Strength testing: Predicting a one-rep max from reps-to-fatigue. JOPERD 64(1): 88-90.

What this is not

Methodology · LiftingLabs