Writing

Why the model is for reasoning and code is for computation

Hard problem
A model can tell you that a CSV export, a screenshot and an API response describe the same transfer, and cannot be relied on to total them. A ledger needs both halves, and needs to know which one produced any given figure.
Approach
Put the line where the capability changes. The model proposes inputs — classified transactions, matched sources, entries pulled from messy evidence — and the deterministic engine regenerates the ledger from them. A wrong proposal is deleted and rebuilt, never patched.

Most people use AI models like search engines, when they are closer to question engines. The strength is in writing the ranking algorithm or the search query, not in finding the top-ranked result. A model can recognise a CSV export, a screenshot and an API response as the same transfer — a judgment call. It cannot be relied on to sum the numbers. Code absolutely can. So the model proposes inputs, and a deterministic engine regenerates the books from those inputs plus rules.

inputproposalpasses both gatesfails a gate → rebuild
NON-DETERMINISTIC — THE MODELDETERMINISTIC — THE ENGINEMessy evidencestatements, PDFs, screen recordings,on-chain eventsMulti-modal parseWhisper · Qwen3-VL · OCR — localmodels, end to endModel proposesclassified transactions, matchedsources, extracted entriesRules + raw eventsthe immutable inputsRegenerate ledgerderived from inputs, never hand-editedGatesdouble-entry balances · every figuretraces to an event and a ruleCommitted ledgeraudit-grade by constructionthe model never writes to the ledgerdeleted and rebuilt, not patched
The model proposes; the deterministic engine decides. A proposal that fails either gate is discarded and the ledger regenerated from inputs and rules — never patched in place. That is how non-deterministic reasoning coexists with books that have to survive an audit. The same harness pattern, pointed at web development instead of accounting, built this site.

Why you cannot just change one number

Double-entry and FIFO cost basis are path-dependent. Change one early acquisition — its price, its date, whether it was a disposal at all — and every later disposal that drew from that lot is wrong too. There is no correcting a figure in place; the chronology has to be re-run from where the change lands. That is where deterministic books stop being a preference and become the only thing that works.

This is one kind of harness. What else a model can be pointed at — code, a shipped surface, a session — is a separate question.