Home · Builds · Finance ETL

Build · Series

The home-office finance ETL, step by step.

Eight parts, each with video, text, an image, and audio. From an empty VM to a family group chat that answers questions about the money.

Scratch cut Trailer animatic: every generated passage in place, paper cards where the live shots go, scratch narration.

What this series is

A step-by-step build log of the pipeline that runs my household's finances. Each part has a short video, the text to read instead, one diagram, and a few minutes of audio for the walk. The code is in the repo; the mistakes are in the text.

The architecture, drawn in dots: app, script, raw table, modeled tables, views, dashboards, the bot, the model.
The eight stages of the finance ETL drawn as dotted icons on a plane, numbered from the phone to the laptop.
The master diagram, numbered by part. Every thread starts with it. Also as a square.

The eight parts

  1. 1The pictureStart here. Why a household needs an ETL pipeline, and the shape of the one I built.
  2. 2The boxA Hetzner VM, Docker Compose, Postgres, Metabase, and Caddy, provisioned in an hour.
  3. 3Landing the dataPull the budget from the YNAB API and store every response as it arrived, forever.
  4. 4ModelingNormalized tables, soft deletes, and pure SQL transforms that can be replayed.
  5. 5The hourly loopA shell script, a systemd timer, sealed secrets, reconciliation, and the four-day outage.
  6. 6Seeing itDashboards defined in SQL, plus the FIRE layer that turns balances into dates.
  7. 7Acting on itThe cadenced action system and the Signal bot that puts it in the family group.
  8. 8Asking itA local model over a read-only tool server, and what comes next.

Principles that held

Audio · 2 minWhy I am publishing this
Scratch narration The stack is small enough to explain and real enough to trust, and most companies I meet have a worse version of it.

Write to me

I built this for a household. Imagine it pointed at your company.

Fractional CTO and CFO engagements start with a short call. No deck required, no pitch either. Bring the number you do not trust.

Tell me what is stuck