Berlin, Germany
Dahai Tang
Systems I built to run my own life — and what building them for a user of exactly one taught me.
- Systems
- 6built for one user, who is me
- Servers run
- 0every one is a local script or a single static file
- Written up
- 6all of them, including the failures worth keeping
Index
- 01Hut-trek plannerA constraint solver for alpine hut bookings, and a single-file planner that still works when the signal doesn't.7 · nights chained85 km · distance1 · full re-solvesread ↗
- 02News radarReworking an open-source news scorer into a three-domain morning briefing — and cutting its running cost by four fifths.160→35 · llm calls per run~30 · items recovered per run908 · lines changedread ↗
- 03Lebensadmin cockpitA dashboard with no backend — one standard-library generator reads four unrelated systems and writes a single static file.4 · data sources0 · third-party dependencies0 · long-running processesread ↗
- 04Finanz cockpitThree banking systems, two continents and three currencies, normalised into one schema — and the masking rules that make it safe to look at.3 · currencies3 · ingestion paths1,595 LOC · pipelineread ↗
- 05Job-search workspaceThree board clients, a drafter/reviewer loop producing typeset applications, and a cost policy for an agent workspace.3 · board clients71 files · written in prose3 · model tiersread ↗
- 06Memoir writerAn interview-first writing workflow with a style spec distilled from a decade of the author's own prose, and no invented details.2014–2026 · source corpus0 · invented details permitted800–2,500 · chapter lengthread ↗
Everything here started as a problem I had: a briefing worth reading at breakfast, a booking chain that would not close, a stack of official letters with deadlines buried in them. Building for a single known user removes the excuses — there is no persona to hide behind, and the tool either survives contact with the actual week or it doesn't.