Get your hours back: 10 AI skills for the back office

invoice-chaser

get paid without the awkward email

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: invoice-chaser
description: Turns overdue invoices into staged chase emails pitched at the right firmness. Use when money is owed and the reminder feels awkward.
---

# Get paid without the awkward email

A dated chase plan and a ready-to-send draft for every overdue invoice.

## Claude does

1. Ask for four things and guess none: the overdue list (invoice number, customer, contact name and title, amount, currency, invoice and due dates), the sender block (person, company, phone, email), the payment methods accepted, and the exact late-payment or service-suspension clause from the signed terms. No clause, no consequence sentence.
2. Calculate days past due against today, and print today's date.
3. Put every invoice in exactly one of four stages, never unlabelled: **1 courteous reminder**, assuming an oversight; **2 firmer**, warning service may be restricted; **3 direct**, restrictions in effect and legal escalation flagged; **4 formal and factual**, proceedings initiated. First formal chase at roughly 20 to 30 days past due; before that, a light reminder.
4. Space the stages 5 to 10 business days apart, and add a phone call by the third reminder. Email alone stops working there.
5. Write one master template per stage, each carrying recipient name and title, company, invoice numbers, amounts, days past due, the attached-copy line, every payment method, full sender contact details, and from stage 2 the consequence quoted from the clause.
6. Make the calls only human context supports: who gets a softer ladder, who is in dispute and must not be chased, who needs a call not an email.

## Then Codex does

The bulk merge, which carries no judgement: applying the four templates across every row, computing days past due and next chase dates, writing one draft per invoice plus a calendar. Pure arithmetic and substitution. Fill {LEDGER_CSV}, {SENDER_BLOCK}, {PAYMENT_METHODS}, {TERMS_CLAUSE}, {STAGE_TEMPLATES} and {TODAY} into CODEX.md, then run:

```
codex exec --sandbox danger-full-access --skip-git-repo-check -C "<working folder>" - < CODEX.md
```

## Claude checks

1. Every invoice appears once, in one stage: rows in must equal drafts plus skips out.
2. Recompute days past due by hand for three invoices. A wrong date turns a polite reminder into an accusation.
3. No number, date or amount appears in a draft that is not in the ledger.
4. The consequence sentence matches the clause word for word, and no stage 1 draft carries one.
5. Every draft names the sender. If a check fails, reject the batch and rerun; never hand-patch single files.

## Rules

- Nothing exits unlabelled: one invoice, one stage.
- Missing terms means the consequence line is dropped.
- Never enrich a customer record from outside the ledger.
- No recovery-rate or industry-average figures: the source publishes none.
- Claude drafts. A human sends.
- 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 does the merge itself and says so.

## Built from

- Upflow, Dunning Letter: Meaning & Templates, https://upflow.io/blog/ar-collections/dunning-letter. Read in full: the tone ladder, spacing, thresholds, content list.
- w95/awesome-claude-corporate-skills, https://github.com/w95/awesome-claude-corporate-skills, 189 stars via api.github.com. Its invoice-organizer is the closest prior art.
- ComposioHQ/awesome-claude-skills, https://github.com/ComposioHQ/awesome-claude-skills, 74,501 stars via api.github.com. Prior-art index.
- Anthropic, Skill authoring best practices, https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices. The format spec.

Prompt for Codex

# Get paid without the awkward email - Codex task

Merge approved chase templates across an overdue invoice ledger. Write no new wording and make no judgement calls.

## You are given

- {LEDGER_CSV}: overdue invoices. Columns: invoice_number, customer, contact_name, contact_title, amount, currency, invoice_date, due_date, stage_override (may be blank), do_not_chase (yes or blank).
- {SENDER_BLOCK}: the person and company the emails are sent as, with phone and email.
- {PAYMENT_METHODS}: the payment methods actually accepted.
- {TERMS_CLAUSE}: the exact late-payment or service-suspension clause, or the literal word NONE.
- {STAGE_TEMPLATES}: four approved templates. 1 courteous, 2 firmer with service-restriction warning, 3 direct with restrictions in effect and legal notice, 4 formal and factual.
- {TODAY}: the date to calculate against, YYYY-MM-DD.

## Produce

1. `chase-plan.csv`, one row per invoice: invoice_number, customer, amount, currency, due_date, days_past_due, stage, next_chase_date, channel.
   - days_past_due = {TODAY} minus due_date, calendar days.
   - Stage from days past due unless stage_override is set: under 20 = 1, 20 to 30 = 2, 31 to 40 = 3, over 40 = 4.
   - next_chase_date = {TODAY} plus 7 business days, skipping weekends.
   - channel = "email" for stages 1 and 2, "email + phone call" for stages 3 and 4.
2. One draft per invoice at `drafts/<invoice_number>.md`, subject line and body, produced only by substituting ledger values into the matching stage template. Each must contain contact name and title, company, invoice number, amount with currency, days past due, the attached-copy line, every item in {PAYMENT_METHODS}, and the full {SENDER_BLOCK}.
3. `skipped.csv`: every row where do_not_chase is set, or due_date, amount or contact_name is missing or unparseable, with the reason.

## Rules

- Never write a sentence that is not in a template or a ledger field.
- Never invent a number, date, amount or contact detail. A missing field goes to `skipped.csv`; it is never estimated.
- If {TERMS_CLAUSE} is NONE, delete the consequence placeholder from stages 2, 3 and 4 rather than replacing it.
- Never put a consequence sentence in a stage 1 draft.
- Every draft ends with the sender named. No anonymous "the accounts team".
- Every invoice lands in exactly one of `chase-plan.csv` or `skipped.csv`. No row disappears.
- Send nothing. Open no mail client. Contact nobody.

## Return

Print, in order:

1. Rows read, drafts written, rows skipped. The first must equal the sum of the other two.
2. Counts at stage 1, 2, 3 and 4.
3. The three lowest and three highest days_past_due values with invoice numbers, so the date arithmetic can be spot-checked.
4. The full text of one stage 4 draft.
5. Any row where a template placeholder survived unsubstituted, or the line NO UNSUBSTITUTED PLACEHOLDERS.

Built from the best public work on this

Sources

Best public prompt we found for this job

https://upflow.io/blog/ar-collections/dunning-letter

The useful part is the tone ladder, which is what stops a chase reading as either limp or aggressive. Stage by stage: a courteous reminder that assumes an oversight, then a firmer letter warning that service may be restricted, then a direct letter with restrictions in effect and legal escalation flagged, then a formal and factual letter stating that proceedings have been initiated. Every letter carries the recipient's name and title, the invoice numbers and amounts, the days past due, a copy of the invoice, the payment methods available, full contact details, and the contractual consequence.

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.