| Company response | n | % |
|---|---|---|
| Closed with non-monetary relief | 57,603 | 64.96 |
| Closed with explanation | 31,070 | 35.04 |
What Actually Works in a Consumer Complaint
88,673 credit-reporting complaints say specificity gets results and legal threats don’t. The formal letter format is the worst thing you can do.
Built by directing an AI research assistant: I set the question, chose the population and the comparisons, and decided what counted as evidence; Claude wrote and ran the R. The back-and-forth mattered — an early version of the templating figure counted the same complaint three times because it grouped duplicates across all three credit bureaus before filtering to one, which inflated the headline effect by about a quarter. That got caught, corrected, and is the reason the analysis below uses a single company.
The question
If you have an error on your credit report, you file a complaint. Roughly two thirds of people get some kind of relief; the other third get an explanation and nothing changes.
Search for advice on how to write one of these and you get a consistent answer: make it sound legal. Cite the Fair Credit Reporting Act. Reference your rights under section 611. Mention that you’re prepared to take legal action. Sign it like a formal letter.
Nobody seems to have checked whether any of that works.
The Consumer Financial Protection Bureau publishes every complaint it forwards to a company, including the consumer’s own text where they’ve consented, along with how the company resolved it. That’s a labelled dataset of complaints and outcomes, which means the advice is testable.
What I found
Specificity works. Legal threats don’t.
Among people writing their own complaint, naming the specific accounts in dispute raises the relief rate from 56.6% to 70.4%. Citing a specific statute raises it from 53.5% to 66.0%. Do both and you reach 75.1%, against 50.1% for doing neither.
Three things that sound authoritative make outcomes worse: threatening legal action, claiming damages, and writing in formal letter style. The formal letter format is the single most damaging feature I measured.
The data
I pulled every credit-reporting complaint filed between April and June 2025 where the consumer agreed to publish their text — 260,678 complaints — and kept only those filed against Equifax, leaving 88,673.
Restricting to one company isn’t fussiness. People routinely file the same complaint against all three national bureaus on the same day; 55% of distinct Equifax narratives also appear at TransUnion or Experian. Pooling them would count one grievance three times and treat those copies as independent evidence. Equifax is the largest single bureau at 34% of the volume, so it’s the natural choice. TransUnion and Experian are sitting on disk untouched, which makes them a clean replication test.
The outcome is the company’s own response code, and it’s binary in practice:
Nobody in this period got monetary relief, and nobody got an untimely response. So “relief” means the company recorded that it did something, versus recording that it explained itself.
Separating form letters from real complaints
The first problem is that a lot of these aren’t individual complaints at all. Credit-repair firms distribute form letters that get filed thousands of times, and if you don’t remove them you end up analysing a handful of templates rather than what people write.
Exact text matching doesn’t catch them, because the CFPB redacts account numbers before publishing and every copy of a form letter has different redactions. So I normalised first — stripped the redaction markers, dates, currency formatting and all non-letters, then lowercased. Two copies of the same form letter collapse to an identical string. Anything appearing more than once is a template.
| Group | n | % of total | Relief rate |
|---|---|---|---|
| Form letter | 58,045 | 65.5 | 66.9% |
| Individually written | 30,628 | 34.5 | 61.2% |
That’s 4,624 distinct templates, the largest filed 3,380 times. Everything from here uses only the 30,628 individually written complaints. The form letters are out of the comparison entirely, so no result below can be an artefact of one template being filed thousands of times.
Worth noting the benchmark though: form letters do better than individual complaints, 66.9% against 61.2%. Hold that thought.
Measuring the advice
I turned the conventional advice into regular expressions — statute citations, attorney and lawsuit language, damages claims, formal salutations and sign-offs, demand phrasing.
Then I needed a measure of specificity, and the redaction turns out to be one. The CFPB replaces account numbers, creditor names and dates with XXXX. A complaint that lists six disputed tradelines is full of them; a complaint that says “my credit report is wrong” has almost none. Redaction density is a direct proxy for how many concrete things the complaint identifies.
It has a clean threshold:

Below 10% redacted, the relief rate sits in the high 40s to low 60s. Above it, high 60s to low 70s. I use more than 10% redacted as the definition of “specific” for the rest of the analysis.
The advice is mostly given by people who already follow it
Before testing whether the legal language works, it’s worth asking who uses it. I assumed the form letters would supply the legalese and individuals would write plainly. That’s backwards:
| Feature | Individually written | Form letter |
|---|---|---|
| Cites a statute | 61.7% | 51.1% |
| Attorney / lawsuit language | 14.4% | 12.3% |
| Claims damages | 6.7% | 1.6% |
| Formal scaffolding | 13.2% | 4.5% |
| Names specific accounts | 33.4% | 13.2% |
| Estoppel / affidavit | 4.5% | 10.7% |
Every legal feature except the estoppel language is more common in complaints people write themselves. The form letters here are short, blunt disputes; the long legalistic documents are individually composed. Convenient for the analysis — it means the legal features aren’t secretly measuring “is a form letter”.
Results
One feature at a time
| Feature | Present in | Relief with | Relief without | Difference |
|---|---|---|---|---|
| Names specific accounts | 33.4% | 70.4% | 56.6% | +13.9 pp |
| Cites a statute | 61.7% | 66.0% | 53.5% | +12.5 pp |
| Demand language | 25.0% | 70.3% | 58.2% | +12.1 pp |
| Estoppel / affidavit | 4.5% | 68.2% | 60.9% | +7.4 pp |
| Claims damages | 6.7% | 62.5% | 61.1% | +1.4 pp |
| Attorney / lawsuit | 14.4% | 61.7% | 61.1% | +0.6 pp |
| Formal scaffolding | 13.2% | 60.8% | 61.2% | -0.4 pp |
Specificity and citation stack
The obvious worry is that these are the same thing — people who cite statutes are the same people who list their accounts, and I’m measuring one effect twice. So I split it four ways:

Specificity helps by 11.4 points among complaints citing no statute, and by 14.2 points among those that do. It isn’t standing in for legal literacy — it works independently, and the two combined move the relief rate 25 points.
Everything at once
Single comparisons can mislead. Specific complaints are longer, and longer complaints might just do better. So I fit a logistic regression with all the features together, controlling for complaint length, sentence count and issue type.

| Feature | Odds ratio | 95% CI | p |
|---|---|---|---|
| Names specific accounts | 1.65 | [1.56, 1.74] | < 1e-16 |
| Demand language | 1.34 | [1.26, 1.43] | < 1e-16 |
| Length (log characters) | 1.27 | [1.22, 1.32] | < 1e-16 |
| Cites a statute | 1.23 | [1.16, 1.31] | 1.6e-11 |
| Estoppel / affidavit | 1.14 | [1.01, 1.28] | 0.038 |
| Claims damages | 0.85 | [0.76, 0.95] | 0.004 |
| Attorney / lawsuit language | 0.84 | [0.78, 0.91] | 2.5e-05 |
| Formal scaffolding (‘Sincerely’) | 0.72 | [0.67, 0.78] | 2.7e-16 |
Specificity survives the controls and stays the strongest effect, so it isn’t just a side effect of writing more. Sentence count does nothing at all — I dropped it from the chart. How you structure the complaint doesn’t matter; what’s in it does.
The negative results are the interesting half. Threatening legal action, claiming damages and writing formally all reduce the odds of relief, and the formal letter format is the worst of the three.
Beating the form letters
Remember that form letters outperformed individual complaints overall. That gap disappears if you write a specific complaint:
| Group | n | Relief |
|---|---|---|
| All individually written | 30,628 | 61.2% |
| Form letters | 58,045 | 66.9% |
| Individually written, specific, cites a statute | 6,711 | 75.1% |
Writing your own complaint isn’t the disadvantage. Writing a vague one is.
What to take from this
Do this. List the specific accounts, inquiries and dates you’re disputing, and cite the specific provision that applies. Together those move the relief rate from 50.1% to 75.1%.
Don’t do this. Don’t threaten to sue. Don’t claim damages. Don’t write it as a formal letter with a salutation and a sign-off. All three go the wrong way.
Why it probably works like this. A complaint naming specific tradelines can be acted on — there’s something concrete to look up, verify and delete. A complaint asserting your rights in general terms, however forcefully, leaves nothing to act on, so it gets an explanation. Legal threats and formal styling are signals aimed at a human reader; the process rewards being actionable instead.
Three things this doesn’t show. The outcome is Equifax’s own disposition code — “closed with non-monetary relief” means they recorded doing something, not that anyone confirmed your report got fixed. The analysis is associational, and people who can list their accounts precisely may differ in other ways I can’t see, like having kept better records. And it’s one company over one quarter, though the other two bureaus are downloaded and ready for a replication that would settle it quickly.
The single thing I’d do next is swap redaction density for a direct count of distinct accounts named, which would test whether the mechanism is really the number of concrete items rather than redaction in general.