Bias-audit artifacts for automated employment decision tools (AEDTs): NYC Local Law 144 selection/scoring rates and impact ratios, EEOC four-fifths adverse-impact tables, and a score-traceability report schema.
Project description
aedt-audit
Bias-audit artifacts for automated employment decision tools (AEDTs).
If your organization uses AI or algorithms to screen, score, or rank job candidates, U.S. rules already tell you what you must measure:
- NYC Local Law 144 (2021) requires annual bias audits of AEDTs and public summaries of selection/scoring rates and impact ratios — by sex, by race/ethnicity, and intersectionally (6 RCNY § 5-300 et seq.).
- The EEOC Uniform Guidelines (29 CFR § 1607.4(D)) treat a selection rate below four-fifths (0.8) of the highest group's rate as evidence of adverse impact.
- The NIST AI Risk Management Framework expects measurable, documented evaluation of AI systems used for consequential decisions.
aedt-audit computes those artifacts from a plain DataFrame — no model access,
no PII required — and renders the publishable summary tables.
pip install aedt-audit # + [schema] for traceability validation
Quickstart
from aedt_audit import ll144_summary, synthetic_applicants, AuditMetadata
# Demo on synthetic data with a deliberately biased scorer:
pool = synthetic_applicants(5000, seed=0, score_bias={("sex", "female"): -8.0})
summary = ll144_summary(
pool,
outcome="selected", # or score="score" for the median-rule scoring rate
metadata=AuditMetadata(tool_name="example-screener", data_start="2025-01-01", data_end="2025-12-31"),
)
print(summary.to_markdown()) # sex, race/ethnicity, and intersectional tables
summary.save_csvs("audit_out/") # or .to_html() / .to_json()
The injected bias is detected: the female category's impact ratio falls below
0.8 and is flagged adverse_impact_eeoc — against synthetic ground truth you
control. Bring your own data with three columns (two demographic, one outcome
or score) and you get the same tables for your tool.
What it computes
| Artifact | Definition source |
|---|---|
| Selection rate per category | LL144 / 6 RCNY § 5-301 |
| Scoring rate (share above the sample median score) | LL144 / DCWP final rule |
| Impact ratio (category rate ÷ highest included category rate) | LL144 |
| Small-category (<2%) exclusion, flagged and disclosed — never silently dropped | DCWP rules |
unknown demographic reporting |
DCWP rules |
| Four-fifths adverse-impact flag (labeled as EEOC, since LL144 sets no threshold) | 29 CFR § 1607.4(D) |
| Score-traceability record schema (JSON Schema, per-decision provenance) | NIST AI RMF Measure/Manage practice |
Score traceability
schemas/score_traceability.schema.json defines a portable per-decision audit
record — tool identity and version, per-factor contributions, gates, human
review — without prescribing or containing any scoring method. Identifiers
are opaque references; the schema rejects extra fields, so PII cannot ride
along. Validate with:
from aedt_audit import validate_record, example_record
validate_record(example_record()) # requires: pip install 'aedt-audit[schema]'
Scope — what this is and is not
- It computes the required metrics. Under LL144 the bias audit itself must be conducted by an independent auditor; this library serves employers preparing for, and auditors performing, such audits.
- It contains only mathematics defined by statute, regulation, and federal guidance. There is no candidate ranking, matching, similarity, or scoring logic here, and none will be added.
- It is not legal advice. Consult counsel about your obligations.
Contributing
Issues and PRs welcome — see CONTRIBUTING.md. Every legal formula in this package is covered by a hand-computed test fixture; PRs that touch the math must update the corresponding fixture.
License
Apache-2.0 — see LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aedt_audit-0.1.0.tar.gz.
File metadata
- Download URL: aedt_audit-0.1.0.tar.gz
- Upload date:
- Size: 17.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c8e47818c2ef1879867d52b7bd827aa18c3c6744cbf71d134814ed625fd86e15
|
|
| MD5 |
076e5452e861b7b3c5747eaa0d3a4b4d
|
|
| BLAKE2b-256 |
d95c99d598dc19a66670e9369024213aae3fe3870bee415b8ea0945e678e19a0
|
Provenance
The following attestation bundles were made for aedt_audit-0.1.0.tar.gz:
Publisher:
release.yml on tobiascanavesi/aedt-audit
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aedt_audit-0.1.0.tar.gz -
Subject digest:
c8e47818c2ef1879867d52b7bd827aa18c3c6744cbf71d134814ed625fd86e15 - Sigstore transparency entry: 1790565209
- Sigstore integration time:
-
Permalink:
tobiascanavesi/aedt-audit@ede1d7195c4763f6cfefe92ffd699fb8db32a214 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/tobiascanavesi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@ede1d7195c4763f6cfefe92ffd699fb8db32a214 -
Trigger Event:
release
-
Statement type:
File details
Details for the file aedt_audit-0.1.0-py3-none-any.whl.
File metadata
- Download URL: aedt_audit-0.1.0-py3-none-any.whl
- Upload date:
- Size: 17.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
570561d50ba22e8637fdde2c9edbd5ce7f836e71f1992382c6c18386e133fd69
|
|
| MD5 |
dc2601c7276ae6b9f976c40b7ad3b75b
|
|
| BLAKE2b-256 |
7ada7d1dcac2d560fef699d27f56bb2288a0d62e67400e3812fe184973b82603
|
Provenance
The following attestation bundles were made for aedt_audit-0.1.0-py3-none-any.whl:
Publisher:
release.yml on tobiascanavesi/aedt-audit
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aedt_audit-0.1.0-py3-none-any.whl -
Subject digest:
570561d50ba22e8637fdde2c9edbd5ce7f836e71f1992382c6c18386e133fd69 - Sigstore transparency entry: 1790565347
- Sigstore integration time:
-
Permalink:
tobiascanavesi/aedt-audit@ede1d7195c4763f6cfefe92ffd699fb8db32a214 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/tobiascanavesi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@ede1d7195c4763f6cfefe92ffd699fb8db32a214 -
Trigger Event:
release
-
Statement type: