01 / iOS app2026In TestFlight
CoachAI
A calorie target that revises its own math.
Why I built it
A calorie target is a guess that goes stale. You answer a few questions on day one, a formula returns a number, and that number follows you for months while your sleep, your training and your appetite all move underneath it.
The apps that do adapt tend to hand the whole job to a language model, which means the number changes for reasons nobody can audit. I wanted a target that moves with real life without giving up the ability to say exactly where a figure came from.
What I built
A deterministic core
Targets, recovery bands and correlations live in plain TypeScript with tests. Given the same log, they return the same answer every time, which means a change in your target always has a traceable cause.
The model only speaks
Computed values go to the model as facts it is not allowed to change. It picks the wording and the order, not the maths, so a coaching note can never contradict the number on the dashboard.
A nightly recompute
An edge function rolls up the day, updates trailing averages and writes tomorrow's target before you wake up, so the app opens on an answer instead of a spinner.
The hard part
Saying nothing when there is nothing to say
When there is not enough logged data to justify moving a target, the app has to admit that instead of inventing confidence. Getting that copy honest took longer than the model integration did.
What I would do next
Cycle phase is in the schema but only lightly used. It deserves its own recompute path rather than a modifier bolted onto the daily one.