The problem

Health data lives in silos. The phone holds one set of records, the wearable another, and a spreadsheet of what I actually ate and lifted a third. Asking a chatbot for a workout plan ignores all of it. What I wanted was a loop: data in, a plan out, a response from me, a record of what I actually did, and a review that changed the next plan.

What I built

A phone health export flowed through a spreadsheet into normalised records, alongside the wearable feeds. Timed imports ran on a schedule and fed a daily coaching plan. Meal and training prompts arrived in a messaging app at the right moments, and my replies went into an adherence log. A weekly summary read the log and the data together.

The parts that made it a system rather than a script were the boring ones. Stale data was handled explicitly, so a missed import did not produce a confident plan from last week's numbers. Records were deduplicated. Corrections to the coaching instructions were durable, so when I told it something was wrong it stayed fixed rather than drifting back.

The coaching layer used a model. Everything either side of it, the imports, the normalisation, the deduplication, the prompts and the logs, was deterministic code, and that is what made the model's output trustworthy enough to act on.

What you can see

The design of the loop, from import to weekly review. The data itself stays private.

The result

The loop closed. A plan arrived every morning built from real data. The prompts turned intention into a record. The weekly review surfaced patterns I would not have noticed, and the corrections I made stuck.