System Overview

Overnight Bookkeeper

An AI-powered bookkeeping assistant that categorizes your transactions while you sleep, and learns your preferences over time.

What does the Overnight Bookkeeper do?
Every night, it pulls your new bank and credit card transactions from QuickBooks, figures out where each one belongs in your chart of accounts, and either posts it automatically or flags it for your review. No manual data entry. No Plaid connection needed.
🏦

Pulls from QuickBooks

Bank transactions, credit card charges, and payroll journal entries are already flowing into QB automatically. The bookkeeper reads them from there.

🧠

AI categorizes each one

An AI model reads each transaction, looks up the vendor's history, checks the chart of accounts, and picks the right category.

Posts or parks

If the AI is confident, it posts the transaction. If anything is uncertain, it parks it in your review queue with an explanation of why.

📈

Gets smarter over time

Every time you file a parked transaction, the system learns. After a few corrections, that vendor starts getting auto-posted.

How it connects to QuickBooks
The system uses QuickBooks' own API to read and write transactions. There's no third-party bank connection like Plaid involved — your bank feeds already flow into QB on their own.
1

Your bank sends transactions to QuickBooks

This already happens automatically through QB's bank feeds. Payroll transactions and journal entries also flow in from your payroll provider. Nothing changes here.

2

The bookkeeper reads new transactions overnight

Each night, the system connects to your QB account via the official API and pulls any uncategorized transactions that came in during the day.

3

AI processes each transaction

For each one, the AI model receives the transaction details (vendor, amount, date, description) along with your chart of accounts and that vendor's filing history. It decides the best category.

4

Confident ones get posted back to QB

If the AI is sure about the categorization, it writes the transaction directly into QuickBooks with the correct account code. Your books are updated before you wake up.

5

Uncertain ones go to your review queue

If anything is ambiguous — a new vendor, an unusual amount, an unclear description — the transaction gets parked in the dashboard for human review. Nothing questionable is ever posted without your approval.

How it decides: post vs. park
Every transaction runs through a 10-signal scoring system. Think of it like a checklist where each item gets a green, amber, or red mark. The overall score determines whether the system is confident enough to post automatically.
Vendor history
Has this vendor been filed before? How many times? How consistently?
Amount typical
Is this amount in the normal range for this vendor?
Description match
Does the transaction description match known patterns?
Category confidence
How sure is the AI about which account this belongs to?
Timing pattern
Is this a recurring transaction that shows up regularly?
Account ambiguity
Could this reasonably go in more than one account?
Amount size
Larger amounts get more scrutiny — higher stakes, more caution.
New vendor flag
First time seeing this vendor? Extra caution until a pattern forms.
Cross-book pattern
Do other books file this vendor the same way?
Anomaly check
Does anything about this transaction look unusual compared to the norm?

Auto-post

All signals are green or amber. The system has seen this vendor before and knows where it goes. Posted automatically to QuickBooks.

Example: Your regular $127.50 monthly charge from Adobe — filed to "Software Subscriptions" every month for 6 months.

Parked for review

One or more signals are red. Something is unfamiliar or ambiguous. Held in the dashboard with an explanation so you can decide.

Example: A $3,200 charge from a vendor you've never seen before — could be equipment, could be a contractor payment.
How it gets smarter over time
The system isn't static. Every human decision teaches it something. After just 5 consistent corrections for a vendor, that vendor starts getting handled automatically.
Transaction parked
Human reviews & files
Vendor history updated
Next time: auto-posted
A

Day 1: Cold start

The system has no history. Most transactions get parked for review. You (or your CPA) provide an Excel file with historical categorizations to bootstrap the system — this gives it a head start instead of learning from zero.

B

Week 2-3: Building confidence

As you file parked transactions, the system records each decision. Common vendors start accumulating history. The park queue begins shrinking.

C

Month 2+: Cruise control

Most regular vendors have 5+ consistent filings and are now auto-posted. Your review queue is mostly new vendors and genuine edge cases that deserve human judgment. The system is doing the heavy lifting.

The 5-Filing Rule (I10): Once a vendor has been filed to the same account 5 times in a row by a human, the system marks that vendor as "auto-post eligible." This threshold is high enough to avoid learning from mistakes, but low enough that you see results within weeks.
The AI model layer
The system uses a large language model (LLM) to understand transaction descriptions and match them to account categories. Think of it as a very experienced bookkeeper reading each transaction and making a judgment call.
1

What the AI sees for each transaction

The model receives a structured prompt containing:

The transaction itself: vendor name, amount, date, memo/description

Your chart of accounts: every account category available for this book

Vendor history: how this vendor has been filed before, how many times, and how consistently

Filing patterns: preferences and patterns specific to this book
2

What the AI returns

The model responds with a structured answer (in strict JSON format, not freeform text) containing the recommended account, a confidence score, and a brief reasoning. This structured output format is critical — it must be machine-readable every single time, which is why model reliability matters so much.

3

The scoring system takes over

The AI's recommendation is just one input into the 10-signal scoring system. Even if the AI is confident, the scoring system might still park the transaction if other signals raise concerns (like an unusually large amount for that vendor).

What it costs to run per transaction
AI models charge by the amount of text they process (measured in "tokens" — roughly 1 token per word). Here's what each model costs for a typical transaction categorization.
Model Per Transaction 500 Txns / Month Reliability Verdict
Claude Haiku 4.5 Anthropic — $0.80 / $4.00 per M tokens $0.0012
$0.60 99.5% Best for routine transactions
GPT-4.1 mini OpenAI — $0.40 / $1.60 per M tokens $0.0006
$0.28 ~98% Cheapest reliable option
Llama 4 Maverick Meta (open-weight) — ~$0.27 / $0.85 per M tokens $0.0004
$0.18 85-98% Cheapest, but inconsistent output
Muse Spark 1.1 Meta — $1.25 / $4.25 per M tokens $0.0017
$0.84 Untested Brand new (July 9) — watch list
Claude Sonnet 4.6 Anthropic — $3.00 / $15.00 per M tokens $0.0045
$2.25 99.8% Best accuracy for hard cases
Claude Opus 4.6 Anthropic — $15.00 / $75.00 per M tokens $0.0225
$11.25 99.9% Overkill for this use case
Assumptions: ~1,000 input tokens per transaction (vendor name, amount, description, chart of accounts context, vendor history). ~100 output tokens (account code, confidence score, reasoning). "500 transactions/month" is typical for a small business with one bank account and one credit card.

Recommended: Tiered Approach

Use a cheap, fast model for the easy transactions (known vendors, recurring charges) and a smarter model for the hard ones (new vendors, ambiguous descriptions, large amounts).

In practice, about 80% of transactions are routine and 20% need more careful analysis.

Cheap tier (80%): 400 txns x $0.0012 (Haiku) = $0.48/mo
Smart tier (20%): 100 txns x $0.0045 (Sonnet) = $0.45/mo
Total: $0.93/month for 500 transactions

That's less than a dollar a month in AI costs, with the highest accuracy where it matters most.
What keeps it from making mistakes
Bookkeeping errors have real consequences. Here's how the system is designed to prevent them.

Park when unsure

The default behavior is caution. If any signal is unclear, the transaction gets parked for human review. It's better to ask than to guess wrong.

Structured output only

The AI must respond in a specific, machine-readable format every time. If the response doesn't match the expected structure (which happens rarely with the right model), the transaction is automatically parked.

Crash-safe state machine

If the system crashes mid-run, it picks up exactly where it left off. No transactions are lost or double-posted. Each transaction moves through states: PARKED → PREPARED → SENT, and each transition is recorded.

Human always has final say

Even auto-posted transactions appear in the daily summary. If something looks wrong, you can reverse it. The system proposes; you dispose.

Daily proposal-vs-actual reports

In shadow mode, the system runs but doesn't post anything. Instead, it generates a report comparing what it would have posted vs. what was actually filed. This lets you validate accuracy before going live.