Vol. I · No. 1Monday, September 21, 2026
PriceFree. Public-domain records.

The Complaint Atlas

What people describe about student loans, credit reporting, and debt collection that the official categories obscure

Reading the record

Behind every checkbox, a story the form could not hold

The Consumer Financial Protection Bureau sorts every complaint into a Product, an Issue, and a Sub-issue. Those labels are chosen from a menu. The narrative is written by a person. This edition asks a typed-answer model to read the narratives and report what the menu left out.

Official complaint categories are useful because they are countable. "Dealing with your lender or servicer" can be tallied by month, by company, by state. But the category is a container, not a description. Two complaints filed under the same Sub-issue can describe entirely different experiences: one person was transferred between four departments and never reached a human; another was told two contradictory things by two agents on the same afternoon; a third has disputed a debt for eleven months and still receives collection letters.

This atlas gives each narrative a second reading. TypeSafe AI's Jev model answers a fixed set of typed questions about every complaint: which of five reported experiences dominates, whether each experience appears at all, how long the problem had been going on, and whether the text reads as a personal account or a templated letter. Every answer comes with a probability. The charts in Section B fade any judgment the model was unsure about, so uncertainty stays visible on the page rather than being rounded away.

The five experiences were chosen because they recur in the record and cut across the Bureau's menu: repeated transfers, contradictory instructions, inability to reach a person, disputed debt, and unresolved errors. They describe what it was like to deal with the company, not which product was involved. That is the gap this edition tries to measure.

Start at the Desk in Section A. Pick a beat, pull a sample, and run it. The Record in Section C prints every clipping with its labels. Section D is for your letter to the editor: what did you see that the categories did not?

AThe DeskPull a sample of narratives and run the questions.
BThe ChartsOfficial category against reported experience, with doubt shown.
CThe RecordEvery clipping, labeled, with the company's response.
DLettersYour reading of the record, saved here and exportable.
EMap RoomAll 1,800 narratives on one zoomable map of what they say.
FLedgerLinked charts that filter each other and pick what Jev reads next.
GNationLive 2026 counts per 100,000 residents, state by state.
Section AThe Desk

Assign the beat

Choose a product line, narrow by the Bureau's own Issue label if you like, and set a sample size. The desk pulls narratives from the archive and sends each one to Jev with the same eight questions. Results are kept in this browser so a class can build up a larger record over several runs.

No results yet.

What Jev is asked, exactly

Jev returns typed answers: a choice with a probability for every option, a yes/no as a probability, and a rubric score with a probability for every level. The page shows the probabilities. Nothing here is generated prose.

Live from the desk

Run the desk to watch narratives being read one at a time.

Section BThe Charts

Where the menu and the narrative part ways

Every mark below is one narrative. Opacity is the model's confidence in that particular judgment: a solid mark is a confident read, a faint one is a guess the class should argue about. Hover or focus a mark for the clipping; click it to open the full analysis.

Charts appear after the first run.

Section CThe Record

The clippings

Clippings are set here as they come back from the desk.

Section DLetters to the Editor

Your reading of the record

Three short letters. Write for a reader who has seen only the official categories. Your letters are saved in this browser and included in the export.

Section EThe Map Room

Every narrative, placed by what it says

The archive laid out as a map. Narratives that use the same language sit together; the shaded bands are where the record is densest, and the labels are the words that set each neighborhood apart. Zoom in and more labels appear. Color the map by beat to see the Bureau's product lines, then by Jev's experience labels to see how the model's reading cuts across them.

Layout: . Positions are computed once, offline, from the words alone; the model's labels are painted on afterward. Nearby dots share vocabulary, not necessarily a verdict, which is exactly what makes the Experience coloring worth reading.

Section FThe Ledger

Linked accounts

Nine small charts that filter one another. Click a bar to keep only those narratives; shift-click to add another; drag across a histogram to brush a range. Every other chart, the Map Room, and the Nation update to the selection. Then send the selection to the desk: the Ledger decides what Jev reads next.

Section GThe Nation

Where the complaints come from

Two layers on one map. The fill is the live count of complaints the Bureau received this year, per 100,000 residents. The rings are the archive narratives in your current Ledger selection, split by the experience Jev found. Click a state to filter the Ledger and the Map Room to it.

Highest per capita

Loading state geometry…

For facultyTeaching Guide

Running the Atlas in a 50-minute class

Time. 50 minutes. Ten to read the front page and one raw export row together, fifteen to run the desk in small groups, fifteen for the charts and clippings, ten for letters.

Before class. Open the page once so the archive loads, and check the Connection dot is green. Decide whether groups take one beat each or all run the same beat with different Issue filters, which makes the Section B matrix richer.

In class. 1. Show the Bureau's menu: Product, Issue, Sub-issue. Ask what a menu can and cannot capture. 2. Groups run a sample of 24. While it runs, the live card shows one narrative at a time; ask students to guess the label before the answer lands. 3. In Section B, find the row where the official Issue spreads across the most experiences. That is the category doing the least descriptive work. 4. In Section C, filter to one experience and read three clippings aloud. Compare company responses. 5. Letters.

Discussion prompts. Why might a person choose "Incorrect information on your report" when what they describe is a year of unanswered disputes? What does "Closed with explanation" mean next to a narrative about being transferred five times? When the model puts 45% on one label and 40% on another, who should decide? What is lost when narratives leave public view, and who benefits?

Sections E to G. The Map Room is for noticing: ask students to find a neighborhood where the beat coloring is uniform but the experience coloring is mixed. The Ledger is for arguing: brush July only, or one company, and read that selection. The Nation is for scale: the archive holds 1,800 narratives; the live fill shows millions of complaints behind them.

On the model. Jev does not summarize or write. It answers typed questions with probabilities. That makes it auditable in a way a chat model is not: the class can disagree with a specific number. The template-letter question is worth dwelling on. Credit-reporting complaints in particular include many near-identical letters citing statutes, and students should ask whether those are less real, differently real, or simply a different genre of complaint.

Privacy. The narratives were published by the CFPB with consumer consent and redacted by the Bureau. Students' letters stay in the browser. The proxy adds the API key and forwards text to TypeSafe AI; it stores nothing.

Connection

The proxy that holds the key

This page talks to Jev and to the CFPB API through a proxy. The default is the Jev Sandbox Worker. For a local demo, run dev-proxy.py and use its localhost address.