Reproducible by construction

Methodology

What the system does, why each step exists, and where a responsible analyst should stop.

Snapshot generatedAug 12, 2026
01

Acquire

The full official CFPB bulk archive plus Census state population estimates.

02

Validate

Read the ZIP in chunks, parse dates, check every complaint ID, and hash the source.

03

Model

Robust weekly baselines, TF-IDF classification, and non-negative matrix factorization topics.

04

Publish

Export a compact static snapshot; keep raw narratives, DuckDB, and model binaries local.

Signal logic

Compare each issue with itself.

Each product-and-issue series is compared with its previous 26 complete weeks. The middle value is the expected count. Median absolute deviation measures how much that history normally moves.

score = (this week − expected) ÷ normal movement

The newest 15 days are excluded because newly submitted complaints may not be fully published yet.

Text model

Useful and inspectable.

Product context and complaint words become TF-IDF features. Three linear classifiers are tested; Logistic SGD currently performs best. NMF finds recurring word groups without generating new complaint text.

TF-IDFThree model comparisonLater-time holdoutNMF topicsVisible terms

Responsible banking AI

Decision support,
never decision authority.

01

Privacy

No private bank data. Raw public narratives remain local and the site exposes only a scrubbed subset.

02

Fairness

Geographic rates are contextual; they are not customer-risk or demographic-risk scores.

03

Human review

Signals prioritize reading. They do not accuse companies, infer violations, or automate adverse action.

04

Monitoring

Category drift, template language, class balance, and time-split performance need regular review.

Source ledger

Consumer complaintsCFPB full bulk archive ↗16,996,400 validated rows · 2011-12-01 to 2026-08-09
State populationU.S. Census 2025 estimates ↗Used only for contextual complaints-per-100k views