Overview
Statement Audit answers a simple question most people can’t: where does the money actually go? Drop in one or more bank or credit card statements (PDF) and it produces a 7-tab Excel report: spending by category, every transaction color-coded, recurring subscriptions detected by interval math, the same service billed on more than one card, and a discretionary-spending pass flagging charges worth a keep / reduce / cancel decision.
Privacy Model
The hosted version has no backend at all. The entire Python analysis engine runs client-side in the visitor’s browser tab via Pyodide (WebAssembly): statements are parsed locally, generate zero network requests, and closing the tab removes every trace. No accounts, no uploads, no tracking.
What the Report Finds
Summary: Totals per account, spend by category, top merchants, and alerts.
Subscriptions & Recurring: Recurring charges detected by billing-interval analysis, each with an estimated annual cost.
Duplicate Subscriptions: The same service billed across multiple cards, with estimated yearly waste.
Discretionary Spending: Streaming, retail, fitness, and similar charges organized for a deliberate keep-or-cancel review.
Needs Review: Transactions the analyzer couldn’t classify confidently, so nothing slips through silently.
Technical Details
The core pipeline is pure Python (pdfplumber for statement extraction, dateutil for flexible date parsing, openpyxl for the formatted Excel output) and ships in two forms: the GitHub Pages site running the engine in WebAssembly, and a self-hostable FastAPI server (with Docker support) that deletes uploaded PDFs the moment parsing finishes. Handles up to 20 statements per session, across banks and card issuers.