Cloud & platform · hire.fairhireCI passing
Recruitment and Applicant Tracking System
An ATS that makes interviews pick better people and checks, per stage, that it treats groups fairly.
Open the live demo View the code Evaluation report Demo tour Run it ›_ last push 1 day ago
0.58 → 0.97hire-rate ratio between groups on 15 held-out companies, plain rubric panels vs the fair process
+0.23 SDbetter hires with calibrated rubric scores than one interviewer's overall impression
37 of 53biased interviewers found by the audit, 1 false flag among 157 others
demo Demo tour
Screenshots from the running application, with its synthetic demo data. Select one to enlarge.
01 The problem
Hiring rests on interviews, and interviews are noisy: one person's overall impression, debriefs anchored by the first voice, interviewers who are simply harsher or kinder, and some who favour their own group or a well-known school. Different candidates meet different panels, so luck and bias decide close calls, and most systems never measure either.
02 How it works
- Blind screen
- Rubric panels
- Leniency calibration
- Interviewer audit
- Offers
- Four-fifths check
03 What I built
- Panels that score a rubric per competency independently, with each interviewer's leniency learned from past panels (alternating least squares, shrunk) and taken out.
- An audit comparing each interviewer with co-panelists on the same candidates, own group versus others, flagging the clearest case first and removing it before looking again; flags change who sits on panels, never a candidate's score.
- Schools hidden from the screen and interview packet, a four-fifths check per stage in both directions, and a blind résumé screen where code redacts identity and education and Claude must quote the résumé for every level.
04 What I learned
Calibration made hires better and the group ratio worse: with noise removed, a consistent bias decides more close calls. Fairness needed its own fix.
A unit test written after the held-out run showed the audit flagging unbiased colleagues of a biased interviewer; it now peels off the clearest case first. Both runs are in the ADR.
The four-fifths check was one-sided and marked a company passing where group A was hired at 0.6 of group B's rate; it now works both ways.
05 Known limitations
Every repository documents what it doesn't do yet. The main ones:
- A simulation: bias sizes are assumptions, two groups only.
- Per company, 9 of 15 held-out companies were still below four-fifths (chance alone: about 1); the audit needs history.
06 Stack
PythonFastAPINumPyClaude APIDocker
The repository has the design document, operations runbook, full evaluation report and known limitations. All data is synthetic, generated by code in the repository.
run Run it yourself
Every project runs on a laptop: no cloud account and no paid API needed.
git clone https://github.com/codeROCK-IZZY/applicant-tracking-system.git
cd applicant-tracking-system
pip install -e ".[dev]" && pytest
ats evaluate --gate # writes eval/reports/report.html