Rehearsal AI · An open Claude skill
closebook
A five-layer recipe that turns a monthly credit card or bank statement PDF into reimbursement-ready CSVs. You define the buckets, the markup, the tax, and the bill-to blocks once. The recipe runs the same way every month after.
The story behind it
Every month, a credit card statement arrives. The numbers aren't large. Nothing in it is complicated. But you know what's coming: three tabs, careful typing, mental gymnastics about which vendor goes in which bucket, refunds to remove, a tax calc your invoice template doesn't do automatically, and a CA who will reliably find three things you got slightly wrong.
What looked, from the outside, like fifteen days of finance work was actually about an hour of decisions and fourteen-and-a-half days of typing those decisions out in slightly different formats for slightly different audiences.
The carefulness wasn't fifteen days deep. It was about an hour deep — the part where I actually made the decisions. The other fourteen-and-a-half days were typing.
This skill is the recipe. Written down once. Run every month after.
Read the full essay on Medium →
The five layers
The skill does exactly five things, in order. Skip any one of them and you have a parlour trick. Build all five — especially the last — and you have a workflow you can actually run a monthly close on.
Extract
Open the statement PDF. Take every debit. Drop every credit. Capture date, merchant, foreign-currency amount (if any), home-currency amount. Use the bank's transaction date, never a downstream date.
Categorize
Each remaining row goes into exactly one bucket. Buckets are defined by you at first run — two is common, five is the most this should ever be. If a merchant doesn't match, the skill asks you and remembers the answer.
Math
Four lines per bucket:
Reimbursement = sum of row amounts in this bucket
Markup = Reimbursement × markup_pct
Tax on markup = Markup × tax_pct
Grand Total = Reimbursement + Markup + Tax
Defaults: 8% markup, 18% tax (India GST). Both configurable. Use 0% tax for non-tax jurisdictions.
Bill-to blocks
You supply your legal name, address, and tax ID once. The skill attaches the right block to every output CSV. You never retype an address again.
Self-verification
Before showing you anything, the skill runs ten checks against its own output: debit-count parity, zero credits, bucket-sum integrity, markup arithmetic to the rupee, tax arithmetic to the rupee, grand-total arithmetic to the rupee, bill-to completeness, forex line items, no double-bucketed rows, exclusions logged.
If any check fails, no CSV ships. The skill surfaces the failing check with the rows and the math, and stops.
Install
This is a Claude Code skill. You'll need Claude Code installed locally.
Option A — User-scope (recommended)
mkdir -p ~/.claude/skills/closebook
curl -o ~/.claude/skills/closebook/SKILL.md \
https://closebook-two.vercel.app/SKILL.md
Option B — Project-scope
mkdir -p .claude/skills/closebook
curl -o .claude/skills/closebook/SKILL.md \
https://closebook-two.vercel.app/SKILL.md
Option C — Manual
Click Copy SKILL.md above, paste into a new file at ~/.claude/skills/closebook/SKILL.md, save.
Then, in any Claude Code session
Process this statement with the closebook skill: path-to-statement.pdf
On first run, the skill walks you through a one-time config wizard — buckets, merchant rules, markup %, tax %, bill-to blocks, exclusion list. It saves your config to closebook-config.yaml in the working directory. Every subsequent run loads the config and just asks you about edge cases.
What this skill is not
- It does not categorize for you. You define the buckets and the merchant rules.
- It does not pick the markup. The markup is a business decision; you supply the number.
- It does not file invoices, send emails, or post journal entries. It produces clean CSVs that paste into whatever invoice or accounting software you use.
- It does not learn new exclusion rules without your approval. Every new merchant prompts a confirmation.
The decisions are yours. The typing is the skill's.
License & contributions
Open. Free to use, modify, and republish. If you ship an improvement, a PR or a note back to the lab is appreciated but not required.