MacroAccount

How the ledger is built, and what it deliberately will not do.

Sign in
Sheet
Method
Basis
Cash
Reporting unit
USD
§1The problem

Money for one business sits in accounts that do not talk to each other — a US checking account, a Chilean current account, a card in euros. Each bank exports a different shape, in a different number format, with the dates the other way round. Answering what did this cost and did it make money means a spreadsheet, by hand, every month, and being wrong quietly.

§2Ingest

Upload the statement. CSV, Excel and OFX are parsed exactly. PDFs go to Claude, which handles what a parser cannot — which block of the page is the transaction table, whether 1.234,56 is one thousand or one point two, whether a column headed Cargos is money leaving.

Then arithmetic decides whether to trust it. Every number the model returns is re-parsed into exact integers and the whole extraction is reconciled against the opening and closing balance the statement itself prints. It has to carry one to the other, to the cent, or it does not commit. That check is the reason a model is allowed near the ingest path at all.

§3Rates

Each transaction is stamped at commit time with its own amount, a USD amount, and the exact rate used — never converted when a report runs. A statement from last March has to read the same today as it did in March.

CodeSourceUSD per unit
USD—1.0000000000
EUREuropean Central Bank, daily1.0850000000
CLPBanco Central de Chile — dólar observado0.0011309531

The peso publishes on business days only, so a Saturday takes the last published day at or before it — never a later one, or a report would change when re-run the following week.

§4Classification

Rules run first, so a merchant you have confirmed once is never re-decided: it costs nothing and cannot change its mind between runs. The model only sees genuinely new merchants, and what it returns is a suggestion with a confidence that lands in a review queue. Correct one and you are offered the rule that makes the correction permanent.

Transfers between your own accounts are paired and excluded. Moving $10,000 from checking to savings is not ten thousand of income and ten thousand of expense — it is neither, and left unpaired it inflates both sides of every total.

§5What it will not do

It is cash basis. No invoices, no receivables, no accruals. The balance sheet derives cash from the ledger — so the two can never disagree — and takes loans, equipment and owner equity by hand, because no bank statement knows about them.

It therefore does not self-balance, and the gap is reported as an explicit unexplained line rather than plugged. A balance sheet that always balances by construction tells you nothing.

§6Access

A private ledger for one operator. Sign-in is an allowlist, and an empty allowlist denies everyone — a misconfigured deployment of something holding every transaction in every workspace must not be a public ledger.

Back to the consolidated position