Writing

Money & privacy

How Ahorreo turns the statements your bank already gives you into what you earn, spend and own, without a server. Why a salary paid on 1 March belongs to February, how a joint account counts towards your net worth, and why every amount is stored as integer cents.

Also how we check the privacy claim instead of only making it: a Content Security Policy, a test that fails if a network call appears outside a short allowlist, and the one kind of request Ahorreo can make, off by default: the ECB's exchange rates and Euribor series.

Projects: Ahorreo, Mortgage calculator

Money & privacy Joel

Categorising bank transactions without a server

How Ahorreo categorises every imported transaction with a fixed order of rules on your device, says who decided each one, and never undoes your corrections.

Money & privacy Fran

Privacy You Can Test: How Ahorreo Enforces Zero Network Calls

A privacy policy is a promise. A Content Security Policy, an automated network test and an opt-in switch are enforcement. How Ahorreo makes 'your data never leaves your device' something you can verify.

Money & privacy Fran

Booking Date vs. Accrual Period: When Did You Really Earn It?

A salary paid on March 1st belongs to February, and a card purchase on March 28th is March spending even if it's charged in April. How Ahorreo separates the bank's date from the month a transaction belongs to.

Money & privacy Joel

Household or My Share? Measuring Net Worth With Shared Accounts

A joint account at 50% shouldn't count in full towards your net worth. How Ahorreo models ownership as a percentage on accounts, homes and mortgages — and why every figure needs to say which base it's on.

Money & privacy Fran

Why Money Should Never Be a Float: Integer Cents in Ahorreo

0.1 + 0.2 is not 0.3 in JavaScript. Here's why Ahorreo stores every amount as integer minor units inside a Money type, refuses to add two currencies, and parses '1.234,56 €' without guessing.

Other lines