Put every PDF in one folder. Decide the columns before you start — date, supplier, net, tax, total, currency. Run one extraction over the whole folder rather than a file at a time. Then check the folder's total against your card statement before you send it on, because a receipt that was skipped is invisible in a spreadsheet.
The steps
- One folder, flat. No subfolders by supplier, no renaming. The folder is the unit of work, this quarter and every quarter after it.
- Write the header row before you extract anything. Date, supplier, net, tax, total, currency, and a column holding the source filename. That last one takes a minute and saves an hour: every number in the sheet can be traced back to the page it came from.
- Extract the whole folder in one pass. Doing it a file at a time is how quarters get half-done. It also means the run can be repeated, which a sequence of manual uploads cannot.
- Normalise the dates and the currency on the way in. ISO dates, one currency column, no "£" inside a number cell. A spreadsheet that has to be fixed before it can be summed is not finished.
- Reconcile twice. Row count against the number of PDFs in the folder. Sum of totals against the card statement for those dates. Either one being off is a real finding, and this is the only step that catches a misread decimal point.
- Keep the output next to the input. Next quarter's job is "run it again", not "work out what I did last time".
The three routes, honestly
| Route | What it costs | Where the receipts go | Second quarter |
|---|---|---|---|
| A converter site | Per page or per month | Uploaded to them | Same work again |
| A desktop OCR app | A licence | Stays on the Mac | Same work again |
| A script or agent on your own machine | An hour to set up | Stays on the Mac | Run it |
The converters are good at the thing they do. The reason they do not end the job is in the last column: they are built around a file you drop in, so every quarter starts from zero, and the columns you decided on in March exist only in your memory by December.
What actually goes wrong
- Multi-page invoices. A total on page three with line items on pages one and two. Extraction that assumes one receipt per file quietly reports the wrong number.
- Duplicates. A supplier emails the receipt and then the invoice. Both land in the folder, both are real documents, only one is a cost. Deduplicate on supplier plus total plus date, not on filename.
- Photographs. A digital PDF has text in it. A photo of a receipt in a PDF wrapper does not, and needs real OCR. These two look identical in Finder and behave nothing alike.
- Tax that does not add up. Rounding per line versus per invoice differs by pennies, and an accountant will notice. Take the tax figure the receipt states rather than calculating it.
- Foreign currency. The receipt's amount and what your card was charged are two different numbers, on two different dates. Decide which one the sheet holds, and say so in the header.
The part that is worth automating
Not the extraction. The extraction is a solved problem and a dozen sites will do it this afternoon. What is not solved is that the whole thing has to exist again in January, with the same columns, over a folder that now has different suppliers in it.
That is the shape of Nico's receipts app: 37 PDFs read, one CSV out, in a folder of its own with a data folder that survives every run — so the quarter after this one is a sentence, not a project. And the receipts never leave the Mac, which for a folder full of your own invoices is the easiest part of the decision.
← All notes