Oliver Wakeford
All projects
Systems
SystemsOngoing2026

Life OS

9 sources into one SQLite store, 154 tests, scheduled since April 2026

Data EngineeringAutomationPersonal InfrastructureLLMs

Built with

PythonSQLiteuvpytestLaunchAgentsClaude API

Not public

The repository holds my own health, financial and calendar data, so it stays private. Counts above are from the working tree.

I wanted one honest picture of my own week, and the data was scattered across eight apps that do not talk to each other. So I built the thing that joins them.

Scheduled jobs pull from Hevy and Strava for training, Toggl for time, Apple Health for sleep, HRV and nutrition, Apple Calendar and Reminders through a Swift bridge, and four banks by CSV drop. Everything lands in a single SQLite database that is the source of truth. Transactions are categorised by rules first and by a language model only where the rules are ambiguous, which keeps it cheap and predictable.

On top of that sits a generation layer that writes plain markdown into my notes, so the output is readable in the same place I already work rather than in another dashboard I would stop opening.

It is a real codebase rather than a script: 46 Python modules, 154 tests across 21 files, nine ingestion sources and nine renderers, uv and pyproject, a Makefile, a `life` CLI, and macOS LaunchAgents doing the scheduling on a fixed daily timetable. It has run since April 2026.

The part I would defend in a review is that every source is idempotent (re-running a sync must not duplicate a row) because a scheduled job that runs eight times a day will eventually run twice at once, and a personal dataset with silent duplicates is worse than no dataset.

What this does not show

  • No uptime figure is measured, so 'running since April' is a start date rather than a reliability claim.
  • The finance ingestion is barely populated compared with health and training.
  • Built for one user on one machine. Nothing about it is multi-tenant.