Home · Builds · Finance ETL · Part 1

Finance ETL · Part 1 of 8

Why a household needs a pipeline.

The budgeting app answers today's questions. I wanted yesterday's, last year's, and the ones nobody has asked yet. That means data in a database I control.

Scratch cut Part one, the simple version: the two questions, the eight stages, and the four rules. Scratch narration.

The problem

YNAB is a good budgeting app. It is a bad database. It shows the present clearly and the past dimly, and it cannot join your budget to anything else: a retirement projection, a tax calendar, a list of what needs doing this week.

I wanted one database where every household record lands, where every dashboard reads the same tables, and where a family chat bot and an AI assistant can answer from the same truth.

The shape

  1. A shell script pulls the budget from the YNAB API once an hour, using the API's delta cursor so each run is two requests.
  2. Every response is stored as it arrived, in an append-only JSON table.
  3. Pure SQL functions transform the raw rows into normalized tables with soft deletes.
  4. Views on top compute FIRE progress and the action items for each cadence.
  5. Metabase reads it all through a read-only role. So does a Signal bot. So does a local model through a tool server.
The architecture, drawn in dots.

Principles I set before writing a line

Packing list

A YNAB account with a personal access token, a Hetzner account, a domain on Cloudflare, and a terminal. Everything else is in the repo.

Audio · 3 minWhy I built it instead of buying it
Scratch narration What the paid tools do well, where they stop, and the moment a spreadsheet lost a month of history.
A question mark over a phone in a swarm of dots, captioned two questions the app could not answer.
Plate I · The picture
Free to borrow for your feed · Square edition

Where you are: two questions, eight stages, four rules. Next, a machine to put them on.

Series overviewNext · Part 2 of 8The box: one VM, one hour

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