# AI for fraud detection and eligibility determination
Between 2013 and 2015, Michigan's automated unemployment system flagged roughly 40,000 residents for fraud. The system was called MiDAS (Michigan Integrated Data Automated System). It ran with minimal human review, assumed guilt from data mismatches, and imposed penalties of up to four times the benefits received.
Later reviews found the system was wrong in the vast majority of cases. A state audit concluded that around 93 percent of the fraud determinations made without human involvement were incorrect. People lost tax refunds, had wages garnished, and some filed for bankruptcy over money they never actually owed.
MiDAS is the cautionary tale for this entire lesson. It shows exactly what happens when you optimize a public benefits system to catch fraud without accounting for the cost of being wrong.
You can read more in the ProPublica coverage of MiDAS.
Public benefits programs (unemployment insurance, SNAP food assistance, Medicaid, housing vouchers) ask AI to do two related but distinct jobs.
Eligibility determination: Does this applicant qualify for the benefit? This is a rules-heavy classification problem, often driven by income thresholds, household size, and documentation.
Fraud detection: Is this claim or applicant misrepresenting facts to obtain benefits they should not get? This is an anomaly and pattern problem, usually with very few true positives hidden in a large population.
The critical insight: these two jobs have opposite failure modes, and confusing them is how MiDAS went wrong.
You cannot maximize both at once. Every model design choice trades one against the other.
Every fraud or eligibility model produces four outcomes. Understanding them is non-negotiable for anyone overseeing these systems.
| | Model says fraud/ineligible | Model says legitimate/eligible |
|---|---|---|
| Actually fraud/ineligible | True positive (caught) | False negative (missed) |
| Actually legitimate/eligible | False positive (wrongful denial) | True negative (correct) |
MiDAS was catastrophically tuned toward the bottom-left cell: false positives, wrongful accusations of innocent people.
Two metrics matter here:
Precision: Of everyone the model flagged, what fraction were actually fraudulent? Low precision means many innocent people get caught.
Recall: Of all actual fraud, what fraction did the model catch? Low recall means real fraud slips through.
MiDAS effectively pushed recall up (flag everything suspicious) at the expense of precision (accuracy of those flags). The result was tens of thousands of false accusations.
If you tell an engineering team "recover as much misspent money as possible," they will build a system that over-flags. Flagging more claims recovers more dollars in the short term, even if most flags are wrong, because penalties and clawbacks generate revenue.
This is a misaligned objective function. The objective function is the single quantity a model is trained to optimize. If that quantity is "dollars recovered," the model has no reason to care about wrongful denials.
A better objective weighs the real cost of each error type. In public benefits, the cost of a false positive is usually much higher than a missed fraud case, because:
You encode this by assigning an explicit cost to each cell of the confusion matrix, then choosing the decision threshold that minimizes total expected cost, not maximizes dollars recovered.
# Illustrative cost-sensitive threshold selection
# Costs reflect that wrongful denial is far more damaging than missed fraud
cost_false_positive = 100 # wrongful denial: harm, legal risk, lost trust
cost_false_negative = 5 # missed fraud: lost public funds
def expected_cost(threshold, y_true, fraud_scores):
flagged = fraud_scores >= threshold
fp = ((flagged) & (y_true == 0)).sum()
fn = ((~flagged) & (y_true == 1)).sum()
return fp * cost_false_positive + fn * cost_false_negative
# Sweep thresholds; pick the one with lowest total cost, not highest recoveryThe point of the snippet is not the code. It is that someone must consciously decide those two cost numbers. In MiDAS, no one did, so the system implicitly set the cost of a wrongful denial near zero.
MiDAS auto-adjudicated fraud with no human review. Any decision that harms a person (denial, clawback, penalty) should require human sign-off. AI can prioritize cases; it should not pronounce guilt.
Reframe the model's output. It does not detect fraud. It identifies cases that merit a human look. A data mismatch (an employer reports different wages than the claimant) is a question, not proof.
Higher penalties should require higher confidence and more evidence. MiDAS applied quadruple penalties on thin automated signals. That is backwards.
A model can be accurate overall yet wrong far more often for one group. In benefits programs this often tracks race, disability, or language. Measure error rates by subgroup before deployment, not after a lawsuit.
Many MiDAS victims could not reachreachThe number of unique people exposed to your message in a given period. Unlike impressions, reach counts each person once, no matter how often they see it.Voir la définition complète → a human or understand why they were flagged. A right to explanation and a fast, functioning appeals process is a design requirement, not a courtesy.
Vérification des acquis
1. Why does the lesson describe eligibility determination and fraud detection as having 'opposite failure modes'?
2. The MiDAS case is presented primarily as a cautionary tale about what design failure?
3. Fraud detection is characterized in the lesson as which type of problem?
4. Select ALL correct answers about why treating fraud detection like a routine eligibility classification (as MiDAS effectively did) is dangerous.
Sélectionnez toutes les réponses correctes.
5. Select ALL correct answers that correctly distinguish eligibility determination from fraud detection.
Sélectionnez toutes les réponses correctes.
Eligibility is often simpler than fraud, because the rules are written in law. That is an advantage: you can build much of it as transparent, auditable logic rather than an opaque model.
Prefer rules where the law is clear. If SNAP eligibility depends on income below a defined threshold for a given household size, encode that rule directly. It is explainable, testable, and defensible in an appeal. Do not use a black-box model to reproduce a rule you can write in one line.
Use models to assist, not replace, caseworkers. Machine learning is useful for triage (which applications look complete, which need follow-up documents) and for catching data entry errors. It should surface information to a caseworker, not lock a person out.
Design for missing and messy data. Many wrongful denials come from bad data, not fraud: a mismatched Social Security number, an employer's late filing, a name spelled two ways. Treat a data conflict as a prompt to ask the applicant, not as a verdict.
Verify against authoritative sources carefully. Cross-matching against wage databases or death records is common. But these sources contain errors too. The U.S. GAO has documented recurring accuracy problems in the very databases agencies rely on for verification. Never treat a single match as ground truth.
Before any public benefits AI goes live, an oversight body should confirm:
Michigan lacked nearly all of these. The technology was not the root failure. The absence of governance around it was.