A TypeScript toolkit for parsing, normalizing, and summarizing personal finance transactions from CSV exports.
- Parse CSV bank/account exports into structured transactions
- Normalize raw data into a consistent
Transactionformat - CLI for quick summaries: inflow, outflow, and net totals
- Data models for accounts, categories, and category rules (with AI/rule-based classification support)
- Node.js 18+
- npm
npm installRun the CLI against any supported CSV file:
npm run cli <path-to-csv>Example:
npm run cli samples/sample.csvOutput:
Parsing: /path/to/sample.csv
Found 5 transaction(s):
↑ IN $500.00 2026-02-01 Payroll
↓ OUT $42.00 2026-02-02 Grocery Store
...
Total in: $500.00
Total out: $142.00
Net: $358.00
import { parseCSV, normalizeAll } from './src/index.ts'
const raw = parseCSV('./samples/sample.csv')
const transactions = normalizeAll(raw, 'default')src/
cli/ # CLI entry point
models/ # TypeScript types and interfaces
parsers/ # CSV parser
normalizer # Raw → Transaction normalization
samples/ # Example CSV files
| Script | Description |
|---|---|
npm run cli <file> |
Parse and summarize a CSV file |
npm run build |
Compile TypeScript and bundle with Vite |