
Illinois verbiedt het postcodeveld dat de EU AI Act wil bewaren. Ik bouwde een AI-aanwervingsaudit die dat zegt in plaats van een voldoende te printen.
Op 2 december 2025 publiceerde de New York State Comptroller een beoordeling van dezelfde steekproef van 32 bedrijven die de stedelijke afdeling voor Consumentenen Werknemersbescherming al had onderzocht onder Local Law 144, en telde 17 mogelijke overtredingen waar DCWP er één had gevonden. DCWP stemde ermee in om over te gaan tot proactieve handhaving.
Ik las dat en veronderstelde dat het moeilijke ingenieursprobleem detectie was: bouw iets dat de vooroordelen pakt die in de eerste doorgang zijn gemist. Het schrijven van de regelpakketten veranderde mijn mening, want detectie bleek de gemakkelijke helft te zijn. De moeilijke helft is dat een werkgever die geautomatiseerde aanwervingstools inzet in New York, Colorado, Illinois, Texas, Californië en de EU verantwoording moet afleggen aan zes toezichthouders die zes verschillend gevormde documenten willen, en op zijn minst op één plek willen twee van hen tegenovergestelde dingen van dezelfde gegevenskolom.
Dus bouwde ik daarvoor een nalevingsoverlay, een console die ik Clarion heb genoemd, die bovenop de AI-aanwervingstools van de werkgever zit, één vendorscore-export leest, elke nadelige-impactstatistiek in deterministische code berekent, en die ene audit uitwaaiert naar zes jurisdictievormige deliverables. U kunt zien hoe het werkt op veriprajna.com/demos/ai-hiring-compliance. Alles hieronder wordt uitgevoerd tegen een vooraf ingezaaide synthetische export van 1.040 kandidaatrecords voor een fictieve werkgever, "Acme Logistics, Inc.", op requisitie REQ-2026-0412. Ik heb de overtreding zelf in die data geplant, wat de enige reden is dat ik u precies kan vertellen wat de engine had moeten vinden.
De audit die slaagt is niet de audit die de wet vraagt
Ik heb de dataset zelf aangemaakt, dus het eerste resultaat wist me toch te ergeren. De marginale vier-vijfdentest, de test die een zelfaudit van een leverancier oplevert, slaagt vlekkeloos: minimale race-impactratio 0,8196, waarbij Hispanics en Zwarte mensen gelijkstaan op dat minimum, en minimale geslachtsratio 0,8744. Beide liggen op of boven de 0,80-grens. Niets in de code beweert dat die test slaagt. De 0,8196 is wat de berekening teruggeeft op het testbestand en haalt de grens op eigen kracht. Op het scherm zegt de tariefkaart het duidelijk: de leverancier stopt hier.
Local Law 144 stopt daar niet. Het vraagt om intersectionele ras-naar-geslacht-ratio's, en de synthetische kandidaten worden gescoord door drie gesimuleerde tools (een Workday-Spotlight-achtige scorer, een HireVue-achtige videoronde, een Eightfold-achtige match-engine) die testadapters zijn over die synthetische data, archetypes in plaats van integraties. Snijd dezelfde records op ras én geslacht en het beeld keert om. Ten opzichte van de referentiecel Wit / Mannelijk, die 68 van 130 kandidaten selecteert met 52,31%, selecteert de cel Zwart / Vrouwelijk 44 van 130, ofwel 33,85%. Impactratio 0,6471. Hispanics / Vrouwelijk slaagt ook niet, met 0,7647.

Hispanic / Vrouwelijk is waar ik ruzie had met mijn eigen engine. Onder Benjamini-Hochberg-fout-ontdekkingsratecontrole bij alfa 0,05 is alleen de cel Zwart / Vrouwelijk statistisch robuust, bij q = 0,0185. Hispanic / Vrouwelijk komt uit op q = 0,1629, dus markeert de engine dit en weigert er expliciet een significante bevinding van te maken. Ik wilde dat beide cellen meetelden, omdat twee falende cellen een beter verhaal is dan één. De engine onderscheidt een robuuste bevinding van een toevallige, wat dezelfde discipline is die ik op mijn eigen cijfers zou willen toepassen als ik de werkgever aan de andere kant van het rapport was.
Zes toezichthouders, zes verschillende documenten
Ik schreef de zes regelpakketten één voor één en bleef proberen ze samen te vatten in één score, omdat één getal is wat een dashboard kan bevatten en wat een koper verwacht. Het overleefde nooit het contact met de statuten. NYC wil een intersectioneel nadelige-impactrapport plus een gepubliceerde publieke samenvatting. Colorado's SB 24-205 wil een gedocumenteerde redelijke-zorgimpactbeoordeling en een risicobeheersingsprogramma, en specificeert helemaal geen methodologie, van kracht op 30 juni 2026. Texas TRAIGA verwerpt disparate impact als een zelfstandige basis en stelt vragen over opzet. De FEHA ADS-wijzigingen van Californië zijn van kracht sinds 1 oktober 2025 en vragen opnieuw om een eigen documentatievorm. De EU AI Act behandelt werving als Annex III hoog-risico en vraagt om Article 10-gegevensbeheer plus een Article 11-technisch dossier, vanaf 2 augustus 2026.
De enkele score stierf op het Texas-pakket. Ik had de NYC-deliverable al gebouwd op basis van intersectionele ratio's, en TRAIGA maakt die exacte statistieken bewijsrechtstreeks irrelevant voor haar eigen beoordeling, zodat er geen weging was die ik kon toepassen waarmee één getal beide dingen kon betekenen. Zes verschillende vragen, gesteld in zes verschillende vormen, en een eerlijkheidsscore beantwoordt er ruwweg anderhalve. Dus produceert Clarion zes deliverables, elk met zijn eigen citaat, ingangsdatum en vereiste vorm, en de kopregeltegels van de console rapporteren de dekking in plaats van een cijfer: Jurisdictie-deliverables 6, Laagste Impactratio 0,65, Items die menselijke actie vereisen 9.

Die gemengde kolom is de eerlijke output, en het is ook de output die niemand levert. Onderzoekers van Cornell, Data & Society en Consumer Reports controleerden 391 NYC-werkgevers op de audit die Local Law 144 vereist en vonden gepubliceerde vooroordeelaudits voor 4,6% van hen (FAccT 2024). De verplichting is van kracht. Naleving ervan grenst aan een afrondingsfout, en mijn lezing is dat een groot deel van dat gat werkgevers zijn die er oprecht van overtuigd zijn dat de enkelvoudige slagende ratio van hun leverancier de kwestie heeft beslecht.
Cramér's V 0,3321 op zip_region, en twee regimes die tegengestelde dingen willen
Ik schreef een resolver voor het postcode-probleem voordat ik het postcode-probleem begreep, en het verwijderen ervan was het moment waarop het product van vorm veranderde. De engine detecteert proxies voor beschermde klassen door correlatie, en zip_region komt terug op Cramér's V 0,3321 ten opzichte van ras, 0,3253 bias-gecorrigeerd, boven de drempel van 0,2. Het is een proxy. Dit is ook geen alles-markerende heuristiek: school_tier zit op 0,0711 in dezelfde run en slaagt.
Illinois HB 3773, van kracht sinds 1 januari 2026, verbiedt postcodes als proxies voor beschermde klassen, zodat de Illinois-veilige configuratie geografie maskeert. EU AI Act Article 10(3) vereist trainingsdata die relevant, representatief en volledig is, wat in de praktijk leunt op de geografische dekking die Illinois u zojuist heeft gevraagd te verwijderen. Maskeer het veld en de EU-representativiteitsverplichting verzwakt. Houd het en Illinois wordt geschonden. Eén modelconfiguratie kan niet aan beide voldoen.
Mijn resolver had een winnaar gekozen. Het vergeleek de twee blootstellingen, koos de grotere, en gaf een schone status af voor de andere kant, wat precies het gedrag is dat een valse verklaring in een ingediend document plaatst. Ik verwijderde het en verving het door een uitspraak die de gate mag bereiken: CONFLICT. De reconciliator schrijft dan een juridische-strategienota in plaats van een certificering. Voer twee implementatieconfiguraties uit, een volledige geografische maskering voor Illinois-inferentie en een grovere regiofeature voor EU-trainingsdata. Of, als één configuratie verplicht is, kies het regime met de grotere blootstelling en documenteer het geaccepteerde risico, met de vermelding dat EU-hoog-risicoboetes oplopen tot het grootste van 15 miljoen euro of 3% van de wereldwijde jaarlijkse omzet als wettelijk maximum.

Een dashboard dat 'compliant' zegt is, in een rechtszaal, een bewijsstuk. Een memo die zegt dat we het wisten, beide opties hebben becijferd en een keuze hebben gemaakt, is een verdediging.
Dat is de afweging die ik als General Counsel elke keer zou maken, en het is de afweging die geen enkel product dat gebouwd is om een koper gerust te stellen zal aanbieden, omdat de geruststellende versie beter verkoopt totdat de rechtbankdeponering er is.
Ik probeerde mijn eigen systeem over te halen tot een voldoende
Ik voerde het experiment uit waarvoor ik het meest bang was, namelijk om erachter te komen of ik me via een prompt een betere uitspraak kon toe-eigenen. Er zijn zes jurisdictie-agenten in Clarion, plus een conflictreconciliator en een adversariële scepticus, gebouwd op Pydantic AI en provider-wisselbaar. Ik herschreef de vertellersprompt om royaler te zijn, zoals een leverancier onder kwartaaldruk royaal zou zijn. De tekst werd warmer. Geen enkel getal bewoog en geen enkele uitspraak veranderde, omdat elke statistiek, elke drempelvergelijking en elke gate-beslissing in engine.py en rulepacks.py leeft, volledig buiten het agentframework.
Dezelfde eigenschap treedt ook de andere kant op. Zonder enige modelprovider geconfigureerd valt de crew terug op deterministische sjablonen en draait de app identiek, dezelfde zes deliverables, dezelfde 0,6471, hetzelfde CONFLICT. Agenten adviseren, code beslist, en 12 van 12 engine-tests verankeren de geplante grondwaarheid zodat de marginale voldoende en het intersectionele falen niet van elkaar kunnen wegdrijven tussen runs.
Agenten kunnen een statuut lezen en een memo schrijven. Ze kunnen niet het ding zijn dat beslist dat een drempel is overschreden, omdat hun instemming te koop is voor een betere prompt.
Ik begon niet met die opvatting. Ik begon met de gedachte dat de agenten het product waren en de rekenkunde de loodgieterij, en ik had het precies verkeerd om. Ik wisselde de provider, wisselde de prompt, draaide het zonder sleutel, en de engine gaf nog steeds 0,6471 bij Zwart / Vrouwelijk en CONFLICT op zip_region. Alles wat ik verbeter aan het model verbetert de tekst van de memo en niets wat een auditor zou controleren.
Drie juridische theorieën die een geslaagde vooroordeelaudit nooit heeft aangeraakt
Ik bouwde de adversariële scepticus met de verwachting dat hij over statistieken zou redetwisten, en hij besteedde zijn tijd aan redetwisten over reikwijdte. Hij weigert drie dingen groen licht te geven, en elk is een aparte juridische theorie die een geslaagde vooroordeelaudit niet dekt.
De eerste is zelfclassificatie. Een leveranciersmemo die beweert "onze scorer is geen AEDT" wordt verworpen, omdat onder de agenttheorie opgeworpen in Mobley v. Workday een tool die kandidaten aanbeveelt of filtert binnen de beslissing valt. Die theorie is onbeslist, geen uitspraak, waardoor het punt naar menselijke raadsman gaat voor een reikwijdte-attestatie in plaats van naar een statuskleur.
De tweede is toegankelijkheid. Van de 432 kandidaten die de videoronde doorliepen, is het woordfoutpercentage 0,0794 voor standaard spraak en 0,3016 voor de 104 kandidaten met niet-standaard spraak, een 3,8-voudige discrepantie die Local Law 144 nooit test, omdat LL144 over ras en geslacht gaat. De theorie opgeworpen in D.K. v. Intuit/HireVue is een ADA-theorie en overleeft een perfecte vooroordeelaudit onaangetast. Clarion detecteert de discrepantie en stuurt het door naar een menselijke ADA-beoordeling. Het bouwt de accommodatieworkflow niet, en ik ga ook niet doen alsof dat wel zo is.
De derde is FCRA, die zich helemaal niet bekommert om eerlijkheid. In deze export werden 510 kandidaten gescoord op basis van door derden gescrapte gegevens en gefilterd op een numerieke score, het patroon dat aan de orde is in Kistler v. Eightfold. Als het platform een consumentenrapportagebureau is, heeft elke gescoorde kandidaat recht op een nadelige-actiebericht en een bezwaarpad, ongeacht hoe evenwichtig de uitkomsten zijn. Clarion detecteert de trigger en stuurt het door naar nadelige-actie- en bezwaarinfrastructuur. Het bouwt ook geen kandidaatgericht portaal. Dit vind ik het minst intuïtieve van de drie, en het meest waarschijnlijk over het hoofd te worden gezien door een team dat alles goed heeft gedaan op het gebied van eerlijkheid, omdat niets in de statistieken u het antwoord geeft. De vraag die FCRA stelt, gaat over wat het platform is, en een bedrijf kan elke impactratio in het rapport halen en toch honderden mensen een bericht schuldig zijn dat het nooit heeft verstuurd.

Het pakket dat ik zou overhandigen aan degene die het ondertekent
Ik hield één vraag de hele build voor me: wat heeft de persoon die dit daadwerkelijk ondertekent nodig, en dat is geen score. Over de zes regimes beoordeelt de engine 13 verplichtingen en geeft 2 PASS, 2 FAIL, 7 NEEDS_PROOF en 2 CONFLICT terug. Uitgedrukt als dekking op deze vooraf ingezaaide synthetische export zijn 2 van de 13 verplichtingen automatisch voldaan door data alleen, en 9 van de 13 worden doorgestuurd naar een benoemde persoon omdat ze NEEDS_PROOF of CONFLICT zijn. Op een systeem dat als automatisering wordt verkocht, ziet die verhouding eruit als mislukking. Als audit is het de enige vorm waaronder ik mijn naam zou zetten.
De export is een SHA-256 hash-geketend bundel van 17 knooppunten, waarbij elk knooppunt verwijst naar de hash van het voorgaande knooppunt, zodat elke bewerking van een knooppunt de keten verbreekt. Het wordt uitgevoerd als JSON en als een afdrukbaar HTML-pakket, waarbij elk getal zijn invoergegevens en berekening meekrijgt en elke uitspraak zijn citaat meekrijgt. De keten wordt bij elke run geverifieerd en de manipulatiebeveiliging is unit-getest.

Veriprajna ondertekent dit niet. De onafhankelijke Local Law 144-auditorrol behoort toe aan bedrijven zoals DCI, ORCAA en Secretariat, en het gehele ontwerpdoel van het pakket is dat een van hen het kan ondertekenen zonder het eerst te hoeven herschrijven. De doorloop van de volledige run, inclusief de conflictnota, is te vinden op veriprajna.com/demos/ai-hiring-compliance.
En als u liever de gate ziet weigeren dan mij het horen beschrijven, hier is de volledige run van begin tot eind, inclusief de conflictnota.
De conflictnota laat een werkgever precies zo compliant als de dag ervoor. Wat het toevoegt is een afweging die leesbaar, gedateerd en toerekenbaar is, zodat twee jaar later, wanneer iemand vraagt wie heeft besloten het postcodeveld te behouden en wat ze wisten toen ze de beslissing namen, er een document is dat antwoord geeft in plaats van een groen badge dat moet worden uitgelegd.








