Books onAutopilot
An autonomous accounting system. A cron-driven Claude Code agent ingests invoices from four channels, books them under the correct German VAT rule, reconciles them against the bank feed, and forecasts the next quarter — all while Postgres holds the source of truth and a human approves every entry.
Bookkeeping you can't outsource — but shouldn't do yourself
Small businesses live in a paper-cut economy: invoices arriving by email, portal links and PDF dumps, German VAT rules with a dozen edge cases, and a monthly P&L that takes a weekend to produce. Generic OCR “automate my receipts” tools cover the easy 80% — the missing 20% is where the books actually break.
Six Steps,No Babysitting
Every step is a deterministic Python tool. Claude is the orchestrator, not the source of truth — Postgres is.
Ingest
Cron polls Gmail IMAP for unread invoices, watches an iCloud dump folder, and listens for Stripe, RevenueCat and Clockify webhooks. Each artefact is fingerprinted with a SHA-256 of its raw bytes.
Split & OCR
Multi-invoice PDFs are split per page so a five-vendor email becomes five voucher candidates. Each page is OCR'd, fingerprinted again, and matched to the vendor cache.
VAT Booking
A domain-specific classifier picks one of ten enumerated VAT treatments. Reverse charges (§13b), inner-community supplies (§4 Nr. 1), Kleinunternehmer, reduced rates and Versicherungsteuer all have explicit rules — no LLM guessing.
Reconcile
Bank transactions from Qonto (mirrored via sevDesk) are matched to vouchers within a ±4 day, ±5% window. Receipts that should exist for a transaction but don't are surfaced as missing items.
Forecast
Three forecasting methods (trailing average, per-month historic, Clockify pipeline) run for three scenarios (conservative, expected, optimistic). Cash runway, projected P&L and tax estimates land in forecast_runs.
Approve
A Next.js dashboard shows the queue. One click writes to sevDesk, refreshes the views, and the agent's job is done. Humans stay in the approval loop — Claude never closes the books unattended.
It isn't the agent. It's the German VAT code.
A generic invoice processor works until it meets a §13b reverse charge from a US SaaS vendor, a §4 Nr. 1 inner-community acquisition with a valid VIES VAT-ID, or a Kleinunternehmer invoice with no VAT at all. Each treatment is encoded as a typed value with explicit booking rules — auditable, testable, and readable by your tax advisor.
Three Scenarios.Always.
Most accounting tools give you one number and call it a forecast. This one runs three methods — trailing average, per-month historic pattern, and Clockify pipeline — and projects each under conservative, expected and optimistic assumptions.
Results land in the forecast_runs table so trends can be compared over time. Cash runway, monthly P&L, and quarterly tax estimates all use the same underlying view — no spreadsheet drift.
Claude orchestrates. Postgres remembers.
Each cron fires a fresh Claude Code instance — no daemon, no drift. State lives in Supabase Postgres. Tools are Python scripts invoked by the agent via Bash, so every step is auditable and testable in isolation.
Want a systemlike this?
Tell us what you're tracking — and what you're not. We'll map out an agent that handles the boring half so you can stop dreading the close.