π Plan is a contract
Goals with baselines and a test session, nutrition targets, phases (accumulation β taper β test), strength and cardio sessions () everything a coach decides, in one reviewable artifact.π Results travel back
The plan section stays immutable; the app appends an append-onlylog. Hand the same file back to the coach for review
and the next block. No accounts, no platform lock-in.π€ Bring your own coach
Paste the canonical prompt into Claude, ChatGPT or hand it to your trainer: the output is a valid block file. Validate it here, load it, train.The lifecycle
coach (AI/human) ββplanβββΆ block.gymsync.json ββloadβββΆ app (train, log appends)
β² β
βββββββββββββββββββ review / next block ββββββββββββββββββ
Sixty-second tour
{
"gymsyncBlock": 2,
"meta": { "id": "block-1", "label": "Block 1", "start": "2026-08-03",
"weeks": 6, "units": "kg" },
"goals": [ { "id": "bench-100", "kind": "lift1RM", "exerciseId": "bench-press",
"target": { "kg": 100, "reps": 1 }, "testSessionId": "W6D1" } ],
"nutrition": { "kcal": 2500, "proteinG": 180, "trainingDayCarbsDelta": 40 },
"exercises": [ { "id": "bench-press", "name": "Bench Press",
"muscles": ["chest", "triceps"] } ],
"sessions": [ { "id": "W1D1", "week": 1, "type": "strength",
"work": [ { "exerciseId": "bench-press", "sets": 4, "reps": "5",
"load": { "kg": 80 }, "main": true } ] },
{ "id": "W1R1", "week": 1, "type": "run",
"cardio": { "kind": "zone2", "durationMin": 35, "hr": [127, 145] } } ],
"log": { "sessions": [], "measurements": [] }
}
Read the spec Schema & examples
Why not just a workout tracker?
Trackers log what you did. Adaptive apps decide for you and keep the plan hidden inside. This format makes the plan itself a first-class, portable document () so any coach (or any AI) can write it, any app can execute it, and the comparison of planned vs performed is always possible.