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

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.

SKILL.md copied to clipboard