| name | fairness-auditing |
| description | Apply fairness auditing whenever the user describes a system, algorithm, policy, or process that allocates outcomes across groups and wants to know whether it is equitable. Triggers on phrases like "is this fair?", "disparate impact", "bias in the system", "does this discriminate?", "algorithmic fairness", "who's disadvantaged by this?", "equitable outcomes". Use proactively when reviewing any allocation mechanism, scoring system, or automated decision pipeline that affects people differently based on group membership. |
Fairness Auditing
Core principle: Fairness is a family of competing definitions, most mathematically incompatible. An effective audit names which definition applies, measures whether it holds, and identifies where bias enters so it can be addressed at the source rather than papered over at the output.
When to Use This Skill
- A system, algorithm, or policy produces different outcome rates across demographic or protected groups
- Someone asks whether an automated decision process is biased or discriminatory
- A scoring, ranking, or filtering mechanism is being designed or reviewed
- Outcome data reveals unexplained disparities
- Regulatory or compliance review requires fairness documentation
- An ethical-reasoning analysis flagged distributional concerns needing quantitative follow-up
Core Methodology
Step 1: Scope the Audit
Identify the system and its decision boundary:
- Decision: What outcome does it produce? (accept/reject, score, rank, allocate)
- Affected population: Who is subject to it?
- Protected attributes: Which group memberships are relevant? (race, gender, age, disability, income, geography — context-dependent)
- Ground truth: Is there a defensible "correct" outcome, or is it inherently value-laden?
Without clear scope, audits drift into vague concerns.
Step 2: Select Fairness Definitions
Choose criteria. These are often mutually exclusive — picking one means accepting trade-offs on others:
- Demographic parity: Equal outcome rates across groups. Use when there is no legitimate reason for differential rates.
- Equal opportunity: Equal true positive rates across groups. Use when goal is equal access for those who qualify.
- Predictive parity: Equal precision across groups. Use when predictions must be equally reliable for all.
- Individual fairness: Similar individuals receive similar outcomes. Use when a meaningful similarity metric exists.
- Counterfactual fairness: Outcome wouldn't change if protected attribute were different, all else equal. Use for causal analysis of specific decisions.
State chosen definitions and why. Flag conflicts — this is a value judgment, not technical.
Step 3: Audit the Data
- Historical bias: Does training/reference data reflect past discrimination? (e.g., hiring data from a period of exclusion)
- Label bias: Were ground-truth labels generated by a biased process? (e.g., arrest records as proxy for crime)
- Representation gaps: Are some groups underrepresented, hurting model performance for them?
- Proxy variables: Do ostensibly neutral features (zip code, name, school) leak group membership into the decision?
For each finding, note whether bias is correctable at the data level or baked into the problem definition.
Step 4: Measure Outcome Disparities
- Compute acceptance/rejection rates, score distributions, allocation shares per group
- Calculate disparity ratios (selection rate of group A / group B)
- Apply the four-fifths rule: ratio below 0.8 signals adverse impact under US employment law
- Test statistical significance — small samples produce large-looking disparities by chance
- Check calibration: same score means the same thing across groups?
Report raw numbers alongside ratios. Ratios without base rates mislead.
Step 5: Conduct Intersectionality Analysis
Fairness can hold per attribute independently but fail at intersections:
- Cross-tabulate outcomes by combinations (race x gender, age x disability)
- Check whether intersectional subgroups face compounded disadvantage
- Verify sample sizes support meaningful conclusions — flag where they don't
Group-level fairness does not imply subgroup-level fairness.
Step 6: Recommend Mitigations
For each disparity, propose interventions at the appropriate stage:
- Pre-processing: Debias/rebalance training data, transform proxies, augment underrepresented groups
- In-processing: Add fairness constraints to objective, adversarial debiasing, regularization penalizing group disparity
- Post-processing: Adjust thresholds per group to equalize target metrics, reject-option classification
For each mitigation: what fairness metric improves, what accuracy/other metric may degrade, whether the trade-off is acceptable given stakes.
Output Format
🔍 Audit Scope
- System under audit: [name and description]
- Decision type: [accept/reject, score, rank, allocate]
- Affected population: [who is subject]
- Protected attributes examined: [list]
- Fairness definitions applied: [which and why]
⚖️ Data Audit Findings
| Finding | Category | Severity | Correctable? |
|---|
| [finding] | Historical / Label / Representation / Proxy | High/Med/Low | Yes/Partial/No |
📊 Outcome Disparity Measurements
| Group | Outcome Rate | Disparity Ratio (vs. reference) | Statistically Significant? |
|---|
| [group A — reference] | [rate] | 1.00 | — |
| [group B] | [rate] | [ratio] | Yes/No |
| [intersection: group x attribute] | [rate] | [ratio] | Yes/No |
⚠️ Fairness Violations
For each:
- Definition violated: [criterion]
- Where bias enters: [data, model, decision rule, or feedback loop]
- Severity: [High/Med/Low based on magnitude and stakes]
- Affected groups: [who bears the cost]
🛡️ Mitigation Recommendations
| Mitigation | Stage | Fairness Gain | Accuracy Trade-off | Recommendation |
|---|
| [intervention] | Pre/In/Post | [improves] | [degrades] | Adopt / Investigate / Monitor |
⚠️ Residual Risk Assessment
- Unresolved disparities: [what remains after mitigation]
- Monitoring plan: [how to detect drift over time]
- Escalation to decision-synthesis: Feed fairness criteria and red lines using ethical-reasoning's Contract F format — violations become red lines, disparity measurements become scoring criteria
Common Traps
- Fairness gerrymandering — choosing whichever definition makes the system look best. State and justify your definition up front.
- Proxy blindness — removing the protected attribute but leaving correlated features that reconstruct it. Audit proxies, not just explicit attributes.
- Aggregate fairness, subgroup harm — overall parity can mask severe disparities at intersections. Always check intersectionality.
- Snapshot auditing — measuring once and assuming it holds. Systems drift; feedback loops amplify small biases. Build ongoing monitoring.
- False precision — disparity ratios to three decimal places on small samples. Report confidence intervals; flag inadequate samples.
Thinking Triggers
- "Which fairness definition are we implicitly using, and who chose it?"
- "If we removed the protected attribute entirely, would outcomes actually change?"
- "What does 'fair' mean to the people most affected by this system?"
- "Are we optimizing for the appearance of fairness or actual equitable outcomes?"
- "What feedback loops could amplify today's small disparity into tomorrow's large one?"