Clear the backlog: 10 Codex prompts for your own files
receipt-pile
a year of receipts turned into one spreadsheet
How to use it
Codex only. Nothing else to install. Save the prompt as a file and run it, or paste it straight into Codex.
codex exec -C "your folder" - < the-prompt.md
It does the whole job in one pass on your own machine and writes the result into the folder you pointed it at.
The prompt
--- name: receipt-pile description: Turns a folder of receipt photos and PDF invoices into one spreadsheet of date, supplier, net, VAT, gross, category and source file, leaving anything unreadable blank and listed. --- # A year of receipts turned into one spreadsheet You point it at the folder of receipts. It gives you one spreadsheet your bookkeeper can work from, plus a named list of every file it could not read. Run it from the folder holding the receipts: ``` codex exec -C "the folder" - < the-prompt.md ``` ## What it does 1. **Count the pile before reading any of it:** list every PDF, JPG, PNG, HEIC and TIFF in the folder and its subfolders, and write filename, size and page count to `receipts-inventory.csv`. That count is the number the finished spreadsheet must reconcile to, so a file that goes missing halfway through the run cannot go unnoticed. 2. **Read the document, never the filename:** for a PDF, try the text layer first. If the PDF has no text layer it is a scan, so treat it as an image and read it visually. A file named `esso-march.pdf` may be a Shell receipt from April. The filename is a clue for the review list and is never a source of data. 3. **Pull seven fields and nothing else:** date, supplier, net, VAT, gross, category, source filename. Take the date from inside the document, using the tax point or time of supply where the document shows one and the invoice date otherwise. Never use the file's created or modified date, which is the date the photo was taken or the file was copied, not the date of the purchase. 4. **Never invent a VAT figure:** if the document prints a VAT amount, copy the printed figure exactly. If it prints a gross and a VAT rate but no VAT amount, you may derive net and VAT, and the row must be marked `derived` with the rate recorded. If it prints neither a VAT amount nor a rate, leave net and VAT blank and mark the row `no VAT shown`. A number that looks right is worse than a blank, because a blank gets checked and a plausible number does not. 5. **Reconcile every row to the penny:** net plus VAT must equal gross. Where the document also shows shipping, service or a tip, those must be inside that total too. If it does not reconcile, do not adjust any figure to make it fit. Mark the row `does not reconcile`, record all three numbers as printed, and move on. 6. **Check whether the document could actually support a VAT reclaim, and record the answer:** HMRC's manual VATREC5010 sets what a full VAT invoice must show under regulation 14(1) of the VAT Regulations 1995, including a unique sequential number, the time of supply, the date of issue, the supplier's name, address and VAT registration number, the customer's name and address, a description of the goods or services, the quantity or extent, the VAT rate and amount payable excluding VAT, and the total VAT chargeable. A retail supply of £250 or less including VAT may instead be a simplified invoice, which VAT Notice 700/21 says needs only the supplier's name, address and VAT registration number, the time of supply, a description, and for each VAT rate the total payable including VAT and the rate charged. Add one column, `vat_invoice`, holding `full`, `simplified`, or `no VAT number shown`. Do not drop the row either way. Deciding what is reclaimable is the accountant's job, not this skill's. 7. **Categorise from a fixed list agreed once, at the start:** ask for the list of categories before reading anything, or use the ones already present in last year's spreadsheet. Never invent a category to suit a receipt. Anything that does not fit goes to `Uncategorised`, which is a question for the owner, not a failure. 8. **Flag possible duplicates, remove nothing:** the same supplier, the same date and the same gross is a possible duplicate, and so is a photo and a PDF of one receipt. Flag every member of the set with a shared duplicate group number and leave all of them in the spreadsheet. A genuine second identical purchase on one day is common in a small business, so this is a question, not a finding. 9. **Deliver one file with two sheets, then the summary:** sheet one is the rows read, sheet two is every file that could not be read, with its filename and the reason, in plain words such as "photo too blurred to read the total" or "handwritten, no printed total". Then print: files in, rows complete, rows flagged, files unreadable, date range covered, and the totals for net, VAT and gross. ## Then it checks 1. Rows read plus files listed as unreadable equals the file count in `receipts-inventory.csv`. If they do not match, stop, because a receipt has been silently dropped. 2. Every row's source filename exists on disk, and no filename appears on two rows unless the file genuinely holds more than one receipt and the report says so. 3. Every row that has both a net and a VAT figure reconciles to its gross to the penny. 4. No row carries a VAT figure that was not printed on the document, unless it is marked `derived` and the printed rate is recorded alongside it. 5. Every date falls inside the period requested, and none is in the future. 6. Recompute the summary totals from the finished sheet rather than carrying them over from the reading pass, and confirm they match. A total typed by hand from a reading pass is not evidence of what is in the sheet. Any check fails: name it, redo that step once. Failed twice: say what is wrong and stop. ## Rules - Public information only. - Never invent a fact, a number or a quote. - This prepares a spreadsheet for a bookkeeper or an accountant to check. It is not tax advice, it is not a VAT return, and it does not decide what is claimable or deductible. The VAT rules it applies are United Kingdom rules, so if the receipts are not UK receipts, say so and stop before applying any of them. - Never invent, round or back-calculate a VAT figure the document does not show. Blank and listed beats a plausible number, every time. - Read only. Never rename, move, edit or delete a source receipt, and never delete a suspected duplicate. - Keep the originals after the spreadsheet exists. HMRC's guidance in VAT Notice 700/21 is that you must generally keep all your business records for VAT purposes for at least six years, and a spreadsheet is not a substitute for the invoice. ## Built from - Receiptor-AI/bookkeeping-skills, https://github.com/Receiptor-AI/bookkeeping-skills, 4 stars read from api.github.com on 7 September 2026: its `receipt-processing` skill file gave the minimum field set, the five validation checks, and the rule that a record failing a required-field check is routed to a review queue rather than having its missing data fabricated. - openaccountant/skills, https://github.com/openaccountant/skills, 66 stars read from api.github.com on 7 September 2026: 44 open source financial skills. Took its principle that every skill must also work with no database behind it, from exported CSV files alone. Its tax categories were deliberately not taken, because they are United States categories such as IRS Schedule C and 1099 contractors. - ComposioHQ/awesome-claude-skills, https://github.com/ComposioHQ/awesome-claude-skills, 74,627 stars read from api.github.com on 7 September 2026: its Invoice Organizer entry and skill file gave the "maintains originals" rule and the idea of producing a CSV for the accountant as the deliverable rather than a tidy folder. - HMRC internal manual VATREC5010, "Details which must be shown on a full VAT invoice", https://www.gov.uk/hmrc-internal-manuals/vat-trader-records/vatrec5010, last updated 16 January 2025: the exact list of required fields in step 6, and the citation of regulation 14(1) of the VAT Regulations 1995. - Record keeping (VAT Notice 700/21), https://www.gov.uk/guidance/record-keeping-for-vat-notice-70021: the £250 including VAT threshold for a simplified invoice, the shorter field list a simplified invoice needs, and the six year retention period quoted in the rules above.
Built from the best public work on this
Sources for receipt-pile
Every source below was fetched on 7 September 2026. Star counts were read from
`https://api.github.com/repos/<owner>/<repo>` on that date and are printed exactly as returned.
Receiptor-AI/bookkeeping-skills
https://github.com/Receiptor-AI/bookkeeping-skills
4 stars, 1 fork, MIT, last pushed 3 June 2026.
A small open source set of bookkeeping skills published by a receipt capture company. Its README
states the intent plainly: "controlled bookkeeping support, not autonomous tax filing or
unsupervised accounting-system mutation". The `skills/receipt-processing/SKILL.md` file was read in
full.
What was taken. Four things. First, its minimum field set from its normalisation step, which
requires `vendor_name`, `date`, `total_amount` and `currency` on every record, with `subtotal`,
`tax_amount`, `receipt_number` and `confidence` captured where available. That is where
receipt-pile's seven columns come from, trimmed to what a small business owner will actually use.
Second, its validation list: completeness, math, date sanity, duplicate detection and currency
handling. Its wording that "subtotal + tax + shipping + tip should reconcile to total" became step 5,
and its wording that a "transaction date should be plausible and not in the future" became check 5.
Third, its duplicate rule, which matches on "vendor, amount, date window, and receipt number if
available", became step 8, softened to a flag rather than a removal. Fourth, and most important, its
instruction that a record failing a required-field check is routed "to a review queue rather than
fabricating missing data", which is the whole basis of step 4 and the second rule.
One more line was taken from its reference notes, about meals and business purpose: "do not guess.
Leave the field empty and flag it for the user."
What was deliberately not taken. Its jurisdiction baseline is the United States, and its own README
says an agent should stop at jurisdiction-neutral bookkeeping and ask before applying tax-specific
rules. receipt-pile applies United Kingdom rules instead, sourced separately from gov.uk below, and
carries a rule telling it to stop if the receipts are not UK receipts.
openaccountant/skills
https://github.com/openaccountant/skills
66 stars, 13 forks, MIT, last pushed 9 April 2026.
Described in its own README as 44 open source financial skills for AI agents. The README was read in
full, including the three skill tables, covering personal finance, business and freelancer, and
shared skills. The business table includes `month-end-close`, `invoice-aging` and
`client-profitability`, and the shared table includes `import-transactions`, `smart-categorize` and
`tax-prep`.
What was taken. One design decision, from the section headed "With Wilson vs Without". Every skill in
that repository is written to work in two modes: with the vendor's own database tools, and without
them, using "step-by-step instructions for working with exported CSV files, spreadsheets, or manual
data entry", so it "works in any AI agent". receipt-pile is built for the second mode only. It needs
no account, no connector and no upload, and it produces a spreadsheet file rather than writing into
anybody's ledger. That also fixes the boundary in step 6: this skill records what the document shows
and stops there.
What was deliberately not taken. Its tax categorisation. `tax-prep` in that repository organises
expenses by IRS Schedule C categories, `contractor-tracking` is about 1099 contractors, and
`sales-tax-nexus` is about United States state obligations. None of that applies to a British small
business, so receipt-pile asks the owner for their own category list instead, and sends anything
that does not fit to `Uncategorised`.
ComposioHQ/awesome-claude-skills
https://github.com/ComposioHQ/awesome-claude-skills
74,627 stars, 8,603 forks, Apache-2.0, last pushed 10 August 2026.
A curated public index of agent skills. Its README lists an Invoice Organizer entry, described as
automatically organising invoices and receipts for tax preparation by reading files, extracting
information and renaming them consistently. The entry's skill file at
`master/invoice-organizer/SKILL.md` was read in full.
What was taken. Two things. First, its fifth listed behaviour, "Maintains Originals: Preserves
original files while organizing copies", which became the read-only rule. receipt-pile goes further
and does not even copy: it touches nothing in the folder. Second, its advanced usage example, which
ends with "Create a CSV spreadsheet with all invoice details for my accountant". That is the right
deliverable for this job and it is what receipt-pile produces, in place of that skill's main output
of renamed and sorted files.
Its own fallback for unclear files also informed step 2, but by contrast rather than by copying: it
suggests using filename clues and the file's creation date when the content is not clear.
receipt-pile refuses both, because a filename and a photo timestamp are the two things most likely
to be wrong on a receipt, and treats an unclear file as unreadable instead.
HMRC internal manual VATREC5010, Details which must be shown on a full VAT invoice
https://www.gov.uk/hmrc-internal-manuals/vat-trader-records/vatrec5010
Last updated 16 January 2025.
HMRC's own manual, citing regulation 14(1) of the VAT Regulations 1995 as amended. The page was
fetched and the list read in order.
What was taken. The full field list quoted in step 6: a unique sequential number, the time of
supply, the date of issue, the supplier's name, address and VAT registration number, the customer's
name and address, a description of the goods or services, the quantity of goods or extent of
services, the VAT rate and amount payable excluding VAT, the gross total amount payable excluding
VAT, the rate of any cash discount offered, the total amount of VAT chargeable, the unit price, and
a Margin Scheme or Reverse Charge reference where applicable.
This is what makes the `vat_invoice` column possible and honest. Without a primary source for the
required fields, a skill claiming to identify a valid VAT invoice would be inventing a standard. It
is also why the skill states plainly that it prepares work for a professional to check: whether a
document supports a reclaim is a judgement the accountant makes.
Record keeping (VAT Notice 700/21)
https://www.gov.uk/guidance/record-keeping-for-vat-notice-70021
HMRC's public guidance notice on VAT record keeping. The page was fetched.
What was taken. Two figures and one rule. The simplified invoice threshold, for retail supplies of
£250 or less including VAT, and the shorter field list such an invoice needs: "your name, address
and VAT registration number, the time of supply (tax point), a description which identifies the
goods or services supplied, and for each VAT rate applicable, the total amount payable, including
VAT shown in sterling and the VAT rate charged". And the retention period: "Generally, you must keep
all your business records for VAT purposes for at least 6 years."
That retention line is the reason the last substantive rule tells the owner to keep the originals
after the spreadsheet exists. A skill that turns a pile of paper into a tidy file and leaves the
owner feeling free to bin the paper would be doing them harm.
Best public prompt we found for this job
`skills/receipt-processing/SKILL.md` in Receiptor-AI/bookkeeping-skills, at
https://github.com/Receiptor-AI/bookkeeping-skills/blob/main/skills/receipt-processing/SKILL.md.
It has only 4 stars, and it is by a distance the best written of the three code sources: it is the
only one that states an automation boundary, separates what is safe to do unasked from what needs
human confirmation, and names a review queue as a first class output rather than an error path.
The one line worth copying verbatim, from its validation step:
If a record fails any required-field check, route it to a review queue rather than fabricating missing data.
Want this running in your business?
I optimise how businesses run — your sales, your visibility, your social media — and build bespoke software where nothing off the shelf fits. The first conversation is free. Work starts from £150 a day.
Foxera