STATUS 2026-07-28: contains claims superseded by the resume decision + the race-subspace runs (the set of directions inside the model that carry race). Do not send externally until rebuilt. See docs/BENCHMARKS.md.

Demo · live counterfactual fairness audit

Audit any decision document. Six domains, sub-second.

Paste a loan note, performance review, or discharge summary. We score your text as written, then score it again with the model’s internal race signal subtracted out, and report how far the two scores move apart across six domains as an internal index. The index carries no legal threshold: the EEOC 4/5ths disparate-impact ratio is a pool statistic — selection rates across candidates — so it cannot be computed from one pasted document. Every audit returns a content hash you can recompute offline.

How this works

What a “proxy” is. Something on the record that isn’t race — but gives it away anyway. A ZIP code is not race. But if a neighbourhood is 96% Black, writing that ZIP down tells a computer nearly as much as writing the person’s race would. Same for the university: an HBCU is not a race, but it is a very good clue. Nobody has to intend this. The model works it out on its own.

How to read the detection scores below. They run from 0.5 to 1.0. 0.5 means the model is guessing at random — it has learned nothing from the record. 1.0 means it is right every single time. There are only two possible answers, so random guessing gets you 0.5. Anything above that is real information the model picked up. (The technical name for this measure is AUC.) The 0–10 risk and attribution numbers in the audit result above are a different, internal scale.

  • Detection is the product. Erasure is not removal. Stripping out three race directions still leaves race readable at 0.947-0.993 on the same model; 0.949-0.998 when the clue arrives through a channel the erasure was never fitted on — a channel being one route the clue travels, such as the ZIP code, the school or the name; and 0.996-1.000 when race is erased from one channel and then read off another (4 models x 600 real resumes). Removing race from ONE channel took 12 directions — that pushed the surname down to 0.535 and 0.508 depending on which reader was used, both near the 0.5 guessing floor — and left ZIP 0.9936, school 0.9958, first name 0.986 untouched. The edit is cheap (the qualification score barely moves, 0.4677 -> 0.4672) but it moved top-10 selection share beyond a random-direction control on 1 of 4 models. The neutralized vector on this page is a comparison control, not a de-raced text.
  • Random-direction floor. Editing the model along a random direction of the same size already changes some behaviour, so that is the floor a real edit has to beat — it is not a zero (Rogue Scalpel, arXiv 2509.22067).
  • What is verified. Detection, across 4 models: ZIP 0.984 — right about 49 times out of 50; HBCU 0.983 — about 49 times out of 50; gender 0.979 — about 24 times out of 25; name 0.945 — about 19 times out of 20. The 12 ZIP areas used were each checked against the 2020 Census (12/12 confirmed, table DHC P8), and HBCU status is statutory. Dose-response: the higher a ZIP code’s Black share in the census, the higher the score, in perfect order (rank correlation 1.000). Collateral damage — how much the edit disturbs everything else — is +/-0.008 at most, 0.002 on average.
  • Re-measured 2026-07-29 at full resume length. The earlier detection figures (ZIP 0.991 / HBCU 0.991 / gender 0.986 / name 0.964) were taken on 420 characters / 160 tokens (word-pieces) per resume — about 7% of a median one — which left the injected marker at roughly 17x its natural share of the input. The re-run uses 8,000 characters / 2,048 tokens (90.8% of all text), the same four models (gemma-2-9b, Mistral-7B-v0.2, Qwen2.5-1.5B, Qwen2.5-7B) and 500 matched pairs per clue tested. Every number fell, and the name fell hardest: the gap between the proxies (the ZIP code and the school) and the name widened from 0.026 to 0.039. Truncation was flattering the name, not the proxies — read at full length, what a resume leaks about race is the ZIP code and the school, more so than the name.
  • Scope. The race direction is validated on a resume corpus that is 41% software/IT and 23% finance, so the claim scopes to white-collar tech and finance screening — not hiring generally. The criminal-sentencing, moderation, VC, police and higher-education domains shown here are unvalidated: treat their output as exploratory, not as an audit result.
  • No legal metric is produced. The EEOC 4/5ths disparate-impact ratio is a pool statistic — selection rates across candidates — and cannot be computed from one pasted document. This page reports an internal index with no legal threshold and makes no Title VII finding. ECOA disparate impact was deleted 21 Jul 2026 (91 FR 21620).
  • Intersectional. Scored from what the race signal and the gender signal share inside the model — the part they have in common, per domain.
  • Receipt. Every call writes a timestamped record — operators applied, model version, scores, plus hashes of the input and the API key rather than the raw values — to an append-only log you can retrieve by receipt id. The id is an unkeyed SHA-256 you can recompute offline, so it attests the record's contents but not its origin: not a signature, and the log is not yet on durable storage.