From a stack of PDFs to a checked spreadsheet, without retyping
Get 10 to 20 PDFs into one spreadsheet today: an AI assistant fills one row per file, and a few formulas and a total you worked out yourself catch its mistakes.
Somewhere in most organizations, someone is retyping the same fields from a pile of PDFs: invoices and receipts in finance, purchase orders and delivery notes in operations, application forms in HR, figures from published reports for an analyst, grant reports at a nonprofit, standard forms at a public office. Retyping is slow and leaves typos. An AI assistant reads the same PDFs faster and makes different mistakes: a confident value from the wrong document, or a plausible guess where the page said nothing.
So this method doesn’t ask you to trust the assistant. You set the columns before it sees a page, work out a control total on your own (an old bookkeeping habit), and let a few formulas and a sample find the errors. As in summarizing a long contract page by page, every value arrives with the page it came from, so you can check any cell against its source.
By the end of this you’ll have 10 to 20 documents in one spreadsheet, reconciled to a total you worked out yourself, an extraction prompt saved for the next batch, and your own measure of how long a batch takes now compared with retyping it.
What you’ll be able to do
- Finish today with one spreadsheet of 10 to 20 documents: one row per document, the file name and source page in every row, and a sum that matches your control total.
- Catch the assistant’s usual slips, such as a value from the wrong file, a swapped day and month or a skipped document, with a control total, a few check formulas and a sample.
- Run the next batch from a saved column spec and prompt, already corrected for what this batch taught you.
What you need
- A chat assistant (Claude, ChatGPT, Gemini, Copilot or another) on an account that lets you attach PDFs or paste text.
- Excel or Google Sheets.
- 10 to 20 PDFs of the same kind, and about an hour the first time.
- For a first run, the practice batch further down: five made-up invoices with mistakes you plant yourself, so you know in advance which flags should appear. Public documents work too, such as award notices from a government procurement portal. Before real invoices or forms with people’s details go into a chat, read Before you upload a client document.
Steps
-
Write the column spec. One line per column: its name, the format you want and an example. Start with File name, end with Pages and Notes, and put the fields you retype today in between (for application forms, for example, Name, Date received, Position and Years of experience). Ask for dates as YYYY-MM-DD: 05/09/2026 is September 5 in Mexico or Spain and May 9 in the United States, while 2026-09-05 reads one way only. Ask for amounts as plain numbers, without currency symbol or thousands separator, using your spreadsheet’s decimal separator. To see which one that is, type
=1/4in an empty cell: it shows 0.25 or 0,25. -
Check that the PDFs contain text. Open each one and try to select a sentence, or search for a word you can see. If you can’t, the file is a scanned image: read Scanned PDFs below first. Count the files and write the number down.
-
Get a control total that doesn’t come from the assistant. Before the assistant reads anything, take one number from somewhere else: the invoice totals on a supplier statement or in your accounting system, the batch total on an approval sheet or, for practice, the printed totals added up on a calculator. For documents without amounts, use a count or the sum of a number field, such as the quantities on delivery notes.
-
Extract in batches of five. Start a new conversation, paste the extraction prompt with your column spec, attach five PDFs and send. Five rows are quick to check, and if values cross between files you redo five rows instead of twenty (if it keeps happening, drop to two files per message, or one). If the assistant won’t take five files, or says one is too long, attach fewer, or paste each file’s text under its name with a line such as
--- Page 2 ---before each page. Note the time when you send the first batch. -
Paste into the sheet. Type the column names in row 1, click A2, copy the code block the assistant returned (most chat apps put a copy button on it) and paste. Tab-separated rows usually spread across the columns on their own. If everything lands in column A, select that column and use Data > Split text to columns in Google Sheets, or Data > Text to Columns in Excel, choosing Delimited and then Tab (both checked in October 2026). If the rows still won’t split, the tabs were lost in the copy: ask for the same rows with | between values and split on | instead (a custom separator in Google Sheets, Other in Excel). Paste each new batch below the last row.
-
Add the check formulas. Put the three row formulas below in the first empty columns and copy them down, then add the two one-cell checks. Every flag is a row to open, the row count must equal your file count, and the difference from your control total must be zero. If your columns differ, Describe the formula you need in plain words shows how to get the formulas rewritten and test them.
-
Open one document in five, plus the document behind every flagged row. Compare each cell of those rows with the page named in Pages, and write “checked” in Notes as you go. When the count and the total match and the sample comes back clean, you have good grounds to trust the rows you didn’t open.
-
Fix the errors, then fix the prompt. Correct each wrong cell from the PDF and look for the pattern: for example, the assistant taking the due date instead of the issue date on one supplier’s layout. Add a line to the spec that rules it out (“Date: the issue date, not the due date”), use it for the next batch, and save the final version with your other prompts (Keep your best prompts in one place suggests where). Then stop the clock. If you don’t know how long the same batch takes by hand, time yourself retyping two documents and multiply. That’s your own before and after.
Templates to copy
The column spec for invoices. For other documents, keep the first line and the last two and swap in your own fields. The example values are made up:
File name | exactly as attached | supplies-sept-04.pdf
Invoice number | as printed | F-1043
Date | issue date, YYYY-MM-DD | 2026-09-04
Supplier | name as printed | Example Office Supplies
Subtotal | number, no symbol or thousands separator, decimal [point or comma] | 1250.00
Tax | same format | 100.00
Total | same format | 1350.00
Currency | three-letter code | USD
Pages | page of the file for each value, first page = 1 | all p1
Notes | anything unusual, or leave empty | total corrected by hand
The extraction prompt:
Attached are [five] PDFs. Each one is a separate [invoice].
Read every page of every file before you answer.
Give me one row per file, inside a code block, with the values separated
by tab characters and no header row. Use these columns, in this order:
[paste your column spec]
Rules:
- Copy each value as printed. Change only the format of dates and amounts,
as the spec says. Don't calculate, correct or fill in anything.
- If a value isn't in the document, or you can't read it, write NOT FOUND.
Never guess.
- Put the file name in every row, exactly as attached.
- Pages: the page of the file each value came from, counting the first
page as 1. If they all came from one page, write "all p1".
- The documents write dates [day first / month first].
After the code block, list any file or page you couldn't read, and any
value you weren't sure of, with the file name and the reason.
The check formulas, for data in rows 2 to 21 and the columns of the spec above. Change the letters if your columns differ:
Parts add up to the total (column K, copy down):
=IF(COUNT(E2:G2)<3,"Check amounts",IF(ROUND(E2+F2-G2,2)<>0,"Check total",""))
Date read as a date and inside the period (column L, copy down;
change the two dates to your period):
=IF(ISNUMBER(C2),IF(OR(C2<DATE(2026,9,1),C2>DATE(2026,9,30)),"Outside period",""),"Check date")
File or invoice number repeated (column M, copy down):
=IF(COUNTIF(A:A,A2)>1,"Repeated file",IF(COUNTIF(B:B,B2)>1,"Repeated number",""))
Rows against files (one cell; must equal your file count):
=COUNTA(A2:A21)
Sum against the control total (one cell; must be 0):
=SUM(G2:G21)-[your control total]
If your invoices carry discounts or withholdings, give each a column and include it in the first formula. If your spreadsheet shows function names in another language or puts semicolons between arguments, ask your assistant to convert the formulas, then test them on a row whose answer you already know.
A practice batch with known mistakes
This prompt writes five made-up invoices with five planted problems, so you know which flags should appear before you start.
Write five made-up invoices from five made-up suppliers to a made-up
company. Use obviously fictional names. Each one has an invoice number,
issue date, due date, three to six lines with quantity, unit price and
amount, a subtotal, a tax line and a total.
Make them a little messy, the way real ones are:
- date four in September 2026 and one in August 2026;
- on two, write the dates as day/month/year with a day of 12 or less,
and on the other three, write the month as a word (4 September 2026);
- on one, write amounts with a decimal comma (1.250,00);
- leave the invoice number off one;
- on one, make the total 10.00 more than subtotal plus tax.
Start each invoice with its own heading so I can copy them one at a time.
Paste each invoice into its own document and save it as a PDF (in Word, File > Save As or Save a Copy, then PDF; in Google Docs, File > Download, then PDF). Add up the five printed totals on a calculator for your control total. Then follow steps 4 to 7 in a new conversation, so the assistant reads the files instead of remembering what it wrote. Set the prompt’s date line to day first; the date formula already covers September 2026.
You’re done when the sheet shows “Outside period” on the August invoice, “Check total” on the inflated total and NOT FOUND for the missing number, with the sum matching your control total. Any other flag is a real extraction error, caught by the checks.
What can go wrong and how to check
Values from the wrong file
In a batch, an assistant can put one document’s total in another’s row. The file name in every row lets your sample catch it, and a control total that is off by exactly one document’s amount points the same way.
Amounts and dates read the wrong way
In Spain, amounts are usually written 1.234,56; in Mexico, as in the United States, 1,234.56. Misread, 1.234,56 can become 1.234 or 123456: the first formula flags amounts that pasted as text, and the control total catches the rest. For dates, fill in the prompt’s line about date order. Within a one-month period a swapped day and month almost always lands outside the period, where the date formula flags it; over a longer period, the sample has to catch it.
Scanned PDFs
If you can’t select the text, each page is a picture. Some assistants read those pages, some don’t, and some skip one without saying so. If your PDF software has text recognition (OCR), run it first, and put every scanned file in your sample. A misread digit in an amount often breaks the first formula, because the parts stop adding up.
Documents skipped or guessed
A file the assistant couldn’t read can simply vanish from the output; the row count catches that. And despite the rule, an assistant sometimes fills a blank with something plausible, such as the due date in the Date column. The sign is a value that isn’t on the page its Pages entry names.
When extraction is the wrong tool
If the same sender sends you the same kind of document every month, ask for the data as a spreadsheet or CSV export: the system that produced the PDF already holds it, and an export has no reading errors.
Where to go next
Next month you start from the saved spec and prompt, already corrected for this batch’s slips. The table itself probably has a few rough edges, such as one supplier spelled three ways, stray spaces or a name in capitals. Clean up a messy contact list with formulas the assistant writes for you fixes that kind of mess, and the method works the same on a column of supplier names. With clean rows, A monthly summary you build once and refresh each month turns them into a pivot table and chart that you refresh by pasting in the next batch. And if your PDFs are forms that colleagues fill in, A request form that fills a spreadsheet gets the next batch to you as rows, with nothing left to extract.