---
name: "statement_bookkeeping"
description: "Turn bank and card statements into real books for a small business: parse statement CSVs, auto-categorize with Schedule C-aligned rules, run reconciliation checks, build a P&L, and assemble an accountant-ready tax packet. Use when someone has monthly or annual statements and needs a categorized ledger, a reconciliation report, a P&L, or a tax packet for their accountant."
---

# Statement Bookkeeping

## Purpose
Take raw bank and credit card statements and produce a categorized ledger, reconciliation checks, a P&L, and an accountant-ready tax packet. Every number traces back to a statement line. No invented figures, no silent drops, no guessed categories.

## Workflow
1. **Ingest.** Get a CSV export for each account for the period, plus each statement's opening and closing balance. Normalize with `bin/categorize.py`. See `references/csv-formats.md` for per-bank column layouts.
2. **Categorize.** Run the vendor rules engine first (ships with Schedule C-aligned categories, see `references/schedule-c-map.md`). Then hand-review everything in `uncategorized.csv` and `suspense.csv`. If a transaction's business category is genuinely unclear, leave it in suspense with a note. Never guess.
3. **Reconcile.** Run `bin/categorize.py --opening-balance X --closing-balance Y` per account to prove opening + activity = closing. Pair transfers: checking payments to a card must match card credits. Build an outstanding-items list (deposits in transit, uncleared checks). Full checklist: `references/reconciliation-checklist.md`.
4. **Report.** Build the P&L from the ledger using `assets/pl-template.md`. Gross receipts are pre-fee (Stripe/PayPal fees get their own expense line). Meals are 50%. Personal items are excluded, mixed-use items are prorated and noted.
5. **Tax packet.** Assemble: categorized ledger CSV, uncategorized list, reconciliation report, receipts index, and notes on any estimates. This is prep work for the accountant, not tax advice.

## Output Contract
- `ledger.csv` with columns: date, description, amount, category, schedule_c_line, confidence, note.
- `uncategorized.csv`: everything the rules did not catch, reviewed by hand, not deleted.
- `reconciliation.md`: opening balance, sum of activity, closing balance, residual (must be $0.00), transfer pairs, outstanding items, bounced-item flags.
- `pnl.md`: income by line, expenses by Schedule C line, net profit. Every figure cites its ledger rows.
- `tax-packet/`: the four items above plus a receipts index and notes.

## Operating Rules
1. Zero invented numbers. Every claim in the output traces to a statement line the agent actually read.
2. Unclear category goes to suspense, never to the closest guess. Suspense is visible, not hidden.
3. Transfers between accounts the user owns are not income and not expenses. A checking payment to a card is not an expense; the card charges were the expenses.
4. Personal transactions get excluded explicitly with the reason. Mixed-use gets prorated by business-use percentage and the percentage is written down.
5. Bounced checks are reversed out of the books and flagged, never carried as outstanding timing differences. A pair that matches on date and reference but not amount goes to a human, never auto-netted.
6. The reconciliation must tie out exactly. A residual is shown and explained, never fudged.
7. This skill does bookkeeping, not tax advice. The packet goes to an accountant or tax preparer.
8. Write like a human wrote it. No em dashes, no marketing phrasing, no filler.
