Hiring Fairness & Selection ROI
hiring_fairnessGroup-level fairness and value analysis of a hiring process. From counts per stage and group (applicants, selected; optionally per job/location) it returns: selection rate and impact ratio of every group vs the highest-rate group at every stage (EEOC 4/5 rule), whether each gap is larger than chance (Fisher's exact test for small groups, two-proportion z-test otherwise), extra selections needed to reach the line, the end-to-end funnel, and a like-for-like check across jobs (Mantel-Haenszel, flags Simpson's paradox). From anonymous score/outcome pairs: whether the test predicts success (correlation with 95% range, range-restriction correction), expected success rate of hires (Taylor-Russell), whether it under-predicts a group (Cleary), a fair pass mark, and the dollar value net of cost (Brogden-Cronbach-Gleser) with break-even. Decision cards first: REVIEW THIS STAGE, COMPARE LIKE WITH LIKE, SMALL GAPS ADD UP, WATCH, GET LEGAL REVIEW, TEST PREDICTS / DOES NOT PREDICT, TEST UNDERRATES A GROUP, SET CUTOFF, WORTH THE COST ... Never scores or ranks individuals. Analysis, not legal advice. Up to 5,000 rows; larger files: hiring_fairness_get_engine.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| alpha | No | ||
| currency | No | USD | |
| validity | No | Known validity (correlation of the method with job success), if no score data. | |
| base_rate | No | Share of people who succeed in the job without the method. | |
| candidates | No | Alternative to stage_counts: one row per candidate per stage with ONLY stage, group, selected (yes/no) and optional stratum. Aggregated at once; never send names, emails or ids. | |
| four_fifths | No | ||
| group_label | No | e.g. gender, race, caste, age band. | group |
| stage_counts | No | Group-level counts, one row per stage x group (x stratum): stage, group, applicants, selected, optional stratum (job/department/location). Stages in funnel order. Common ATS headers (Gender, Applied, Hired ...) are understood. | |
| tenure_years | No | ||
| annual_salary | No | Used for the value spread (40% of salary) if sd_performance_value is absent. | |
| hires_per_year | No | ||
| min_group_size | No | ||
| score_outcomes | No | Anonymous pairs for a validity study: score, outcome (optional), group (optional). No identifiers. | |
| currency_symbol | No | ||
| reference_group | No | Compare against this group (default: highest rate). | |
| selection_ratio | No | Share of applicants hired (e.g. 0.2). | |
| current_validity | No | Validity of the method it replaces (0 = random / none). | |
| min_cell_display | No | Counts below this are hidden in the output (privacy). | |
| success_threshold | No | Outcome value that counts as success. | |
| cost_per_applicant | No | ||
| sd_performance_value | No | Money value of one SD of job performance per year. | |
| range_restriction_ratio | No | SD of scores among applicants / SD among hires (corrects r). | |
| current_cost_per_applicant | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| alerts | No | ||
| status | Yes | 1 = ok, 0 = nothing could be analysed | |
| message | No | ||
| metadata | Yes | ||
| validity | No | ||
| decisions | Yes | Plain-language cards, priority order. Relay these first. | |
| legal_note | Yes | ||
| assumptions | No | ||
| selection_roi | No | ||
| adverse_impact | No | ||
| cutoff_analysis | No | ||
| data_quality_report | No |