# Fair housing and anti-discrimination checks in scoring models
A property manager in Ohio fed a tenant screening algorithm ten years of leasing data. The model never saw race. It didn't need to. It learned that applicants from three zip codes got rejected more often, and those zip codes were over 70% Black residents. The company settled. This is the story behind most fair housing algorithm cases: nobody typed in a protected characteristic, the data did it for them.
This lesson gives you the checks regulators actually run when they audit a scoring model, whether it prices rent, ranks tenant applicants, or scores mortgage risk.
Three frameworks matter most in the US:
In the EU, the General Data Protection Regulation (GDPR) restricts processing of "special category" data (race, ethnicity, religion, health) and grants a right to explanation for automated decisions under Article 22. The EU's AI Act (phasing in through 2026) classifies credit and tenancy scoring systems as "high-risk," triggering mandatory bias testing and documentation obligations.
HUD issued specific guidance in 2024 clarifying that tenant screening algorithms using criminal or eviction records can trigger disparate impact liability if not narrowly tailored. That guidance is the direct ancestor of the checks below.
A proxy is a variable that correlates tightly with a protected class even though it looks neutral.
Common real estate proxies:
| Variable | Proxies for |
|---|---|
| Zip code | Race, national origin |
| First name | Race, national origin, sex |
| Eviction record | Race (eviction rates are not uniform across groups, per Eviction Lab, Princeton) |
| Criminal record | Race (well documented in US arrest data disparities) |
| Source of income (housing vouchers) | Race, familial status, disability |
| Employment gaps | Sex (maternity), disability |
| Social media / rental history "soft" data | National origin, religion |
None of these need to be intentionally included to cause harm. A rent-pricing model trained on "market comparables" can absorb historical redlining patterns baked into decades-old price data. Redlining was the 1930s practice of denying mortgages in maps of minority neighborhoods, and its price effects persist in comps datasets today.
Regulators and fair housing auditors typically run four checks. Treat this as your working checklist.
Test every input feature against protected-class membership (where legally obtainable, often via Bayesian Improved Surname Geocoding, BISG, a method the CFPB itself uses to estimate race/ethnicity when it isn't directly recorded). Flag any feature correlated above a chosen threshold (commonly 0.3 to 0.4 in practice, treat as illustrative, not a legal bright line).
Borrowed from EEOC employment guidance but widely applied in housing: compare approval rates across groups.
Worked example:
A ratio below 0.80 (80%) is a common trigger for further scrutiny, not automatic illegality, but it shifts the burden to justify the practice.
Even without a banned variable, check which features drive decisions using tools like SHAP (SHapley Additive exPlanations). If "zip code" or "distance to a specific neighborhood" ranks high in a rent-pricing model, that's a red flag worth documenting and possibly removing or reweighting.
import shap
explainer = shap.TreeExplainer(rent_model)
shap_values = explainer.shap_values(X_test)
# Rank features by mean absolute SHAP value
importance = dict(zip(X_test.columns, abs(shap_values).mean(axis=0)))
sorted(importance.items(), key=lambda x: -x[1])[:10]This surfaces exactly what regulators ask for in discovery: "show us what the model actually weighted."
Take two synthetic applicants, identical except for a name signaling different ethnicities (a classic paired-testing method HUD itself uses in fair housing audits, historically with human testers, now increasingly simulated). If the score changes meaningfully, the model is proxying on the name or on features correlated with it.
A defensible model needs a paper trail, not just a clean output.
Property technology vendors like RealPage and CoreLogic have faced litigation and regulatory scrutiny (including a 2024 DOJ antitrust action against RealPage, distinct from but adjacent to fair housing claims) over algorithmic tenant screening and pricing tools, which is why documented audit trails are now a procurement requirement for many large landlords, not just a best practice.
Knowledge check
1. In the Ohio tenant screening example, how did the algorithm produce racially disparate outcomes without ever being given race as an input?
2. Why does the disparate impact doctrine matter so much for scoring model audits?
3. A mortgage risk scoring model feeds into credit approval decisions. Which two enforcement regimes are most directly relevant to auditing it in the US?
4. Select ALL correct answers about why a variable like zip code can create legal risk in a housing scoring model even if race is never included as a feature.
Select all the correct answers.
5. Select ALL correct answers about how EU rules differ from the US disparate impact framework in regulating scoring models.
Select all the correct answers.
1. Pull the model's feature list. Cross-reference against a proxy table like the one above.
2. Compute approval or pricing outcomes by protected-class proxy group (using BISG or self-reported data where available).
3. Apply the four-fifths rule. Flag ratios below 0.80.
4. Run SHAP or an equivalent explainability tool on the top decision driver.
5. Document everything. If HUD or the CFPB asks, the absence of a test is itself treated as a governance failure.
For a deeper technical reference on fairness metrics applicable across sectors, the NIST AI Risk Management Framework is a solid, free, non-sector-specific starting point that housing auditors increasingly cite.
🎬 [VIDEO: "How Algorithms Can Discriminate (and What to Do About It)" - youtube.com/results?search_query=algorithmic+bias+housing+fair+lending - search for recent explainer content from CFPB or academic channels covering proxy discrimination in lending and housing models]