Skip to content
Aldridge Dagos Get in touch

CASE 14

Household Finance OS

Household money used to live in scattered apps and spreadsheets. Now it runs on a real double-entry ledger, with receipts read by camera and bills that post themselves.

Role
Ledger design, money logic, and household workflows
Year
2026
Stack
Web app · Double-entry ledger · Receipt capture
Status
Live in production

01 The problem

Household money lived in a budgeting app, a bank app, a spreadsheet, and a notes file. Nothing agreed and nothing balanced. The spreadsheet drifted a little more every week because someone had to remember to update it, and someone always forgot. Two people sharing one home could not see the same numbers, so every money conversation started by arguing about which total was right.

02 The system

A finance platform built on a double-entry ledger. Each posted transaction must balance under a database rule, following the accounting pattern behind reliable money apps. Each person has a profile behind a passcode. A receipt photo can prefill the amount and merchant for confirmation. Recurring bills post on their due date and can add reminders to the right calendar. Savings and travel plans use ledger entries rather than a separate estimate. The app also supports offline use.

03 How it holds up

Every entry must balance under a database rule rather than a copied spreadsheet formula. As of July 24, 2026, the current source carries 53 database migrations and 32 test files. Five scheduled jobs handle recurring bills, backups, and reminders, while users still review new transactions and receipt reads.

04 The result

Two people can work from the same journal, account view, receipts, and recurring bills. Database balance rules protect the ledger, while users still confirm receipt reads, categorize transactions, and review scheduled entries.

05 Frequently asked questions

What is a double-entry ledger in a personal finance app?

Posted transactions use balanced entries, the same discipline a business uses for its books. The database rejects an unbalanced journal on the supported write path, reducing the formula drift common in spreadsheets.

How is this different from a budgeting app?

A budgeting app holds totals someone has to keep current, which is how household money ends up scattered and disagreeing across apps and spreadsheets. A ledger built on double entry writes every transaction as two balanced entries checked by the database, so the numbers stay right without anyone updating them.

Can two people share one finance app?

Yes. Each person signs in, picks a profile, and clears a passcode before any numbers show. Both see the same ledger, so money conversations start from one honest picture instead of an argument about which total is right. The numbers stay current without either person updating anything.

How do receipts and recurring bills get into the ledger?

Photograph a receipt and the receipt reader prefills the amount and merchant for confirmation. Recurring bills post on their due date and add themselves to the right calendar. Receipt images back up to cloud storage.

· How it works

  1. 01

    Sign in by profile

    Each person signs in, picks a profile, and clears a passcode before any numbers show.

  2. 02

    Log money

    Posted transactions must balance under a database rule before they enter the ledger.

  3. 03

    Snap a receipt

    Photograph a receipt and the receipt reader prefills the amount and merchant for confirmation.

  4. 04

    Bills post themselves

    Recurring bills post on their due date and add themselves to the right calendar.

  5. 05

    Plans track real money

    Savings, travel, and purchase plans fill from real ledger entries, not guesses.

· Results

Ledger
Double-entry
Migrations
53
Tests
32 files

1. Each posted transaction must contain balanced entries under a database rule, preventing an unbalanced journal from being accepted through the supported write path.

2. Receipts back up to cloud storage, bills sync to each person's calendar, and the whole thing installs and runs offline like an app.