— Document intelligence layer · accounting workflow · v3

Drop the paperwork.
Ask it anything.

A local workspace that turns invoices, purchase orders, payments, and contracts into clean, linked records, then checks them against each other and lets you question them in plain English. It's built from folders, a handful of small scripts, and one AI agent. This walkthrough takes one invoice through the whole process. Click everything.

Free to download · MIT licensed · ZIP archive

invoice.pdf AI reads vendor_raw: AMZN…vendor: Amazongl: 6400 Suppliesneeds_review: false record.md · source of truth scripts database · the numbers graph · the links "$84.30, fromAMZ-55821." your answer
AI steps1reading the PDF
Questions tested100/100run it yourself: selftest.py
Rebuild 5,000 invoices0.3smeasured
Document types4invoice · PO · payment · contract
00 — step 1, every session

One command tells the agent what to do next.

Every session starts the same way: Claude runs python _system/start.py. It prints whose books these are, what state they're in, and one next step. Claude does that step, runs it again, and repeats until it says Ready. You just say "get started." Click through a first session.

python _system/start.py
01 — follow one invoice

The life of an Amazon receipt.

Step through what happens when one messy receipt lands in the inbox. Watch the record change at each stage. The tags show who does each step: AI script you

02 — four document types

Every document checks the others.

Invoices were only the start. Purchase orders say what was ordered, invoices say what was billed, payments say what was paid, and contracts say what was agreed. Put them side by side and the mismatches show up on their own.

Contract · what was agreed rates · term · renewal · notice period · value cap checks Purchase order what was ordered Invoice what was billed Payment what was paid po_no pays
click a link in the map: po_no, pays, or checks

Break something. Watch the report catch it.

Every rebuild writes 03_data/exceptions.md. Flip a problem on and see what lands in it. Exceptions are reported, never silently fixed.

03 — the folders are the system

Every folder has one job.

There's no app to learn. Each folder holds one kind of thing and carries a CONTEXT.md that tells the agent what to do there. Click a folder.

04 — standardization playground

Messy names in. One name out.

Type a vendor name the way it's printed
confidencereview line · 0.80
_shared/vendors.md · your approved list

The cleanup can only pick from your list. It can't invent a new spelling, which is what makes the names consistent. When a name doesn't match, it gets flagged instead of guessed.

add a spelling once, it's fixed forever.
05 — the human gate

A flag just went up. What do you do?

The Amazon receipt was flagged: "Dental chair cushion" didn't match any account. It's held out of the database until a person clears it. Pick a fix.

06 — ask questions

Two views of the same records.

The database does the math. The graph follows connections. The agent picks the right one for each question and always cites invoice numbers.

what the agent runs
Pick a question above.
what you get back

vendorclientinvoice / POpaymentcontractline itemGL account
click a node in the graph

Monthly bookkeeping

Invoice nodes are named Vendor/Number, so two vendors can both use "1001" without getting mixed up.

07 — close the month

A controller's checklist, already run.

Every rebuild also asks the questions a controller asks at month-end: should this have been paid, which period does it belong to, and does it tie to the bank? Click through the checklist. Each answer comes from the built-in test client.

0 / 0 checked
what the agent runs
Pick a check above.

what you get back

Three new things to feed it

RCV-*.md

Goods receipts

Packing slips and receiving reports. They prove goods arrived, so a PO, a receipt and an invoice can be matched three ways.

BANK-*.csv

Bank exports

The statement as a CSV, with money out as negative numbers. Payments get matched to it: cleared, outstanding, stale or void.

_shared/*.md

Four short lists

Periods (open or closed), approval limits by role, budgets, and extra vendor columns for 1099s, W-9s and bank changes. You own them; the agent never edits them.

08 — guardrails

Six things it refuses to do.

duplicate invoices

The same bill twice? Refused.

Each invoice is unique by vendor + number. A resent copy never double-counts.

invoices in database: 1
history

Closed periods stay closed.

You change the chart of accounts so "payroll" points at 6500. What happens to last month's Acme invoice?

math check

Totals that don't add up get flagged.

Drag the printed total. If the line items don't sum to it, the invoice is held for review.

wrong client

Another client's bill? Held.

One workspace holds one client's books. A document addressed to anyone else is held for review instead of loaded, so a mis-pointed folder can't mix two clients' books.

LAW-0042.md ⚑ addressed to 'Oak Street Law', but this workspace is Riverside Dental
originals win

A resent copy never replaces the original.

When the same bill shows up twice, the original file is kept and the copy is refused, and both names are reported.

Duplicates refused: 1 - INV-1001: kept INV-1001.md, refused INV-1001-copy.md
the client's files

Read-only. Always.

Point it at an existing SharePoint folder and it only reads. It never moves, renames, or edits their filing system. Each record points back to its original file.

source_file: 2026/Amazon/amazon-order.pdf ✓ original untouched
09 — install it

Up and running in about 5 minutes.

Tick each step as you go. Nothing extra to install beyond Python and Claude.

step 01

Check Python 3

Open PowerShell (Windows) or Terminal (Mac) and run:

python --version

Any 3.x works. The scripts use only what ships with Python.

step 02

Unzip the workspace

Put invoice-intel somewhere local, like Documents. Don't put the workspace itself inside SharePoint.

step 03

Open it in Claude Code

From the Claude desktop app, open the folder. Or from a terminal:

cd Documents\invoice-intel
claude

Say "get started." Claude runs start.py first, asks whose books these are, and walks you through every step from there.

step 04

Load the client's lists

Replace the samples in _shared/ with the client's real vendors and chart of accounts. Plain tables, edit in any text editor.

step 05 · optional

Connect a SharePoint folder

Sync the library, right-click it, choose Always keep on this device, then paste its path into _shared/settings.md:

inbox_path: C:\Users\Jane\Riverside Dental\Invoices - Documents
step 06

Run one month first

Tell Claude "process the inbox" on a month of documents. Check the accuracy before you run years of history. Use the strongest model for contracts, and a person confirms every one.

0 of 6 done

10 — privacy

Check the product and agreement before using client data.

The workspace files stay on your computer, but Claude Code sends the content it reads to the connected Claude service. Handling depends on the exact product, account settings, contract, and configuration.

Summary checked against Anthropic's published documentation on October 5, 2026. Terms and eligibility can change; verify the current agreement and setup with Anthropic and your privacy or legal lead. This page is not legal advice.

Consumer training and retention · Commercial training · Commercial retention · HIPAA / BAA eligibility

11 — check yourself

Nine questions. No pressure.

— cheat sheet

What to say to Claude.

every sessionGet started.

Runs start.py: the client, the state, and the one next step.

dailyProcess the inbox.

Extracts new documents, cleans them, lists anything flagged.

after fixing a listRe-run standardize.

Clears flags your fix resolved. History stays put.

anytimeWhat's the status?

What's unprocessed, what's waiting on review, what's loaded.

numbersWhat did we spend on software in Q3?

Answered from the database, with invoice numbers.

connectionsWhich vendors bill us for bookkeeping?

Answered from the graph.

payablesWhat's still open with Acme?

Paid, partial, open, overpaid, from payments applied to invoices.

contractsWhat renews in the next 90 days?

Notice deadlines, with the clause cited.

exceptionsWhat doesn't line up?

Over-billed POs, rates above contract, overpayments.

deliberately, before closeRe-code everything with --all.

The only way history changes.

Free · open source · MIT license

Take the workspace with you.

Download the public repository as a ZIP, unzip it locally, then open the folder in Claude Code to get started.

Click here to download the repo for free

The repository includes sample records. Review the privacy guidance before using client data.

copied