The smartest part of my AI app isn't AI
I'm building AstraIQ, an AI training app for people whose weeks don't fit in one sport — hybrid athletes, Hyrox competitors, runners, triathletes. The AI does real work. But the feature I'd defend hardest is a deterministic engine with a handful of hard-coded rules and no model in the loop.
It's called the Week Orchestrator, and it referees your training week.
Multisport weeks fight themselves
A single-sport plan is a list. A multisport week is a negotiation. Your strength day loads your legs the evening before your long run. Two high-stress sessions drift next to each other. Life moves a Tuesday swim and the knock-on ripples through everything downstream. The plan wasn't wrong when it was written — it goes wrong when it meets a calendar.
Why the referee can't be the model
Generating a week is a judgement problem, and models are good at judgement. Resolving conflicts inside one is a consistency problem, and consistency is what generative systems don't promise. The referee has to be reproducible — same week in, same verdict out — it has to give a reason an athlete can argue with, and it has to be testable. I can write assertions against rules. I cannot unit-test a vibe.
So the split is clean: the AI proposes what your week should contain; the orchestrator enforces what a legal arrangement of it looks like. Nothing moves silently — it proposes, you preview, you accept. Sessions you refuse to move, you pin, and it plans around them.
The metric that lied to me
One rule needs to know whether a session hammers your legs. My first instinct was to infer it from rep counts. Rep counts are a lie: three sets of five heavy squats and three sets of twenty walking lunges sit at opposite ends of the number line and both wreck tomorrow's run. That proxy got rejected. What survived is honest signals about what the exercises actually are. Fewer numbers, less cleverness, closer to the truth.
The whole architecture fits in a sentence: the AI plans, the rules referee. The smartest thing I've built so far is the part that refuses to improvise.