Prototype 03 · corgi-insurance · synthetic outcomes, seeded · noindex

SB21-169 wants the disparate-impact test, not the model's internals. Here is the test, and the fix.

A protected-class denial under Colorado-style rules is examined on its outcome gap: do two subgroups get declined at materially different rates the risk does not justify? This harness runs that test on a synthetic decline-decision set, then shows the decoupled-classifier fix compressing the gap. The outcomes are synthetic and seeded; the headline compression result is Jeff's own published CAMH thesis figure, cited as track record.

SYNTHETIC OUTCOMES (seeded PRNG, no real applicants, no Corgi data). The 35% to ~1% compression is Jeff's published UofT/CAMH result, not a Corgi number.
Try a scenario: one click runs the test

Fine-tune (optional)

The single model trains one scorer for everyone; the decoupled approach fits per-subgroup calibration so the decline threshold means the same thing for each group. The fix Jeff's thesis used.

How much a correlated, non-risk-bearing feature skews the single model's subgroup decline rates. Illustrative dial; in a real book this is whatever your features encode.

Synthetic decline rate by subgroup

Track record (not a Corgi number). On a clinical corpus of about 1,500 OCR'd psychiatric notes (UofT MSc thesis, CAMH), this decoupled-plus-calibrated architecture compressed a 35-point false-positive-rate parity gap to roughly 1 point, with no degradation to overall accuracy, on a held-out set of 200 notes. Underwriting and claims fairness testing is the same problem shape. Published: jeffpinto.com/notes/decoupled-classifiers.

Sources & method