Doc2Sheet
Built and run by Jiawei Zhang · AI automation for small teams

Receipts · invoices · order screenshots

Your paperwork in a spreadsheet that checks its own math.

A vision model copies what's printed. Then plain code adds up every line, checks every total and looks for duplicates. You only look at the documents it flags, with the reason written next to each one.

  • Excel or Google Sheets
  • Runs in your own accounts
  • Fixed price, 3–10 days
GREENLEAF MARKET
9 Harbor Ave, Portland OR
10/05/2026 17:40

1 x Organic Spinach4.99
2 x Greek Yogurt9.98
1 x Chicken Thighs 2lb11.49
3 x Avocado5.97
1 x Sourdough Loaf6.50
1 x Olive Oil 500ml8.87

SUBTOTAL49.80
TAX0.00
TOTAL USD49.80
✕Items add up to 47.80, but the subtotal says 49.80.
✓Subtotal + tax = total
✓Vendor, date and total present
One of six test documents. The $2.00 error was planted on purpose, and the checks caught it.

What gets checked

The AI reads. Code does the arithmetic.

Vision models are good at copying text and bad at noticing when the numbers on the page don't agree. So every number they copy goes through checks written in ordinary code, the same way every time.

Line items match the subtotal

sum(line amounts) = subtotal

Items add up to 47.80, but the subtotal says 49.80

Quantity × price matches each line

qty × unit price = line amount

Line "Window cleaning (per pane)": 3 x 12.50 = 37.50, but the document says 35.00

The total adds up

subtotal + tax + shipping = total

Subtotal + tax + shipping = 354.74, but the total says 345.74

Nothing is entered twice

same vendor + number or date + total

Looks like a duplicate of 02_northwind_office_supply.png (same vendor, number/date and total)

Required fields are there

vendor, date, total not empty

Missing date

Your own rules

anything you can state as a rule

I can add checks for your business, such as vendors that must be on your approved list, amounts over a limit, or dates outside the period you are closing.

Test run · 15 Oct 2026

Six documents, three planted mistakes

All six are made-up documents with fake vendors. Three contain errors put there on purpose. The workflow ran twice, the second time with no cached answers.

DocumentPlanted errorResult
01 Maple Bean CoffeenoneOK
02 Northwind OfficenoneOK
03 Greenleaf Marketitems 47.80, subtotal 49.80flagged
04 Brightpath Cleaning3 × 12.50 printed as 35.00flagged
05 Northwind (rescan)same invoice as 02duplicate
06 ParcelPeak ordernoneOK
3/3planted errors caught
0false alarms on the three clean documents
2runs with the same result

Six documents is a demo, not a benchmark. Before you pay, I run it on a few of your own documents and show you the result.

What you get

A working setup you own

Pricing

Fixed price, agreed before I start

Model costs are billed to your own API account, usually a few cents per document.

Basic

One document type

$120

  • 1 layout, up to 12 fields
  • Totals check
  • Run on 20 of your documents

3 days · 1 revision

Standard

Line items and every check

$350

  • Up to 4 layouts
  • Line items and all checks above
  • Duplicate detection
  • Issue report

5 days · 2 revisions

Premium

Hands-off intake

$800

  • Everything in Standard
  • Picks up new documents from an inbox or Drive folder
  • Deployed to your account
  • Review page for flagged documents

10 days · 3 revisions · 14 days support

Questions

What people ask before automating this

These come from small business owners and bookkeepers asking about the same problem on Reddit.

Do I really have to type every receipt into a spreadsheet?

A freelancer on r/smallbusiness said typing receipts into Excel took hours last month.

No. Drop photos or PDFs into a folder, or forward them to an inbox with the Premium setup. Every field you asked for lands in your spreadsheet: one row per document, one row per line item.

Your part is opening the few documents that get flagged and fixing what the reason says.

Can it record every item on the receipt, not just the total?

People on r/Bookkeeping point out that most receipt apps capture vendor, date, tax and total, and charge extra for line items.

Yes. Line items are part of the Standard package. Description, quantity, unit price and amount go to their own sheet, linked to the document they came from.

Line items are also what make the checks work, because they have to add up to the subtotal. If you want items sorted into your own categories, like food, packaging and cleaning supplies, I can add a category column driven by a list you control. Items it can't match go to review instead of being guessed.

Vendors say 99% accurate. What does that mean for me?

A post on r/Accounting did the math: at 99% per field, about 18% of 20-field invoices have at least one error.

That math is right, which is why I don't quote per-field accuracy. The numbers on an invoice depend on each other, so code can check them against each other: items against the subtotal, subtotal plus tax against the total, quantity times price against each line. A misread number almost always breaks one of those.

Checks can't catch a wrong value that still fits, like a misread date or vendor name. That's why the review page shows each document next to what was read from it. Before you pay, you see the result on your own documents.

I have a backlog of 500 invoices. Can it handle all of them?

Someone on r/excel needed invoice number, vendor, items and total from 500 PDFs, and Copilot wouldn't take that many files.

Yes. It runs over a whole folder, and every answer is cached, so a rerun after a fix costs nothing for documents already read. At a few cents per document on your own API account, a 500-invoice backlog is a model bill of tens of dollars at most.

If all your PDFs come from one system with the same layout, Excel's Power Query may be all you need, and I'll tell you so. This is for mixed layouts, scans and photos.

Why not just ask ChatGPT or Copilot to read them?

Someone on r/Accounting said writing prompts and then fixing the mistakes was another nightmare.

For five invoices, do that. For hundreds, a chat window doesn't remember your fields, doesn't check its own arithmetic and doesn't keep a record of what it read.

Here the model gets the same instructions every time and writes to fixed columns, and code checks the numbers it copied. You fix the flagged documents instead of re-reading every answer.

Why not use Dext, Hubdoc or the scanner in QuickBooks?

Threads on r/Bookkeeping weigh Dext's price, Hubdoc's weaker line items and QuickBooks' built-in scanner.

If one of them fits, use it. They're good at vendor, date, tax and total, and they connect to accounting software.

I'm a better fit when you need line items in your own spreadsheet layout, checks specific to your business, a one-off backlog cleared, or a setup you own outright with no monthly per-seat fee.

Our invoices arrive by email. Can it pick them up from there?

A side-business owner on r/smallbusiness opens every supplier email each week to copy out amounts and dates.

Yes, that's the Premium package. New attachments in an inbox or a Drive folder are picked up, read, checked and added to the sheet. PDFs, forwarded receipts and screenshots all work.

Anything flagged also shows up on the review page with the reason, so you can fix it before it goes anywhere else.

Can it match invoices against our own register and flag exceptions?

An auditor on r/Accounting wanted to upload an invoice register and the PDFs and get exceptions flagged, without paying for an enterprise tool.

Yes, as a custom check. Your register becomes one more input, and each document is matched by invoice number, vendor and amount.

Anything missing from either side, or matched with a different amount, goes to the Issues sheet with both values side by side.

Our system is old and has no API. Will this fit?

A food distributor on r/smallbusiness said the admin assistant spends half her time typing invoices into an old ERP with no API.

The output is a spreadsheet or CSV with columns in whatever order your system imports. Plenty of older systems with no API still take a CSV import, so that's the first thing I'd check with you.

If yours truly accepts nothing, the sheet still turns typing into checking and pasting, and we can look at the next step from there.

Will my invoices be used to train an AI?

A reply on r/Accounting warned that uploading invoices to the wrong AI tool could leak them into training data.

Your documents go only to the vision model, through an API account in your name, and the results stay in your own spreadsheet or cloud folder.

The major model providers say they don't train on API data by default. Before we start, I'll show you the policy of whichever provider you choose. I delete my copies of your sample documents after delivery.

Who builds it

Jiawei Zhang

I spent the last year leading a team of about 20 engineers building an AI data platform. Checking that the data was actually right was my job, and that's the habit I bring to these automations: the model does the reading, and plain code checks its output before anyone trusts it.

  • Backend and data engineering since 2017: Java, Python, Go, TypeScript
  • LLM apps, agents and tool integrations with Claude, Qwen and OpenAI-compatible APIs
  • M.S. Computer Science, Marquette University
  • English and Mandarin
  • More of my work: hire.jiawis.com

Start with a free check

Send me 3 sample documents

Remove anything sensitive first. Tell me which fields you need, where the output should go, and roughly how many documents you get each month. I'll reply with what's realistic, a fixed price and a delivery date.