Side hustle

Geldstroom.

Type
Self-initiated web app
Stack
Next.js, TypeScript, LLM
Status
In progress, 2026

A personal finance dashboard that turns raw bank statements into a clear, trustworthy picture of where the money goes.

Geldstroom ingests bank statements in CAMT format, then an AI model reads each transaction's description to categorise it and surface subscriptions, splits and one-offs. Every amount on screen is still computed in code from money that actually moved, never by the model.

Integrity is the whole point. Money is stored as signed integer cents, bank-imported fields like date, amount and counterparty are immutable, and nothing is hard-deleted. Categories, notes and links stay editable, and every derived total rebuilds from the source, so no number the dashboard shows can drift from the statements behind it.

On top of that ledger sit budgets, savings goals, shared-expense splits, a month-end forecast, and a subscription radar that flags dormant or rising costs before they land.

Bank statement import (CAMT)
AI categorisation
Budgets versus actuals
Savings goals
Shared-expense splits
Month-end forecast
Subscription radar
Spending insights
Geldstroom dashboard: income, expenses, cashflow chart and spending by category

One dashboard

Income, expenses, cashflow and spending by category sit in one calm overview. Every figure is computed in code from money that actually moved, never estimated by the model.

Image needed: CAMT statement import

Bank statement import

Geldstroom ingests bank statements in CAMT format. Imported fields like date, amount and counterparty are stored as immutable records, so the source behind every number stays intact.

Image needed: transaction categorisation

AI categorisation

An AI model reads each transaction description to categorise it and surface subscriptions, splits and one-offs. It only ever touches the language; the code still computes every amount.

Image needed: budgets versus actuals

Budgets versus actuals

Budgets track planned against actual spend per category, rebuilt from the ledger so the numbers always reconcile back to the statements.

Month-end projection with a breakdown of how it is calculated

Month-end forecast

A running projection of where the month lands, with a clear breakdown of how the figure is built from committed and expected movements.

Upcoming payments: known fixed costs and subscriptions before they land

Upcoming payments and subscription radar

Known fixed costs and subscriptions are surfaced before they land, and the radar flags dormant or rising charges early.

Savings goals with progress, monthly contribution and target dates

Savings goals

Goals track progress, monthly contribution and target dates, with cash allocated from the same ledger so nothing is counted twice.

A split group dinner: net cost after others pay back their share

Shared-expense splits

Split a group cost and Geldstroom tracks the net after everyone pays back their share, reconciling to the cent.

The hard part was never the charts, it was never creating or destroying a single cent.

Netting, splits and cash allocation are where money-integrity quietly breaks, so every derived total rebuilds from the imported statements and has to reconcile back to them.

It already replaced a stack of spreadsheets. Next up is sharper forecasting and tighter subscription detection.

Like what you see?
Tell me about your project
Grab a coffee