A quarter of transactions, sorted before your CPA asks.
Drop in your bank or card CSV. It sorts every line into your chart of accounts and flags the handful worth a second look: duplicates, low-confidence guesses, amounts that do not match the rest of the quarter. You confirm those. It builds the PDF packet and the email to your CPA, then waits.

Four times a year, not once.
A transaction you can place from memory in April is a guess by the following February. Working a quarter at a time means the lines are still recent when you sort them.
- stampedQ1
- stampedQ2
- stampedQ3
- not yet stampedQ4
Drop in the CSV. It sorts and flags.
Export the quarter from your bank or card as date,description,amount. Every row gets a category and a confidence score on import. Three rules decide what you look at:
- The same charge appearing twice.
- A category the model was under 0.8 confident about.
- An amount over three times the rolling median for the quarter.
Upload the same file twice and it reports inserted: 0 instead of doubling your ledger.



You decide the ambiguous ones. It remembers.
Confirm a row as it stands, recategorize it from your chart of accounts, or exclude it from the ledger entirely.
Those decisions stick. A later upload into the same quarter recomputes the flags and never overwrites what you already decided, and an excluded row stays out of the ledger and out of every flag comparison.
Two things come out of it.

A PDF of the confirmed ledger
It records how many rows were still flagged when you built it, so the packet is honest about its own state.

An email to your CPA, unsent
Prefilled from the quarter’s numbers. Edit it, save it, and it sits there until you do something about it.
You click send. Nothing else does.
Every outbound path runs through an adapter. In this version that adapter only writes a log line, so confirming send records what would have gone out and transmits nothing at all. Turning on real sending is a config flag and a set of credentials, flipped by a person, once.


The adapter’s own log line is right there in the panel: the message was built, addressed, and not transmitted.
When the export is a mess
A file with one unreadable row is rejected whole. Nothing is imported, and every bad row is listed with what was wrong, so you fix the export and try again. A file spanning two quarters is rejected too. One quarter per file.

One price, all four quarters.
Free for the first 30 days, with no card. Long enough to run a real quarter and decide whether the packet at the end of it was worth it.
- Your books stay readable and downloadable whether or not you are subscribed. Only new uploads and new packets need an active plan.
- Cancel any time. You keep the period you already paid for.
- No bank connection. You upload a CSV, so nothing here can reach your accounts.
- Nothing is emailed to your CPA until you press send.
Watch the whole quarter.
A screen recording of the real app. It does not play until you press play.

That is what the dashboard from the top of this page looks like once a quarter has been through it.
Upload your first quarter