Skip to content
← Work
Self-initiated2026

LifeTrack

A long-running agentic AI system I built for myself: durable user state, a git-backed memory store, and coaching conversations routed across three model tiers.

AIProductTypeScriptReact

The Problem

Most personal development software is a tracker. It counts things, rewards streaks, and quietly makes you feel behind the moment you stop. Compliance-based systems have never worked on me and I have abandoned plenty of them.

The interesting problem underneath is not motivational, it is architectural. A tracker holds no durable model of the person using it. That is a state problem, and it is the same problem every serious agentic system runs into: what does the assistant actually know, where does that knowledge live, and who is allowed to write to it.

What It Is

LifeTrack is my testbed for answering that. Four components, built to work as one system.

A structured intake produces a durable user profile, held across several self-description frameworks and three pillars covering mind, body and environment. The governing rule is that the profile is not user-editable. Only the system writes to it. A user is free to disagree with what it says, and the disagreement itself becomes data rather than an edit.

A second store holds twelve categories of avoidance, each with an intensity, its triggers, how it shows up behaviourally, and the reframes generated against it. This is the part that gives the assistant something to reason with beyond a chat history.

The coach is the only component that talks to the user. It reads both stores, runs a morning check-in and an evening reflection, and produces a weekly synthesis. It never uses streaks or shame.

A module catalogue sits on top as optional surface, added only when something is repeatedly wanted rather than because it seemed interesting to build.

The frameworks behind the intake are popular self-description instruments, not clinical ones. Nothing here diagnoses anything, and it is not presented as therapy.

The hard part

The system has to hold a model of a person that the person cannot edit, and still be trustworthy a year later. A chat history is not a memory. It grows, contradicts itself, and nobody can say what the assistant actually believes about you or when it started believing it.

Morning check-indailyEvening reflectiondailyWeekly synthesisweeklyProfile updatedonly the system writesthe next day starts from what the profile already holds
Fig. 1 The cadence the coach runs on. A user can disagree with the profile, but never edits it.

The obvious answer is a database. I rejected it because I wanted to read the system's picture of me directly, and see what changed and when, without first building tooling to interrogate my own state. The other standing question is cost. Not every exchange deserves the same amount of thinking, and a system that spends as though it does gets too expensive to keep running before it is good enough to be worth running.

Two earlier builds are archived. Both died of their own complexity. The rebuild is TypeScript, runs on Claude, and is not finished.

Where It Stands

Two builds in parallelMay 2025Both stalledJune 2025Formally archivedJuly 2026Rebuilt as one systemJuly 2026Live data, not mocksAugust 2026
Fig. 2 Two builds running at once, both stalled by June. The rebuild began ten days after they were formally archived.

Two builds ran in parallel and neither lasted beyond early June 2025. Archiving them properly is what unblocked the rebuild, which began ten days later as one system.

Unfinished, and in daily use by me. Check-ins, coach conversations, the weekly review and the avoidance map all run on live data rather than mocks. It is ahead of its validation, which is the honest position. I set myself ninety days of continuous personal use before any of it is extracted into a product, and it has not reached that mark yet.