Athletic Tracker runs three gated cron tasks. Weekly sync pulls workouts from Hevy and appends them to an Excel log. The mid-block task rewrites next-week routines (applying % progression and auto-regulation bumps), then layers a constrained LLM judgment on top: a cloud Claude agent receives an observations brief and must return typed, schema-validated JSON overrides; it can react to injury or fatigue signals but cannot touch the program outside that surface. Two safety properties define the design: a shadow mode that emits proposals to files for the first two blocks before ever writing to the API (autonomy is earned, not assumed), and collision detection that diffs every planned write against the last committed snapshot and aborts on unexpected changes: no blind overwrite.
Athletic Tracker: Autonomous Strength Program Manager
3 gated cron tasks
2 safety properties
2 shadow-mode blocks first
01What it is
An autonomous, Claude Code-operated manager for a multi-year strength program, bridging an Excel prescription engine and the Hevy training app with a constrained LLM-override layer, shadow mode, and idempotent collision detection.
02Engineering
03 Architecture
Gated cron tasks
Weekly syncMid-block task
Sync and rewrite
Hevy APIExcel log% progressionauto-regulation bumps
Constrained LLM judgment
cloud Claude agentobservations briefschema-validated JSON overrides
Safety gates
shadow modecollision detectionlast committed snapshot
04 Highlights
- Three gated cron tasks: weekly Hevy sync into an Excel log, plus a mid-block routine rewrite
- The mid-block task applies % progression and auto-regulation bumps, then layers a constrained LLM judgment on top
- A cloud Claude agent returns typed, schema-validated JSON overrides; it reacts to injury or fatigue but cannot touch the program outside that surface
- Two safety properties: shadow mode (proposals to files for the first two blocks before any API write) and collision detection (diffs every write against the last snapshot)
05Stack
PythonClaude CodePydanticopenpyxlHevy APIuvpytest
06Status
active