For builders
What is vibe accounting?
Vibe accounting is the practice of building accounting and finance software by describing intent to an AI coding agent, using components that already encode double-entry rules, money formatting, period logic and audit controls — so the generated interface is correct by construction rather than merely plausible.
- Components
- 179
- Implemented
- 125
- Terms defined
- 287
- Registry
- @lopifi
Accounting software fails quietly
Which is why generating it from a blank file is a different risk from generating anything else.
A broken layout is obvious. A ledger that sums to the wrong number is not — it renders, it looks finished, and it is discovered a quarter later by someone reconciling an account that will not tie. Every line below is something a capable model produces when asked to build a finance screen, because each is defensible in general software and wrong in accounting.
- amount: 1240.56amount: 124056, currency: 'USD'
Minor units, always. Floating point cannot hold most cents exactly (0.1 + 0.2 is 0.30000000000000004), so thousands of rows rounded in different places drift by a cent, and the drift appears in a reconciliation nobody can explain.
- {value ?? 0}{value === null ? 'n/a' : <Money value={value} />}
null is not zero. Rendering $0.00 for an unknown balance asserts something the system does not know.
- -$1,240.56($1,240.56)
Accounting parentheses, with the paren column reserved on both sides so the column stays aligned regardless of sign.
- <td>{entry.amount}</td><td>{debit}</td><td>{credit}</td>
Debit and credit are two columns. One signed number is not a journal entry, and a trial balance over it cannot be proven.
- toFixed(2)currency-aware decimal places
JPY has none, KWD has three. Hardcoding two is a bug with a customer attached.
- delta > 0 ? 'green' : 'red'polarity-aware colour
Burn rising is not good news. Colour follows the meaning of the metric, never the sign of the number.
Correct by construction, not by prompt
The fix is not a longer prompt. It is moving the correctness out of the prompt and into the component, where it is reviewed once and reused forever. Lopifi is that layer: 179 components specified against the accounting before any of them was written.
# 1 — tell the agent where the components live
{ "registries": { "@lopifi": "https://lopifi.com/r/{name}.json" } }
# 2 — the theme first; components without it compile to unstyled markup
npx shadcn@latest add @lopifi/theme
# 3 — then describe the screen, and let it install what it needs
npx shadcn@latest add @lopifi/journal-entry-table @lopifi/trial-balanceThe load-bearing components
The ten a ledger screen cannot do without, running below. Each card opens its spec and install line.
- MoneyThe core primitive. A monetary value, formatted correctly.
- DeltaA signed change, with polarity and a redundant non-color cue.
- FigureA large display numeral with automatic size step-down.
- PercentPercent vs. percentage points, explicitly discriminated.
- RuleSingle / double / section accounting rule lines.
- BalanceCardThe hero: one trusted number.
- KpiCardMetric + delta + optional sparkline.
- AmountInputThe hardest input in fintech.
- PaymentFormAmount → payee → method → date → memo.
- ConfirmPaymentDialogAmount, destination, timing. Hold-to-confirm.
Common questions
What is vibe accounting?
Vibe accounting is the practice of building accounting and finance software by describing intent to an AI coding agent, using components that already encode double-entry rules, money formatting, period logic and audit controls — so the generated interface is correct by construction rather than merely plausible.
How is vibe accounting different from vibe coding?
Vibe coding produces software whose failures are visible — it renders wrong, or it throws. Accounting software fails silently: a sum drifts by cents because money was stored as a float, a null balance renders as $0.00, a negative renders as -$1,240.56 instead of ($1,240.56), or an increase in a cost is coloured green. Every one of those produces an interface that looks finished and reports something untrue. Vibe accounting is the practice of removing that class of failure by generating against components that already encode the rules, rather than asking a model to rediscover double-entry each time.
Can an AI agent write correct accounting software?
Not from a blank file, reliably. A model asked to build a ledger table will produce something plausible: one signed amount column instead of separate debit and credit columns, floating-point sums, no period state, an edit path on a posted entry. Each is defensible in isolation and wrong as accounting. Given components that already encode those rules — 179 of them, specified before they were written — the same prompt produces software that is correct by construction, because the correctness lives in the component rather than in the prompt.
What does an agent need to do vibe accounting?
Three things, all served from this domain: the registry at https://lopifi.com/r/{name}.json so components install by name; the MCP server at https://lopifi.com/api/mcp so the agent can search the catalog and read source directly; and the lexicon, so it uses one word per concept. An agent that installs the MCP server carries the accounting vocabulary into every session.
Is vibe accounting a replacement for an accountant?
No, and a system that implied it would be lying. It is a way of building the interface an accountant works in. The judgment — materiality, revenue recognition policy, what a variance means — stays with the person who signs off on the books. What changes is that the software stops making the mechanical errors that waste their review time.
Told what the agents get wrong next
Every family we ship starts as a list of the specific ways a model gets that surface wrong. One email per family, with that list — useful whether or not you install anything.