All posts 3 min read

Your AI Bookkeeper Doesn't Need Training. It Needs a Memory.

Everyone's building ML models to categorize bank transactions. We did something dumber. It works better.

Every time someone tries to build AI for bookkeeping, they end up in the same place.

You want to auto-categorize transactions. The obvious move feels like: train a model. Label some data. Build a classifier. Tune it. Maybe fine-tune something on accounting-specific data if you're feeling ambitious.

We went a different direction. Dumber, honestly. And it worked better.

The Real Problem With Transaction Categorization

Here's the thing nobody really talks about: bookkeeping rules aren't universal. They're specific to your business.

"Amazon" could mean office supplies. It could mean cloud infrastructure costs. It could be a book someone expensed for a certification. Depends entirely on the company.

A generic model trained on everyone's data has no idea which Amazon you mean. It makes a guess. It's wrong often enough that someone ends up correcting it every month. And then next month? Same thing.

The signal you actually need is already sitting in your QuickBooks history.

What We Built

We built a reconciliation agent that connects to QuickBooks Online. The idea behind it is almost embarrassingly simple.

Before it suggests a category for a new transaction, it checks how the same payee was categorized in the past — in this business's own books, not some general training set.

If "Stripe" got coded to "Payment Processing Fees" 47 times, the 48th time should probably be "Payment Processing Fees" too. Not because a model learned that from a million other companies somewhere. Because this company already decided.

We call them history suggestions. It's a memory lookup. Most of the logic looks like this:

SELECT category, account, COUNT(*) AS frequency
FROM transactions
WHERE payee = $payee
  AND business_id = $business_id
GROUP BY category, account
ORDER BY frequency DESC
LIMIT 1

That's it, more or less.

The Edge Cases That Actually Matter

The obvious version breaks pretty fast. A few things we had to actually think through:

Generic payees are noise and need to go. "EFT Payment", "ACH Transfer", "WIRE TRANSFER" — those aren't real payees. They're bank formatting. If you look those up in history, you'll get a confident suggestion based on whatever random thing happened to get tagged to them last. That's worse than having no suggestion at all. We skip them.

Confidence has to be honest. A high-confidence suggestion only goes out when multiple historical matches actually agree. If there's one match, or the history is split, we flag it as low confidence and let the bookkeeper make the call. The fastest way to kill trust in an AI tool is one confident wrong answer — after that, people second-guess every right one too.

Some things are just new. A brand-new vendor, a new expense type — the history doesn't cover it. For those we fall back to pattern matching and flag it for human review. We don't pretend the system knows things it doesn't.

The Result

For a business with a year or more of QBO history, something like 70–80% of transactions get a high-confidence suggestion that turns out to be right. The bookkeeper looks at the rest.

That's a big shift from what it was before: 100% manual, every month, same payees, same decisions.

The AI doesn't have to be right about everything. It just needs to be right about most things so the human can spend their time on the exceptions — the new vendors, the weird edge cases, the stuff that actually requires judgment.

Why This Pattern Keeps Working

The best systems we've built feel obvious once they're done.

Investor follow-up AI — it was stage-aware email routing. Self-improving agents — write down what worked and reuse it. AI bookkeeper — ask whether you've seen this before.

Every time, the underlying move is the same: we're not replacing human judgment. We're capturing it and applying it again automatically.

Your bookkeeper already made the right call on "Stripe" 47 times. They shouldn't have to make it a 48th.


We build AI systems that handle the repetitive parts of running a business. If you're grinding through manual bookkeeping reconciliation every month and want to see what automation actually looks like, book a call.