AI CASE
Streamlined CrossFit administration
The admin around a gym is largely repetition: assembling programming, keeping track of what has already been done, and recording it in several places. That now runs as one system that composes a full week and submits it for approval.
- PERIOD
- 2025 - heden
- USED
Claude
N8N
googlesheets
Obsidian
The problem
Programming a week is not hard, it is slow. You need to know what came up over the past weeks, whether the spread across movement patterns still holds, when a benchmark was last run, and whether you are not hitting the same emphasis three times running. That knowledge lives in your head and in a handful of files, and you have to gather it again every week. Then you retype the result into the schedule and the log. The thinking took a fraction of the time; looking things up and retyping took the rest.
The approach
One system that drafts a week from three things: the coaching methodology, the history of what has already been done, and a benchmark year plan. It submits that draft for approval, and only once approved does it write the week into the schedule and the log.
The approval step is not a stopgap to be removed later. Programming touches injury risk, and a system that publishes itself without anyone having looked is exactly the kind of automation you notice one week too late. What is left is judging rather than retyping, and that is the gain.
The result
The weekly round has gone from looking up and assembling to reading and approving. It runs at a fixed moment in the week and announces itself, so it is no longer something you can forget. The rules that used to live in my head are now written down, and that turned out to be the biggest side benefit: a rule you have to state for a machine is a rule you have to get straight yourself first.
What went wrong
Two things, and both cost me an evening.
The storage could add rows but not update them. You do not notice straight away, because the first run works fine. Only on the second run for the same week there was a second row instead of a changed one, and the rest of the chain read whichever it happened to hit. Fixed by designating one place as the only write path instead of writing wherever it was convenient.
And one of my own rules was impossible to satisfy. I had required benchmarks to be spread across movement patterns, but without a time window the rule looked at the entire history and after a while no week could satisfy it at all. The fix was a twelve week window. That is the kind of fault you only find by letting it run, not by looking at it.