A coaching engine,
not a calendar.
Most programs schedule exercises. The Built By Ben system schedules adaptations — then derives the exact session from who you are and how recovered you are today. Deterministic, auditable, and personalized without ever guessing. Heavy is earned, never random.
It starts with a problem worth solving
Every number the engine produces traces back to these first principles. Read this before anything mechanical.
The problem
“Most people in the gym are not building muscle. They are moving weight.”
Real effort, visible work, the numbers going up — and zero physique change. That failure pattern is what the methodology exists to break. The fix isn't a harder program; it's a truer one. Intelligent execution creates superior hypertrophy— two lifters can move the same load for the same reps and walk away with completely different adaptations. The difference isn't luck or genetics. It's execution.
The fixed order
The goal hierarchy never moves
Every decision the engine makes is subordinate to this order. Strength is chased only because it unlocks future muscle — and nothing is chased past the line that risks injury.
- 1Prevent injury
Goal #1, non-negotiable. Every rep-scheme ceiling is this rule made concrete.
- 2Build muscle
The primary objective. Tension delivered to the target, set after set.
- 3Increase strength
Not the goal — the lever. More strength unlocks more future tension.
- 4Validate via testing
Heavy is a benchmark, not a habit. Tests confirm progress; they don't drive it.
The engineering layer
Seven load-bearing principles
Remove any one and the system stops being deterministic. Together they turn a coach's judgment into a state machine — the same logic, every client, every session.
Every choice — split, volume, exercise, variant — is a direct consequence of an input. Same profile + same readiness → same session, for any coach.
Eliminate what isn't possible first, then choose the best of what remains. Age, recovery, injury are gates, not preferences.
The 8-slot day shape is defined before any volume, intensity, or exercise. The skeleton comes first; the work fills it.
Volume isn't sets and reps — it's a scaling factor on a baseline. Final workout = baseline × volume %.
Two clients with identical volume can execute completely differently — concentrated, balanced, or distributed across the rep range.
Variants refresh the stimulus on a 4-week cycle while the session shape stays constant. Locked slots keep the named rules intact.
The session schedules a physiological outcome; the exercise is the instrument that produces it. Readiness modulates execution within the day's adaptation.
The reframe
“Most programs schedule exercises. The Built By Ben system schedules adaptations.”
Stores a plan and plays it back. The same printout regardless of who you are or how recovered you are today.
Maintains a model of the athlete and derives the session from it. The adaptation is the target; the exercise is merely the tool that produces it.
How a single session gets assembled
From a ~22-field intake to a per-set session card — twelve stages, each producing something concrete. Below, the same sample client runs through the live engine, so the numbers are real.
stage number = methodology · “runs Nth” chip = actual execution order
Intake
Tell us who the client is.
~22-field client profile, validated end-to-end.
Read the client
Figure out where they are physically + where they're heading.
Body comp, energy, volume scalar, where they are in the phase cycle.
Match the goal × experience to the right rep scheme.
Pick the training split — honor the client's preference if it fits the frequency.
Set the week
What training shape fits today.
Pick today's focus from 19 internal IDs × 4 variant rotations = 76 structures.
Per-muscle monthly volume target driven by AdjVol + frequency.
How many slots actually fire today — clamp(4, 8).
Pick the work
Which exercises actually fire today, and what comes next.
Cluster lookup → equipment + admin exclusion filter (D62) → variant filter → ordinal pick → coach override.
Rotate the focus across sessions; the variant advances A → B → C → D each cycle.
Build the session
Sets, reps, loads — what the client actually sees.
Allocate working sets per slot via D13 / D17 / D22 rules.
Accumulate effective sets per muscle; advance the phase when ready.
Final session card — set-by-set table, totals, per-muscle accumulator.
Stage 11 (Memory) feeds Phase 2 on the next session. Phase advances automatically when every muscle hits its weekly minimum — Base → Build → Peak → Deload.
The 21-field client profile
One real intake — the canonical sample client from lib/engine/fixtures/sample-client.ts. Every downstream stage reads from this shape; the schema doubles as the contract for the subscriber-facing intake form.
- name
- Sample Client
- age
- 32
- sex
- Male
- height
- 5′ 10″
- weight
- 185 lb
- body fat
- 18%
- experience
- Intermediate
- current freq
- 3/wk
- goal freq
- 4/wk
- goal
- Build Muscle
- split
- Push/Pull/Legs
- weak 1
- Back
- weak 2
- Quads
- strong
- Chest
- activity
- Moderate
- nutrition phase
- Maintenance
- legEmphasis
- Both
- mode
- FallWhereTheyFall
- static days
- —
- squat
- —
- bench
- —
- deadlift
- —
- biceps_double_iso
- false
What Ben knows about this client
The engine doesn't try to model coaching judgment. It accepts structured constraints from Ben + the client and applies them at Stage 7 Step 0c.
Equipment availability
Tier preset (bodyweight_only / home_gym / apartment_gym / commercial_gym) + per-implement overrides + quantitative caps (max DB lbs, max plate inventory).
Admin exclusions
Per-client list of exercise IDs to drop from the candidate pool. Set by Ben on the onboarding Zoom (injuries, preferences, equipment edge cases collapsed into structured decisions).
Free-text intake notes
Client's own words. Collapses into Domain 2 via Ben's judgment — Ben IS the rules engine for coaching nuance. The engine never parses free text.
Engine output for the same client
All values below are computed live by runPipeline() against the sample client. Refresh and the page re-runs the full 12-stage pipeline — no fixtures, no drift.
Then it adapts — to you, today
A fixed plan is only half the system. The other half reads how recovered you are, speaks in your real weights, and earns every heavy day. This is what's new since this page was last written.
Enhancement 01 · live
Readiness — heavy is earned, not scheduled
Before a session, the client answers seven typed questions. The engine reads them as a recovery state and flexes today's session to protect the athlete — it can only ever make a day easier or equal, never a surprise harder.
The reading is the worst signal, never the average. Eight hours of sleep and a flaring elbow isn't “average-ready” — it's joint-limited. The engine prescribes to the limit, not the mean. Averaging would hide the one thing that actually governs the session.
The macro session, byte-for-byte. The only path to a heavier-than-planned day — a readiness-gated test — also lives here.
Step one rung down the adaptation spectrum — Strength (5×5) becomes Strength-Hypertrophy (4×8). Same muscle, the near-maximal top set removed. No max.
2–3 × 12–20, machine / light-DB bias, joint-friendly. Active rest that keeps the movement quality — and the macro phase clock does not advance.
Most inputs bias the day. A joint flag gates it: a sore knee removes the barbell squat and substitutes a joint-friendlier movement. A sore shoulder pulls the barbell bench. Injury prevention — goal #1 — expressed as a stop signal, not a dial.
Readiness can only ever protect. A downgrade is machine-checked to be ≤ the planned session across working sets, effective volume, the heavy top set, and load — on every split. A surprise harder day is impossible by construction.
Enhancement 02 · live
Real pounds — the engine speaks in your weights
The methodology prescribes only relative load. A separate layer turns that into the actual number on the bar — learned from your logs, pushed only when you earn it.
- 1Your logged e1RM
The durable signal — an estimated 1-rep-max from your own recent sets (Epley: weight × (1 + reps/30)). It drifts up automatically as you log heavier.
- 2Your stated 1RM
A cold-start seed for the Big-3 from intake, used until a real set is logged.
- 3A bodyweight estimate
For a lift you've never logged — a sane first guess, scaled to your bodyweight. The moment you log a real set, it's never consulted again.
Finish the reps with reserve(RPE ≤ 8)? The load steps up next time — a barbell to the next plate, a machine up a stack rung. Grind it out, or fall short, and it holds. It only ever adds — never a weight you didn't earn.
The lightest a barbell set can ever be is the empty bar — 45 lb, a physical constant. The bar is the bar whether you bench 135 or 315.
Enhancement 03 · live
The feel set is the bar
The opening set of a compound isn't a different exercise — it's the lift itself, run light, to wake up the target muscle before any real weight moves. Keyed to each new movement pattern, not each muscle.
- 45 × 20feel set — empty bar, slow, squeeze
- 95 × 12warm-up 1
- 165 × 8warm-up 2
- 225 × 4warm-up 3
- 245 → 275working sets
A warm-up grooves the movement and primes the joints on the way to working weight. A feel setwakes the target muscle — 20+ controlled reps, a 1–2 second peak squeeze every rep, full attention on the contraction. On a barbell they share the same weight; they don't share the same job.
A bench earns a feel set. A barbell row — a different motion — earns its own, even when your back is already warm from pulldowns. The squeeze you connect to is specific to the movement, not the muscle.
Intelligence behind every exercise
Why this lift, in this slot, at this intensity — the rotation, the ranks, the named rules, and the spectrum the whole year arcs across.
Rotation without drift
Variety isn't randomness — they aren't the same thing
Every focus ships as four variants. Across a 4-week cycle the session shape, volume, and structure stay identical — only the exercise inside each slot rotates. Same slot, same muscle, same rank, different stimulus. Fully auditable; never random.
Every lift has a rank
Five tiers, one stimulus weight each
A heavy compound stresses the muscle more per set than an isolation. One set of Bench counts as 2.0 toward weekly volume; a cable fly counts as 0.75.
The named rules
Gym-floor wisdom, encoded as locked slots
Certain positions carry a rule that never rotates — the staples that drive long-term progression, protected across all four variants.
- Bench opens Push — The headline lift, slot 1, locked — every Push day, every variant.
- Lateral raise every Push — Side delts only grow from direct work. Four sets, always on.
- Chest fly is mandatory — Every chest day needs one movement that's purely about feeling the chest contract.
- Lat opens Pull — You don't load a back you haven't activated. Pull never opens with a barbell.
- Arms always last — Vanity work at the end — curl first and you steal stimulus from the compounds.
- No squat + deadlift same day — The two most fatigue-expensive lifts share one weekly budget. Never stacked.
Intensity, organized
Five adaptations on one spectrum — and a yearly arc across it
The macro plan schedules outcomes, not lifts. Clients live mostly in the middle — Strength-Hypertrophy and Hypertrophy — and the phase arc shifts the emphasis over weeks. Readiness then steps a given day down this same spectrum to protect.
Only the Big-3 — Bench, Squat, and the deadlift — phase-progress in load and rep scheme. Everything else stays grooved. You go heavy where heavy matters; the phase advances when every muscle has hit its volume budget, not when a calendar says so.
Five engines, one closed loop
What's shipping today, how you know you can trust it, and the five-engine adaptive loop it now runs end-to-end.
The system
Five engines. One closed loop.
The full vision is a closed adaptive loop: a prime mover that generates training stress, and a response system that reads it and bends the next prescription to it. All five engines are now built and wired live end-to-end — Training emits the stress scores + completion data, and Recovery, Nutrition, Adaptation, and Behavioral consume them on every completed session.
Generates the physiological stress everything else responds to — and reads recovery back into the next block.
Tracks restoration across five dimensions + accumulated fatigue.
Allocates substrate to the measured training demand (carbs track completion).
Projects your trajectory + overtraining risk forward.
Gates every prescription against what you can actually sustain.
Why you can trust it
Deterministic, not a black box
Personalization without randomness. Every input is typed and logged — sleep is a dropdown, a joint flag is a checkbox — and every engine is a pure function. Replay the same state and you get the byte-identical session.
That's the difference from “lift by feel.” One is vibes; this is a state machine with a new input. Heavy is earned, not felt.
What's ahead
Built. Now calibrated — and surfaced.
The engines run; the loop closes. Two things finish the system: Ben's calibrationof every engine's v1 constants (they ship flagged provisional, so a re-tune is safe), and surfacing the computed state — the recovery, macro, and adaptation reads — into the coach + client views.
“We don't program lifts we don't run. If Ben wouldn't do it on his next push day, we don't ask you to either.”
This is real — and tested
A property-based eval suite fuzzes the full input space · every companion state is computed + persisted on real completions · the loop runs end-to-end on real client data
See it run — against 30 real client profiles, or your own.
The Profile Library renders each profile's full 28-day month. Open any day for the rendered session. The Input Explorer lets you turn every dial and watch the engine respond.