Giving my health coach a memoryproject

Coach, the training AI from a few posts back, has been on the job every morning since spring, and it recently learned to negotiate: the daily brief became a dialogue, so a reply like “travel day, swap Thursday” reshapes the rest of the week. That was the evolution I predicted at the time. Living with it surfaced the one I didn’t: for all its judgment, the system was still a pipeline wearing a coach’s whistle.

A pipeline, because I had decided in code, weeks in advance, exactly which data the model would see each morning, and nothing else. It had no memory; it would tell me to hold a weight “until form locks in” and by the next sunrise had no idea it ever said so. I only became aware of this after plateauing for weeks, waiting for the next challenge that never came; I’d hired this thing to be a higher authority I could lean on, and it couldn’t hold itself to its own advice. And nobody checked its work: one brief misstated my recovery baseline, and the error sailed into my morning unchallenged.

A recent rebuild tackled all three, shipped in order of risk: the safe pieces first on the proven path, the risky piece last, behind a one-flag rollback. The reasoning now runs on Claude Sonnet 5. This thing has to perform at 9am whether or not I slept, so the deployment discipline matters as much as the features.

Memory came in the form of a training log the model keeps for itself: after each brief, it writes a dated entry to a markdown file in git, machine-authored, holding its commitments, its open flags, and things like a running deload clock. It’s plain English rather than a database on purpose, so I can read it and correct it. Every morning it reads the last three weeks back before writing a word. Its promises now survive the night.

The agentic loop: the model searches a catalog of tracker queries, gathers what it decides it needs, consults its training log, drafts the brief, and a verification pass checks the draft before Discord.

Agency meant retiring the fixed data bundle. A few curated queries still load by default, but the tracker’s entire read surface (roughly 90 distinct calls) is now discoverable by search, and the model gathers what it decides it needs. On its first live run it went and pulled my heart-rate-variability history unprompted; no line of my code asked for that. That moment is the whole difference between a pipeline and an agent: the questions are no longer mine.

And because an agent that gathers its own evidence can also misstate it, verification now stands between the draft and my phone: a second pass checks the brief against the gathered data and the training log. It earns its keep; it has caught the brief claiming two clean sessions in a week when the data showed one, which is exactly the species of confident overstatement that teaches people to distrust AI summaries.

Then verification turned on its own team, and taught me the most useful lesson of the rebuild. On a data-rich morning, the verifier flagged legitimately gathered data as fabricated and revised it out of the brief, deleting precisely the insights the rebuild exists to surface. The cause was an asymmetry: the verifier saw only the curated data, while the agent’s self-gathered evidence lived in a conversation the verifier never watched. Claims with no visible source look invented, even when they’re the best material in the draft. The fix was small (the writer now hands the verifier a manifest of every query it ran), but the principle generalizes to any design where one AI checks another: the verifier must know at least what the writer saw, or be told explicitly that it doesn’t. That’s now a skill across all my AI tools, and it’s the piece of this rebuild I’d tell a stranger about first.

Here’s a recent example of my morning health brief, memory and all (note the held prescriptions, the open flags, and a progression it remembers from the last cycle):

A recent Daily Training Blueprint brief in Discord: a recovery readout with a verdict, the day’s prescription with per-movement loads and rests, progression notes carried from prior cycles, movement cues, and a coach’s note.

The next step is action. The coach should push the day’s prescribed workout onto my watch, behind a button only I can press: drafting stays autonomous, acting stays human-gated.