# Fairjob Eval

> Evaluates the fairness and predictive performance of job recommendation models on a real-world tabular dataset. It probes whether models exhibit disparate impact across gender groups when predicting senior job opportunities, while accounting for selection bias and privacy constraints inherent in online advertising systems. Use when the user wants to benchmark on FairJob, or asks about evaluating this task. Reports Demographic Parity (DP).

- Skill: `qhjqhj00/fairjob-eval` (Agent Skill)
- Install (CLI): `npx skillmds add qhjqhj00/fairjob-eval`
- Raw SKILL.md: https://api.skillmd.com/api/skills/qhjqhj00/fairjob-eval/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: qhjqhj00 (https://skillmd.com/u/qhjqhj00)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/qhjqhj00/fairjob-eval

---


# fairjob-eval

> FairJob: A Real-World Dataset for Fairness in Online Systems — Vladimirova et al. (2024) (arXiv:2407.03059, 2024)

## What this evaluates

Evaluates the fairness and predictive performance of job recommendation models on a real-world tabular dataset. It probes whether models exhibit disparate impact across gender groups when predicting senior job opportunities, while accounting for selection bias and privacy constraints inherent in online advertising systems.

## Datasets

- **FairJob** — total ?; splits: test (-1); repo https://github.com/criteo-research/FairJob-dataset

## Metrics

- `Demographic Parity (DP)` **(primary)** — range: [-1, 1]
  - Computes the average difference in predicted probabilities between protected groups for senior job opportunities: DP(Ŷ|A) = E(Ŷ|A=1, S=1) - E(Ŷ|A=0, S=1).
- `NLLH` — range: other
  - Negative log-likelihood loss computed on predicted probabilities versus binary click/seniority labels.
- `AUC` — range: [0, 1]
  - Area under the Receiver Operating Characteristic curve, measuring ranking quality on imbalanced binary data.

## Input / output format

**Input**: Tabular features representing anonymized user context and job attributes, including a gender proxy (protected attribute A) and job seniority indicator (S).

**Output**: Predicted probability of the positive class (click or senior job recommendation).

## Scoring recipe

```python
dp = np.mean(y_pred[A==1 & S==1]) - np.mean(y_pred[A==0 & S==1])
nllh = -np.mean(y_true * np.log(y_pred) + (1 - y_true) * np.log(1 - y_pred))
auc = roc_auc_score(y_true, y_pred)
```

## Common pitfalls

- Confusing demographic parity with equalized odds or equal opportunity, which the paper explicitly distinguishes and notes may increase false positives for one group.
- Ignoring the strong selection bias in the job campaign data (males are almost twice as likely to be picked), which skews the evaluation context.
- Failing to distinguish between the three training regimes (unfair, unaware, fair), which fundamentally changes how the protected attribute is used and how metrics should be interpreted.

## Evidence (verbatim from paper)

> To measure fairness of the model, we consider demographic parity on senior job opportunities that computes the average difference of predictions given the protected attribute and the job seniority: $$\mathrm {D P} (\hat {Y} | A) = \mathbb {E} \left(\hat {Y} | A = 1, S = 1\right) - \mathbb {E} \left(\hat {Y} | A = 0, S = 1\right).$$ ... The loss function is log-loss and report it as NLLH (negative log-likelihood). We also report AUC (Area under the ROC Curve) as a description of prediction power on strongly imbalanced data in binary classification problems.

## Citation

```bibtex
@misc{vladimirova2024fairjob,
  title={FairJob: A Real-World Dataset for Fairness in Online Systems},
  author={Vladimirova et al. (2024)},
  year={2024},
  note={arXiv:2407.03059}
}
```

- arXiv: 2407.03059

