What problem does it solve? Manually transcribing bank and credit card export files into a plain-text beancount ledger is error-prone: flipped sign conventions corrupt amounts, re-imported files double-book transactions, and guessed categories bury mistakes. This Skill stages every row, deduplicates against prior imports, suggests categories from the ledger's own history, and writes only after explicit user confirmation. ## Core Features & Use Cases - Format detection and normalization: Parses CSV, OFX/QFX, and QIF exports, confirming column mappings, sign conventions, and date formats once and persisting them to a config block for zero-question repeat imports. - Two-layer deduplication: Stamps every entry with an import-id (native OFX FITID or a normalized SHA-256 hash) so re-importing the same file is a guaranteed no-op, with fuzzy matching to catch manually entered duplicates. - History-based categorization: Suggests counter-accounts only from accounts already open in the ledger, with confidence levels and cited reasons, falling back to Expenses:Uncategorized when no prior exists. - Use Case: You download a May CSV export from your Chase checking account. The Skill stages 12 rows, skips 4 already imported, flags 1 suspected duplicate, categorizes the rest from your ledger history, shows a review table, and appends the confirmed entries with import-id metadata before validating with bea check or bean-check. ## Quick Start Import the attached bank export CSV into my beancount ledger at ./ledger.beancount under the account Assets:Bank:Checking and show me the review table before writing anything.