AI Bookkeeping for Small Business: 15 Months of Books, Then QuickBooks

Oct 4, 2026 · 5 min read

AI Bookkeeping for Small Business: 15 Months of Books, Then QuickBooks
_ □ ×

AI can do the categorizing part of bookkeeping well. We built our own bookkeeper on Claude Code, and it sorted 559 bank transactions across 15 months of statements into our chart of accounts with zero left uncategorized. In August we retired it anyway and moved to QuickBooks Online Plus with a live bank feed. The hard part of keeping books turned out to be getting transactions in every day and keeping one set of books a teammate can close each month. A product we were about to pay for already did both.

One afternoon, a year of books

In February I had eleven months of 2025 bank statements sitting as PDFs and an accountant to send them to. On February 13 I built what the repo still calls Claude Accountant. The git history for that day is seven commits long.

The workflow was four slash commands. /finance:import read the statement PDFs straight into a JSON file. /finance:categorize walked through anything it didn’t recognize and asked me where it belonged, then saved my answer as a vendor rule so the next import would know. /finance:export wrote QuickBooks-compatible CSVs. /finance:summary gave a P&L by category.

The piece I’d keep in any version of this is a hook. Every time Claude wrote to the transactions file, a script added up income and expenses for each month and checked them against the statement’s own totals and its starting and ending balances. If a number was off by more than a cent, the edit got flagged right away. A language model reading PDFs will eventually misread one, and a balance check on every edit is how you find out the same minute instead of at tax time.

That afternoon it imported 223 transactions from 2025, categorized all of them, and exported full-year and quarterly CSVs for the accountant. A year of catch-up bookkeeping took one day, and every month reconciled to the statement.

What 15 months taught it

We kept feeding it. By the last import it held 559 transactions from February 2025 through April 2026, and 52 commits in the repo had touched the finance folder.

The rules file is where the learning lived. It started with 73 vendor rules. By April it had 143, and by May it had 151. Each one was a small decision I’d made once and never had to make again. That’s the honest version of “the AI learns your business”: it learned because every correction got written to a file, which is the only kind of learning I’ve seen actually stick (we built three loops that were supposed to learn on their own, and none of them collected anything).

Two small things went wrong along the way. When we rewrote the parser, three rules stopped matching because they had a stray asterisk in the vendor text. And the README still says 73 rules today, because nobody updated the docs after day one. The file is right. The docs drifted, and Claude reads both.

Why we switched to the boring tool

The volume changed. In mid-2025 we had 11 to 18 transactions a month. In March 2026 we had 126. And the pipeline only ran when someone sat down with PDFs. The last import, on May 11, brought in January through April in one batch. For months at a time, our books were only as current as the last time someone downloaded statements.

Then we wanted things a CSV can’t give you. We wanted margin per client, a runway number that updates without anyone touching it, and a monthly close that a teammate can run without opening a terminal. In June we decided on QuickBooks Online Plus as the ledger, with one class per client, and Fathom on top as the KPI layer. Fathom pulls from QuickBooks once a day on its own.

Our tool’s whole output was a CSV for someone else’s ledger. Once that ledger was connected to the bank directly, our pipeline became a second copy of the books that had to agree with the first. Two sets of books that need to match is a chore with no end, and the second set was the one only I could operate.

The best thing the pipeline left behind was its rules. QuickBooks bank rules match text in a transaction and set its category, which is exactly what our rules file did. On June 30 we exported all 151 of ours as QuickBooks bank rules. Everything the AI had learned moved into the product in one CSV.

The README got a retirement banner in late August, and the commit that formally retired the pipeline landed on August 31.

The tradeoff is real. Our pipeline had zero uncategorized transactions. The done criterion we set for the QuickBooks backfill was under 5% uncategorized. We accepted a looser number in exchange for a ledger that fills itself every day, and that was the right trade.

What still runs

Two pieces of the finance package still run.

One is cash reconciliation. Our client receipts and contractor payments are tracked in Notion, and the bank doesn’t know anything about Notion. A command compares the two, writes a report and proposes fixes that a person approves. No product we pay for does that, because no product knows how our Notion is set up.

The other is a set of commands that pull the P&L and transactions out of QuickBooks through its API, so the rest of the company brain can answer finance questions with the real numbers instead of a stale export.

The custom code moved up a level. It used to do the bookkeeping. Now it sits on top of the bookkeeping product and connects it to the systems that product has never heard of.

Where custom AI earns its keep

The rule I took from this applies well past bookkeeping. If the work happens inside one product you already pay for, and the data already lives there, use the product’s feature, even when it’s worse at the clever part. QuickBooks categorizes less perfectly than our pipeline did. It also gets the transactions on its own, keeps one copy of the books and lets someone besides me run the close. A homegrown tool would have to rebuild all of that before it could compete.

Where custom AI has paid off for us:

  • One-time catch-up jobs. A year of PDF statements in an afternoon. You run it, check it and throw it away.
  • The seams between products. Bank versus Notion, QuickBooks versus the company brain. No vendor builds the bridge between your specific tools.
  • Work no product sells. If you search for the tool and nothing comes up, that’s a real signal.

Before any of that, ask the question I now ask before building anything: should this exist at all? Plenty of what gets called automation is a report nobody reads.

For an AI accountant for small business, my answer is to get a bank feed and bank rules running first. Then use AI for the backlog, the reconciliation across systems and the questions you want to ask your numbers.

If you’re sorting your own list

Most small business owners I talk to have a list of things they want AI to handle. Some of those need custom work. A lot of them are a setting in a product they already pay for. Bring the list to a free 30-minute call and we’ll sort which is which.

More Thoughts

Custom GPT for Your Business: 20 Files, Frozen the Day You Upload Them

Oct 17, 2026 · 6 min read

A custom GPT for your business works for one person and a few files that rarely change. For a team it goes stale, skips …

Read more

Claude Code for Non-Developers: Our Whole Team Installs Four Things

Oct 16, 2026 · 6 min read

Claude Code works for non-developers when the work is documents. Our team installs git, Claude Code, uv and one env …

Read more

Can Claude Read My Email? It Has Filed 1,200 of Our Threads

Oct 15, 2026 · 6 min read

Can Claude read your email? Yes, two ways: the Gmail connector in the app, or a scheduled sync into storage you own. …

Read more

The Company Brain That Runs My Company

Oct 14, 2026 · 7 min read

My company runs on one git repository that reads our email, call transcripts and docs, and answers questions with …

Read more