Get your hours back: 10 AI skills for the back office
expense-sorter
categorise the receipts and find what you are wasting
How the two work together
Claude thinks it through. Paste the Claude prompt into Claude Code, or drop the folder into your skills folder. Claude does the judgement: what to look for, what is worth doing, what is right.
Codex gets it done. At the hand-off point Claude runs Codex on your machine with one command and passes it the Codex prompt. Codex does the mechanical part and hands the result back. Claude checks it before you see it.
No API key to set up: Claude calls the Codex you already have installed. If Codex is not installed, Claude does that half itself and tells you.
Prompt for Claude
---
name: expense-sorter
description: Sorts a card or bank export into one closed list of spend categories, then reports the waste - duplicate subscriptions, quiet price rises, charges nobody owns. Use when someone has receipts or an expense export and wants both the coding and the cuts.
---
# Categorise the receipts and find what you are wasting
Every line of spend carries exactly one label, plus a ranked list of what you can cancel this week, with amounts.
## Claude does
1. Ask for four things, and start on none without the first: the export (one row per transaction, with date, merchant, amount), the period, the currency, and any category list the bookkeeper already uses.
2. Set a closed list of at most eight categories plus a ninth, `unclear - ask`. The Inbox Zero method caps broad categories at three or four because deeper trees stop being used. Expense coding needs a few more, but the ceiling is the point.
3. Forced choice: every row exits with exactly one label, never blank, never two. If the merchant string does not settle it, the row goes to `unclear - ask` and waits for the owner. That is an output, not a failure.
4. Write the rule file yourself: merchant substring, category, reason, one per line. Codex applies this. Nothing re-judges rows freehand.
5. Define waste as four tests only: duplicate subscriptions (two tools, one job), price rises (same merchant, same cycle, higher amount), zero-use (charged, no named user), orphans (no owner).
6. Refuse to guess VAT treatment, tax allowability or fraud. Flag each, name it, hand it back.
## Then Codex does
Codex applies the finished rule file to every row: label, total by category, build the trailing view, run the four tests, reconcile to the statement total. Bulk arithmetic with the judgement already taken out. The trailing view copies the Amazon Weekly Business Review shape, six trailing weeks beside twelve trailing months, six rather than four so month boundaries do not distort the pattern.
```
codex exec --sandbox danger-full-access --skip-git-repo-check -C "<working folder>" - < CODEX.md
```
Fill in first: {EXPORT_FILE}, {CATEGORY_LIST}, {RULE_FILE}, {PERIOD}, {CURRENCY}.
## Claude checks
1. Rows out equal rows in. A dropped row is a rerun.
2. Category totals reconcile to the statement total to the penny. Read both figures from the files as you compare them; never retype a number into a table and reason from your own copy.
3. Re-code twenty random rows by hand and compare.
4. No row unlabelled, none with two labels, none labelled outside the closed list.
5. An empty `unclear - ask` is a fail until proven. Hand-check the ten oddest merchant strings; an empty bucket usually means the rules were stretched to look confident.
6. Every waste finding quotes the merchant, the amounts and the dates behind it.
Any check fails: return it with the failing rows quoted, rerun, check again.
## Rules
- One category per row, from the closed list or `unclear - ask`. No free-form labels.
- Keep the coding apart from the arithmetic. Judge once, apply many times.
- Six trailing weeks, not four.
- No tax, VAT or legal advice. Flag and hand back.
- Public information only.
- Never invent a fact, a number or a quote.
- Anything sent in someone's name says whose name it is.
## If Codex is not installed
Claude runs the labelling, totals and waste tests itself in the same order, and says plainly that it ran both halves.
## Built from
- Superhuman, The Inbox Zero Method - https://blog.superhuman.com/inbox-zero-method/ - forced-choice labelling, three-to-four category ceiling; read in full.
- Commoncog, The Amazon Weekly Business Review - https://commoncog.com/the-amazon-weekly-business-review/ - six trailing weeks beside twelve trailing months; read in full.
- w95/awesome-claude-corporate-skills - https://github.com/w95/awesome-claude-corporate-skills - 189 stars via api.github.com; carries 02-finance-accounting/invoice-organizer.
- ComposioHQ/awesome-claude-skills - https://github.com/ComposioHQ/awesome-claude-skills - 74,501 stars via api.github.com; indexes invoice-organizer among 1000+ skills.
- Anthropic, Skill authoring best practices - https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices - the format spec this file follows.
Prompt for Codex
# Categorise the receipts and find what you are wasting - Codex task
## You are given
- `{EXPORT_FILE}` - one transaction per row: date, merchant string, amount. Read it as it is; do not clean or rename merchants.
- `{CATEGORY_LIST}` - a closed list of at most eight categories plus a ninth, `unclear - ask`. Fixed. You may not add to it.
- `{RULE_FILE}` - lines of `merchant substring -> category -> reason`. The only source of coding decisions.
- `{PERIOD}` - the date range covered.
- `{CURRENCY}` - the currency of every amount. Convert nothing.
## Produce
1. `coded.csv` - the original rows unchanged plus three columns: `category`, `rule_matched`, `reason`. Exactly one category per row. A row matching no rule, or two rules that disagree, goes to `unclear - ask` with `rule_matched` empty.
2. `totals.csv` - one row per category: total amount, transaction count, percentage of the period total. Include `unclear - ask`.
3. `trailing.csv` - per category, the trailing six weeks as six columns and the trailing twelve months as twelve columns, sharing one category key. Six weeks, not four.
4. `waste.md` - findings under exactly four headings, each ranked by annual amount, highest first:
- Duplicate subscriptions: two or more merchants charged in the period that appear to serve one job.
- Price rises: same merchant, same cycle, a later amount higher than an earlier one. State both amounts and both dates.
- Zero-use: a recurring charge with no user named in the input.
- Orphans: a recurring charge with no owner named in the input.
Every finding names the merchant, the amounts and the dates behind it. An empty heading reads "none found". Never merge or drop a heading.
5. `reconciliation.txt` - the sum of `coded.csv` amounts, the sum of `totals.csv` amounts, the export's own total, and the differences.
## Rules
- Apply the rule file. Never judge a merchant it does not cover; send that row to `unclear - ask`.
- Never invent a merchant, an amount, a date or a category.
- Never guess VAT, tax treatment or fraud. If the input raises one, list it in `waste.md` under a final "hand back to a human" line.
- No currency conversion, no inflation adjustment, no rounding beyond two decimal places.
- Do not delete or rewrite any input file.
- British English throughout.
## Return
Print, in this order:
1. Rows read, rows written, and whether they match.
2. Count per category, including `unclear - ask`.
3. The three totals and the differences from `reconciliation.txt`.
4. The finding count under each of the four `waste.md` headings.
5. Any row number you could not process, with the reason.
Built from the best public work on this
Sources
- **Superhuman, The Inbox Zero Method** - https://blog.superhuman.com/inbox-zero-method/ - opened and read in full. Supplies the forced-choice taxonomy (every item exits under exactly one labelled verb, nothing left unlabelled) and the hard ceiling of three or four broad categories, with archive-plus-search preferred over a deep tree. Both transfer directly to receipt coding.
- **Commoncog, The Amazon Weekly Business Review** - https://commoncog.com/the-amazon-weekly-business-review/ - opened and read in full. The most mechanically detailed public write-up of the WBR: trailing six weeks on the left, trailing twelve months on the right, sharing an X-axis, with six weeks chosen specifically rather than four so month boundaries do not distort the pattern. This is the trailing view the skill builds.
- **w95/awesome-claude-corporate-skills** - https://github.com/w95/awesome-claude-corporate-skills - 189 stars read from https://api.github.com/repos/w95/awesome-claude-corporate-skills. Low stars but the closest structural prior art: the repo carries `02-finance-accounting/invoice-organizer`, and its `07-operations/sop-builder/SKILL.md` shows the governance-header and named-owner pattern this skill borrows for the hand-back rows.
- **ComposioHQ/awesome-claude-skills** - https://github.com/ComposioHQ/awesome-claude-skills - 74,501 stars read from https://api.github.com/repos/ComposioHQ/awesome-claude-skills. Catalogues 1000+ skills including `invoice-organizer`; used as the prior-art index checked before writing.
- **obra/superpowers** - https://github.com/obra/superpowers - 281,934 stars read from https://api.github.com/repos/obra/superpowers. Largest skills framework by stars, accepted into Anthropic's marketplace. Supplies the verification-before-completion discipline behind the "Claude checks" section and the named anti-patterns (magic numbers, deferring errors, too many options) avoided here.
- **Anthropic, Skill authoring best practices** - https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices - Anthropic's own normative spec for SKILL.md: name under 64 characters, description under 1024, body under 500 lines, one level of references, and the plan-validate-execute pattern. This file follows it.
Best public prompt we found for this job
**https://blog.superhuman.com/inbox-zero-method/**
The single most useful transferable idea for expense sorting is not an expenses article at all. It is the Inbox Zero forced-choice rule: nothing may exit the pile unlabelled, and the label must come from a closed list.
From the research note taken while reading the page (a summary, not a quotation from the article): the method gives five forced-choice verbs - delete or archive, delegate, respond immediately, defer, do - a two-minute threshold separating respond-now from defer, batch processing two to three times daily, and a hard folder ceiling of three or four broad categories with archive-plus-search preferred over hierarchy. It traces to Merlin Mann's original framing that "zero" means zero attention, not zero messages.
Applied to receipts: one category per row from a closed list of at most eight, plus an explicit `unclear - ask` bucket, and success measured as zero attention left owed on the pile rather than a tidy-looking spreadsheet.
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