Validation on public data

A governance platform makes you declare your compliance. We measure the data. To prove it without asking you to take our word for it, we ran the engine on four well-known public datasets with documented biases — and it recovered them.

These four datasets happen to cover four high-risk domains from Annex III of the AI Act.

What the engine measures

Domain (Annex III)DatasetDocumented biasWhat Conformlex measures
Criminal justiceCOMPAS (ProPublica)the risk score labels Black defendants “high risk” more often“High” score: African-American 27.7% vs White 11.2% (×2.5)
Employment & incomeAdult / Census Income (UCI)gender and race bias on incomesex ×2.8 · race ×2.9
Credit / financeGerman Credit — Statlog (UCI)credit history, status/sexcredit_history ×2.2 · personal_status_sex
HealthHeart Disease — Cleveland (UCI)gap by sexsex ×2.4

Targeting the COMPAS risk score, the engine measures — without being told to — that African-American defendants receive a “High” score 2.5× more often than White defendants (27.7% vs 11.2%). This is the score disparity ProPublica exposed.

These are not our claims: they are biases already documented in the literature and public investigations. The engine measures them automatically, from the data alone — without being told which bias to look for. Our ratio is raw (no statistical controls): it points to the same disparity as ProPublica, without claiming to reproduce their adjusted figures (controlled model, false-positive rates).

Why it matters for Article 10

Article 10 requires your training data to be examined for bias. These four domains are the ones the AI Act classifies as high-risk. If the engine recovers the known biases of COMPAS or Adult, it will measure yours — on your data, in-place (it never leaves your perimeter).

Reproduce it yourself

True to our stance — you keep control, not us — every proof is replayable. Take COMPAS. Grab the public CSV (propublica/compas-analysis), then two readable files describe the whole analysis.

The first names the source:

# source.yaml
source: COMPAS (recidivism)
inputs:
  - name: compas
    kind: file
    path: compas.csv

The second is the column dictionary — which column is the measured outcome (here the COMPAS risk score, not actual recidivism), which are protected attributes, which are personal data never to be analysed:

# mapping.yaml
validated: true
target: score_text            # the COMPAS risk score (Low/Medium/High) — the subject of ProPublica's finding
sensitive:                    # protected attributes → analysed for bias
  - race
  - sex
  - age_cat
pii:                          # personal data → never analysed
  - name
  - first
  - last
  - dob
ignore:
  - id
# (any column not listed = "feature", excluded from bias analysis)

One command, no network access, and the engine only emits a report.json of aggregates — never a raw row:

./conformlex-engine --source source.yaml --mapping mapping.yaml --out ./out
# → ./out/report.json — "High" score rate per racial group:
#     African-American 27.7%   vs   Caucasian 11.2%   ≈ ×2.5

These are exactly the files you would edit on your data — and the ones we ship with the engine’s test suite for the four datasets above. The method is domain- and geography-agnostic: these datasets are international benchmarks, not a limit.


We show aggregates; we do not redistribute the datasets (fetch them from their public sources). Conformlex detects documented biases — it is not a regulatory certification.

The actual dossiers

The Article 10 document the engine produces for each dataset — on the full data, validated mapping. No hand-typed figures.

Criminal justice COMPAS (récidive) 7,214 rows

View as HTML Download the PDF

Compliance dossier — training data (AI Act, Article 10)

Automatically generated skeleton from the dataset analysis. The "to be completed by the expert" blocks require human review (provenance, compliance judgment, mitigation measures).

1. Identity & purpose

  • System / model: _____
  • Dossier version: _____
  • Date: _____
  • Dataset: src
  • Intended purpose: _____
_To be completed by the expert — intended purpose and what the data is meant to represent_

2. Provenance & legal basis

Origin of each source, licences/contracts, and — for personal data — initial purpose and GDPR legal basis.

⚠️ Potential personal data detected: name, first, last, dob — a GDPR legal basis is required for these columns.

_To be completed by the expert — provenance per source (separate flow §16), licences, GDPR legal basis_

3. Composition _(filled automatically)_

  • Volume: 7214 rows, 53 columns.
  • Variables:
ColumnType
idBIGINT
nameVARCHAR
firstVARCHAR
lastVARCHAR
compas_screening_dateDATE
sexVARCHAR
dobDATE
ageBIGINT
age_catVARCHAR
raceVARCHAR
juv_fel_countBIGINT
decile_scoreBIGINT
juv_misd_countBIGINT
juv_other_countBIGINT
priors_countBIGINT
days_b_screening_arrestBIGINT
c_jail_inTIMESTAMP
c_jail_outTIMESTAMP
c_case_numberVARCHAR
c_offense_dateDATE
c_arrest_dateDATE
c_days_from_compasBIGINT
c_charge_degreeVARCHAR
c_charge_descVARCHAR
is_recidBIGINT
r_case_numberVARCHAR
r_charge_degreeVARCHAR
r_days_from_arrestBIGINT
r_offense_dateDATE
r_charge_descVARCHAR
r_jail_inDATE
r_jail_outDATE
violent_recidVARCHAR
is_violent_recidBIGINT
vr_case_numberVARCHAR
vr_charge_degreeVARCHAR
vr_offense_dateDATE
vr_charge_descVARCHAR
type_of_assessmentVARCHAR
decile_score_1BIGINT
score_textVARCHAR
screening_dateDATE
v_type_of_assessmentVARCHAR
v_decile_scoreBIGINT
v_score_textVARCHAR
v_screening_dateDATE
in_custodyDATE
out_custodyDATE
priors_count_1BIGINT
startBIGINT
endBIGINT
eventBIGINT
two_year_recidBIGINT
  • Declared sensitive attributes: race, sex, age_cat.
  • Detected PII columns: name, first, last, dob.
_To be completed by the expert — geographic / contextual / behavioural scope_

4. Preparation _(automatic observations)_

  • Missing values: days_b_screening_arrest (307) → handling strategy to be documented.
_To be completed by the expert — transformation log: collection, cleaning, labelling, enrichment, aggregation_

5. Quality _(filled automatically)_

  • Completeness: 307 missing value(s) (days_b_screening_arrest).
  • Accuracy / outliers: age (1).
_To be completed by the expert — representativeness and relevance to the purpose_

6. Bias

Automatic analysis

race — disparity of the « score_text » rate: ratio 4.83 ⚠️

GroupCount« score_text » rate
Native American1833.3 %
African-American369627.7 %
Caucasian245411.2 %
Hispanic63710.5 %
Asian329.4 %
Other3776.9 %

sex — disparity of the « score_text » rate: ratio 1.53 ⚠️

GroupCount« score_text » rate
Male581920.8 %
Female139513.6 %

age_cat — disparity of the « score_text » rate: ratio 3.65 ⚠️

GroupCount« score_text » rate
Less than 25152929.6 %
25 - 45410920.0 %
Greater than 4515768.1 %

Judgment & measures

_To be completed by the expert — impact on health/safety/fundamental rights and detection/prevention/mitigation measures_

7. Gaps & limitations

Detected points to examine as potential gaps:

  • [low] missing — days_b_screening_arrest
  • [low] missing — c_jail_in
  • [low] missing — c_jail_out
  • [low] missing — c_case_number
  • [low] missing — c_offense_date
  • [high] missing — c_arrest_date
  • [low] missing — c_days_from_compas
  • [low] missing — c_charge_desc
  • [high] missing — r_case_number
  • [high] missing — r_charge_degree
  • [high] missing — r_days_from_arrest
  • [high] missing — r_offense_date
  • [high] missing — r_charge_desc
  • [high] missing — r_jail_in
  • [high] missing — r_jail_out
  • [high] missing — violent_recid
  • [high] missing — vr_case_number
  • [high] missing — vr_charge_degree
  • [high] missing — vr_offense_date
  • [high] missing — vr_charge_desc
  • [low] missing — in_custody
  • [low] missing — out_custody
  • [low] outliers — age
  • [low] outliers — priors_count
  • [low] outliers — days_b_screening_arrest
  • [low] outliers — c_days_from_compas
  • [low] outliers — r_days_from_arrest
  • [low] outliers — priors_count_1
  • [low] outliers — start
  • [high] pii — name
  • [high] pii — first
  • [high] pii — last
  • [high] pii — dob
  • [high] bias — race
  • [medium] bias — sex
  • [high] bias — age_cat
_To be completed by the expert — identified and addressed gaps; out-of-scope uses_

8. Governance & traceability

  • Analysis tool version: 0.2.0
_To be completed by the expert — responsibilities, audit log, versioning, maintenance/updates_
Employment & income Adult / Census Income 32,561 rows

View as HTML Download the PDF

Compliance dossier — training data (AI Act, Article 10)

Automatically generated skeleton from the dataset analysis. The "to be completed by the expert" blocks require human review (provenance, compliance judgment, mitigation measures).

1. Identity & purpose

  • System / model: _____
  • Dossier version: _____
  • Date: _____
  • Dataset: src
  • Intended purpose: _____
_To be completed by the expert — intended purpose and what the data is meant to represent_

2. Provenance & legal basis

Origin of each source, licences/contracts, and — for personal data — initial purpose and GDPR legal basis.

_To be completed by the expert — provenance per source (separate flow §16), licences, GDPR legal basis_

3. Composition _(filled automatically)_

  • Volume: 32561 rows, 15 columns.
  • Variables:
ColumnType
ageBIGINT
workclassVARCHAR
fnlwgtBIGINT
educationVARCHAR
education_numBIGINT
marital_statusVARCHAR
occupationVARCHAR
relationshipVARCHAR
raceVARCHAR
sexVARCHAR
capital_gainBIGINT
capital_lossBIGINT
hours_per_weekBIGINT
native_countryVARCHAR
incomeVARCHAR
  • Declared sensitive attributes: age, workclass, education, marital_status, occupation, relationship, race, sex.
_To be completed by the expert — geographic / contextual / behavioural scope_

4. Preparation _(automatic observations)_

  • Duplicates: 24 duplicate row(s) → deduplication step to be traced.
_To be completed by the expert — transformation log: collection, cleaning, labelling, enrichment, aggregation_

5. Quality _(filled automatically)_

  • Accuracy / outliers: fnlwgt (152).
  • Uniqueness: 24 duplicate(s).
_To be completed by the expert — representativeness and relevance to the purpose_

6. Bias

Automatic analysis

workclass — disparity of the « income » rate: ratio 5.36 ⚠️

GroupCount« income » rate
Self-emp-inc111655.7 %
Federal-gov96038.6 %
Local-gov209329.5 %
Self-emp-not-inc254128.5 %
State-gov129827.2 %
Private2269621.9 %
?183610.4 %
Without-pay140.0 %
Never-worked70.0 %

education — disparity of the « income » rate: ratio 20.75 ⚠️

GroupCount« income » rate
Doctorate41374.1 %
Prof-school57673.4 %
Masters172355.7 %
Bachelors535541.5 %
Assoc-voc138226.1 %
Assoc-acdm106724.8 %
Some-college729119.0 %
HS-grad1050116.0 %
12th4337.6 %
10th9336.6 %
7th-8th6466.2 %
9th5145.3 %
11th11755.1 %
5th-6th3334.8 %
1st-4th1683.6 %
Preschool510.0 %

marital_status — disparity of the « income » rate: ratio 9.72 ⚠️

GroupCount« income » rate
Married-civ-spouse1497644.7 %
Married-AF-spouse2343.5 %
Divorced444310.4 %
Widowed9938.6 %
Married-spouse-absent4188.1 %
Separated10256.4 %
Never-married106834.6 %

occupation — disparity of the « income » rate: ratio 72.12 ⚠️

GroupCount« income » rate
Exec-managerial406648.4 %
Prof-specialty414044.9 %
Protective-serv64932.5 %
Tech-support92830.5 %
Sales365026.9 %
Craft-repair409922.7 %
Transport-moving159720.0 %
Adm-clerical377013.4 %
Machine-op-inspct200212.5 %
Farming-fishing99411.6 %
Armed-Forces911.1 %
?184310.4 %
Handlers-cleaners13706.3 %
Other-service32954.2 %
Priv-house-serv1490.7 %

relationship — disparity of the « income » rate: ratio 35.94 ⚠️

GroupCount« income » rate
Wife156847.5 %
Husband1319344.9 %
Not-in-family830510.3 %
Unmarried34466.3 %
Other-relative9813.8 %
Own-child50681.3 %

race — disparity of the « income » rate: ratio 2.88 ⚠️

GroupCount« income » rate
Asian-Pac-Islander103926.6 %
White2781625.6 %
Black312412.4 %
Amer-Indian-Eskimo31111.6 %
Other2719.2 %

sex — disparity of the « income » rate: ratio 2.79 ⚠️

GroupCount« income » rate
Male2179030.6 %
Female1077110.9 %

Judgment & measures

_To be completed by the expert — impact on health/safety/fundamental rights and detection/prevention/mitigation measures_

7. Gaps & limitations

Detected points to examine as potential gaps:

  • [medium] duplicates
  • [low] outliers — fnlwgt
  • [low] outliers — hours_per_week
  • [high] bias — workclass
  • [high] bias — education
  • [high] bias — marital_status
  • [high] bias — occupation
  • [high] bias — relationship
  • [high] bias — race
  • [high] bias — sex
_To be completed by the expert — identified and addressed gaps; out-of-scope uses_

8. Governance & traceability

  • Analysis tool version: 0.2.0
_To be completed by the expert — responsibilities, audit log, versioning, maintenance/updates_
Credit / finance German Credit (Statlog) 1,000 rows

View as HTML Download the PDF

Compliance dossier — training data (AI Act, Article 10)

Automatically generated skeleton from the dataset analysis. The "to be completed by the expert" blocks require human review (provenance, compliance judgment, mitigation measures).

1. Identity & purpose

  • System / model: _____
  • Dossier version: _____
  • Date: _____
  • Dataset: src
  • Intended purpose: _____
_To be completed by the expert — intended purpose and what the data is meant to represent_

2. Provenance & legal basis

Origin of each source, licences/contracts, and — for personal data — initial purpose and GDPR legal basis.

⚠️ Potential personal data detected: telephone — a GDPR legal basis is required for these columns.

_To be completed by the expert — provenance per source (separate flow §16), licences, GDPR legal basis_

3. Composition _(filled automatically)_

  • Volume: 1000 rows, 21 columns.
  • Variables:
ColumnType
statusVARCHAR
durationBIGINT
credit_historyVARCHAR
purposeVARCHAR
amountBIGINT
savingsVARCHAR
employment_durationVARCHAR
installment_rateBIGINT
personal_status_sexVARCHAR
other_debtorsVARCHAR
present_residenceBIGINT
propertyVARCHAR
ageBIGINT
other_installment_plansVARCHAR
housingVARCHAR
number_creditsBIGINT
jobVARCHAR
people_liableBIGINT
telephoneBOOLEAN
foreign_workerBOOLEAN
credit_riskBIGINT
  • Declared sensitive attributes: status, credit_history, purpose, savings, employment_duration, personal_status_sex, other_debtors, property, age, other_installment_plans, housing, job, foreign_worker.
  • Detected PII columns: telephone.
_To be completed by the expert — geographic / contextual / behavioural scope_

4. Preparation _(automatic observations)_

_To be completed by the expert — transformation log: collection, cleaning, labelling, enrichment, aggregation_

5. Quality _(filled automatically)_

  • Accuracy / outliers: duration (1).
_To be completed by the expert — representativeness and relevance to the purpose_

6. Bias

Automatic analysis

status — disparity of the « credit_risk » rate: ratio 1.74 ⚠️

GroupCount« credit_risk » rate
no checking account39488.3 %
... >= 200 DM / salary for at least 1 year6377.8 %
0 <= ... < 200 DM26961.0 %
... < 100 DM27450.7 %

credit_history — disparity of the « credit_risk » rate: ratio 2.21 ⚠️

GroupCount« credit_risk » rate
critical account/other credits existing29382.9 %
delay in paying off in the past8868.2 %
existing credits paid back duly till now53068.1 %
all credits at this bank paid back duly4942.9 %
no credits taken/all credits paid back duly4037.5 %

purpose — disparity of the « credit_risk » rate: ratio 1.59 ⚠️

GroupCount« credit_risk » rate
business988.9 %
car (used)10383.5 %
domestic appliances28077.9 %
radio/television18168.0 %
repairs1266.7 %
others9764.9 %
education2263.6 %
car (new)23462.0 %
furniture/equipment1258.3 %
retraining5056.0 %

savings — disparity of the « credit_risk » rate: ratio 1.37 ⚠️

GroupCount« credit_risk » rate
... >= 1000 DM4887.5 %
500 <= ... < 1000 DM6382.5 %
unknown/no savings account18382.5 %
100 <= ... < 500 DM10367.0 %
... < 100 DM60364.0 %

employment_duration — disparity of the « credit_risk » rate: ratio 1.31 ⚠️

GroupCount« credit_risk » rate
4 <= ... < 7 years17477.6 %
... >= 7 years25374.7 %
1 <= ... < 4 years33969.3 %
unemployed6262.9 %
... < 1 year17259.3 %

personal_status_sex — disparity of the « credit_risk » rate: ratio 1.22 ⚠️

GroupCount« credit_risk » rate
male : single54873.4 %
male : married/widowed9272.8 %
female : divorced/separated/married31064.8 %
male : divorced/separated5060.0 %

other_debtors — disparity of the « credit_risk » rate: ratio 1.44 ⚠️

GroupCount« credit_risk » rate
guarantor5280.8 %
none90770.0 %
co-applicant4156.1 %

property — disparity of the « credit_risk » rate: ratio 1.39 ⚠️

GroupCount« credit_risk » rate
real estate28278.7 %
building society savings agreement/life insurance23269.4 %
car or other33269.3 %
unknown/no property15456.5 %

other_installment_plans — disparity of the « credit_risk » rate: ratio 1.23 ⚠️

GroupCount« credit_risk » rate
none81472.5 %
stores4759.6 %
bank13959.0 %

housing — disparity of the « credit_risk » rate: ratio 1.25 ⚠️

GroupCount« credit_risk » rate
own71373.9 %
rent17960.9 %
for free10859.3 %

job — disparity of the « credit_risk » rate: ratio 1.10 ⚠️

GroupCount« credit_risk » rate
unskilled - resident20072.0 %
skilled employee/official63070.5 %
unemployed/unskilled - non-resident2268.2 %
management/self-employed/highly qualified employee/officer14865.5 %

foreign_worker — disparity of the « credit_risk » rate: ratio 1.29 ⚠️

GroupCount« credit_risk » rate
false3789.2 %
true96369.3 %

Judgment & measures

_To be completed by the expert — impact on health/safety/fundamental rights and detection/prevention/mitigation measures_

7. Gaps & limitations

Detected points to examine as potential gaps:

  • [low] outliers — duration
  • [low] outliers — amount
  • [high] pii — telephone
  • [medium] bias — status
  • [high] bias — credit_history
  • [medium] bias — purpose
_To be completed by the expert — identified and addressed gaps; out-of-scope uses_

8. Governance & traceability

  • Analysis tool version: 0.2.0
_To be completed by the expert — responsibilities, audit log, versioning, maintenance/updates_
Health Heart Disease (Cleveland) 303 rows

View as HTML Download the PDF

Compliance dossier — training data (AI Act, Article 10)

Automatically generated skeleton from the dataset analysis. The "to be completed by the expert" blocks require human review (provenance, compliance judgment, mitigation measures).

1. Identity & purpose

  • System / model: _____
  • Dossier version: _____
  • Date: _____
  • Dataset: src
  • Intended purpose: _____
_To be completed by the expert — intended purpose and what the data is meant to represent_

2. Provenance & legal basis

Origin of each source, licences/contracts, and — for personal data — initial purpose and GDPR legal basis.

_To be completed by the expert — provenance per source (separate flow §16), licences, GDPR legal basis_

3. Composition _(filled automatically)_

  • Volume: 303 rows, 14 columns.
  • Variables:
ColumnType
ageDOUBLE
sexDOUBLE
cpDOUBLE
trestbpsDOUBLE
cholDOUBLE
fbsDOUBLE
restecgDOUBLE
thalachDOUBLE
exangDOUBLE
oldpeakDOUBLE
slopeDOUBLE
caDOUBLE
thalDOUBLE
targetBIGINT
  • Declared sensitive attributes: age, sex.
_To be completed by the expert — geographic / contextual / behavioural scope_

4. Preparation _(automatic observations)_

  • Missing values: ca (4) → handling strategy to be documented.
_To be completed by the expert — transformation log: collection, cleaning, labelling, enrichment, aggregation_

5. Quality _(filled automatically)_

  • Completeness: 4 missing value(s) (ca).
  • Accuracy / outliers: chol (1).
_To be completed by the expert — representativeness and relevance to the purpose_

6. Bias

Automatic analysis

sex — disparity of the « target » rate: ratio 2.41 ⚠️

GroupCount« target » rate
1.020622.3 %
0.0979.3 %

Judgment & measures

_To be completed by the expert — impact on health/safety/fundamental rights and detection/prevention/mitigation measures_

7. Gaps & limitations

Detected points to examine as potential gaps:

  • [low] missing — ca
  • [low] missing — thal
  • [low] outliers — chol
  • [high] bias — sex
_To be completed by the expert — identified and addressed gaps; out-of-scope uses_

8. Governance & traceability

  • Analysis tool version: 0.2.0
_To be completed by the expert — responsibilities, audit log, versioning, maintenance/updates_