Trust comes from traceability
Every figure explains itself on click: which rule coded it, which version of that rule, what inputs it read, who approved it, and when. If a number can't be explained, it doesn't ship.
You teach your accounting rules once, in plain English. A deterministic engine applies them identically every period. Every number traces to its rule, its approver, and its inputs — and nothing posts until you say so.
See a close, start to finishStart with your own books →
The sample close needs no account. Nothing we do posts to your ledger.
Split each payroll payment across function and layer; capitalize deployment salaries to projects by field-technician hours; credit the bank for the exact payment.
| Account | Debit | Credit |
|---|---|---|
| Salaries & Wages — SG&A | 65,826.32 | — |
| Capitalized Deployment PRJ-4412 | 8,923.94 | — |
| Capitalized Deployment PRJ-4419 | 5,856.34 | — |
| Cost to Serve (Benefits) | — | 730.99 |
| + 19 more lines, tagged and tied | ||
| Operating Checking | — | 187,432.55 |
| Totals | 190,075.35 | 190,075.35 |
They are constraints, not features — the reason a number here can be defended in a review rather than explained away.
Every figure explains itself on click: which rule coded it, which version of that rule, what inputs it read, who approved it, and when. If a number can't be explained, it doesn't ship.
AI is used at one point only: helping you write the rule, in plain English, before anything runs. The entry itself is produced by a deterministic engine — same inputs, same entry, to the cent, every period.
When two rules could claim the same transaction, you see the order and the winner before it matters — including which rows a new rule would take from an existing one. Nothing is decided invisibly.
The close moves from your raw data to statements without a black box in the middle. You confirm what your files are, you approve every rule, and you post.
Drop in bank statements and ledger exports, or connect your bank through a regulated aggregator. Files are read on our server; you confirm what each one is and how its columns map before anything is read as accounting data.
Describe how something should book — the split, the accounts, the project tags, the date it takes effect. It's written back to you as a sentence you approve. That sentence, not a prompt, is the rule of record.
The engine drafts each entry and an independent check re-derives it line by line before you see it. A failed check blocks posting. You post; the posting is recorded against your name and the rule version that produced it.
Journal, trial balance, income statement, balance sheet, and cash flow, built from the entries you posted. They tie to the cent by construction, and every figure opens up to the lines behind it.
ISPs, solar and energy, hardware, field services. Deployment costs that must be capitalized and tagged to projects, payroll split across functions, recurring accruals — the entries a categorization tool hands back to a human.
People who sign under the numbers. You keep the judgment and the approval; the repetitive half of the close — the same twelve entries, the same way, every period — stops being manual.
Labeling a bank feed is solved. A close a reviewer can sign is not: it needs versioned rules, effective dates, an independent check, and a trail from every statement line back to the transaction underneath it.
A seeded company with duplicate charges, refunds, deposits, and inconsistent vendor names — from raw bank rows to drafted entries and statements, with every number explained.