Orchestrates CSV reading, description normalization, and transaction
storage. Uses count-based duplicate detection so legitimate repeated
transactions (same date/amount/description) in a single file are all
imported, while re-importing the same file correctly identifies every
row as a duplicate.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Implement Categorizer protocol and RuleBasedCategorizer service that
matches transactions against pipe-separated patterns ordered by priority,
with support for tag overrides and household member attribution.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add the data layer for the spending analysis app including models for
household members, accounts, categories, transactions, categorization
rules, and CSV import mappings. All models use SQLAlchemy 2.0 mapped
columns with proper foreign key relationships. Includes db.py with
Base class, engine/session factories, and 6 passing tests.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>