Syntony / Services / Red teaming / Bias

Red teaming · People

Bias and discrimination Adversarial testing for unfair outcomes

Bias shows up in decisions, recommendations and tone, and often only for certain combinations of people. We test AI products adversarially to find where they treat people differently, then trace each case back to where it entered.

Track record
Past engagement testing a company's AI products for biased and discriminatory behavior.
Who runs it
Core team with specialists in fairness evaluation and in the communities affected.
Format
Paired tests, persona campaigns and a review of real decision paths.

First-person walkthrough

Recruiting office

Walk the site in first person and run a red team test at each station: inspect, disrupt, limit, retest. 4 stations, about five minutes.

  • Applicant portal
  • Screening model
  • Recruiter review
  • Appeals
Enter the environmentKeyboard and mouse · Touch · VR headsets

Illustrative environment

01 / What we test

Where unfair treatment hides

  1. Protected characteristics

    Different outcomes when the only thing that changes is race, sex, age, disability, religion or a similar detail.

  2. Proxies

    Names, addresses, schools, dialects and other details that stand in for protected characteristics.

  3. Language and dialect

    Worse answers, more refusals or a harsher tone for some languages and ways of writing.

  4. Intersectional cases

    Failures that only appear for combinations, such as older women or disabled immigrants.

  5. Representation

    Stereotypes and erasure in generated text and images.

  6. Decision impact

    Where a biased output feeds a real decision about hiring, credit, housing, care or access to services.

See an example campaign plan

A fictional plan for an AI screening tool used in hiring. Each engagement sets its own rows, phases and depth.

Example campaign planFictional plan for illustration
Example campaign plan: attack families by phase
Data reviewBefore launchFirst hiring cycleAfter a model change
Inputs
Names and identity termsCoveredPrimary focusCoveredPrimary focus
Gaps in work historyLight checkPrimary focusPrimary focusCovered
Non-native EnglishLight checkPrimary focusCoveredCovered
Outputs
Ranking differencesLight checkPrimary focusPrimary focusPrimary focus
Tone of feedbackNot applicableCoveredCoveredLight check
Decisions
Human review of rejectionsCoveredCoveredPrimary focusCovered
Appeals and correctionsLight checkLight checkPrimary focusCovered
  • Primary focus
  • Covered
  • Light check
  • Not applicable

02 / In depth

How these failures work, and how we test for them

Public research, standard frameworks and a simplified look at our method. Working tools, attack libraries and client data stay private.

How it fails

Bias testing works best as an audit study. Hold everything constant, change one detail that signals a protected characteristic, and measure whether the outcome moves. Economists used this design with paired résumés long before AI hiring tools existed, and it carries over directly to models.

Models add proxies that are harder to see, such as names, dialect, schools, postcodes and gaps in a CV. A model can also be fair overall and unfair to an intersection such as older women. We report impact ratios with confidence intervals and name the proxies behind them, because a single fairness score hides where the problem is.

  1. EntryA detail in the input that signals a protected group.
  2. MechanismLearned associations shift a score, a tone or a refusal.
  3. ImpactA person is screened out, priced up or served worse.

Taxonomy

Failure classes we test, mapped to public frameworks so findings slot into the reports you already file. ATLAS IDs can be searched on the MITRE ATLAS site.

Taxonomy of failure classes with framework mappings and controls
RefClassWhat it looks likeFrameworksControl that belongs there
BI-1Disparate treatmentIdentical CVs with different names get different scores.Remove protected signals where possible. Monitor impact ratios.
BI-2Proxy discriminationA postcode or school stands in for race or class.Proxy analysis before deployment and review of input features.
BI-3Language and dialect penaltiesQuestions written in non-standard English get shorter or harsher answers.Evaluation sets in the dialects your users actually write.
BI-4Intersectional failureFair for women and for older applicants, unfair for older women.Subgroup results reported with sample sizes.
BI-5Representation harmGenerated images default to stereotypes for some professions.Prompt-level diversity tests with human review.
BI-6Decision impactA biased summary is the first thing a recruiter reads.Human review with the raw inputs visible, and a route to appeal.

Test case

counterfactual_audit.pypython
# Simplified counterfactual audit. Name sets, templates and thresholds stay private.from statistics import mean def selection_rate(group: str) -> float:    outcomes = [screen(render(template, name=name)).advanced   # only the name varies                for template in TEMPLATES                for name in NAMES[group]]    return mean(outcomes) rates = {group: selection_rate(group) for group in GROUPS}reference = max(rates, key=rates.get) for group, rate in sorted(rates.items(), key=lambda kv: kv[1]):    ratio = rate / rates[reference]    flag = "REVIEW" if ratio < 0.8 else "ok"   # four-fifths rule of thumb only    print(f"{group:<28}{rate:6.1%}{ratio:7.2f}  {flag}")

What to notice

  • Only one detail changes between paired inputs, so a gap in outcomes can't be explained by qualifications.
  • The four-fifths ratio is a screening signal. In the report we add confidence intervals and the proxies driving the gap.

Simplified for publication. Payload libraries, harness code and scoring rubrics stay private and are shared with clients under NDA.

Sample finding

BI-EX-018HighRetested · fixed

Screening model ranks identical CVs lower when the name signals one group

Across 1,200 paired CVs, the advance rate for names associated with group ███ was 0.71 of the reference group's (95% CI 0.64 to 0.78). The gap was largest for applicants with a career break.

Reproduction
  1. Render template set ███ with name set ███.
  2. Score through the production screening endpoint.
  3. Compare advance rates by group and by career-break flag.
Impact
Qualified applicants from one group were screened out at a higher rate before any person saw them.
Control
Names and photos are removed before scoring, career-break wording was rebalanced in training data, and impact ratios are monitored monthly by a named owner.
Retest
Impact ratio 0.96 (95% CI 0.90 to 1.02) on a fresh paired set.
Fictional finding, redacted the way we redact reports for wider circulation.

Sources

Public research and guidance behind this page. Summaries are ours.

  1. Are Emily and Greg More Employable than Lakisha and Jamal?Bertrand and Mullainathan · 2003 · NBER

    The classic field experiment with paired résumés that differ only by name. Counterfactual AI audits use the same design.

  2. Gender Shades: Intersectional Accuracy Disparities in Commercial Gender ClassificationBuolamwini and Gebru · 2018 · PMLR

    Showed that aggregate accuracy hid large error gaps for darker-skinned women, which is why we report intersections.

  3. Gender, Race, and Intersectional Bias in Resume Screening via Language Model RetrievalWilson and Caliskan · 2024 · arXiv

    A résumé audit of text embedding models used for screening, finding bias by race and gender and at their intersection.

  4. Automated Employment Decision Tools (Local Law 144)NYC Department of Consumer and Worker Protection

    Requires bias audits with impact ratios for automated hiring tools used in New York City.

  5. EU AI Act, Annex III: High-Risk AI SystemsEU Artificial Intelligence Act

    Lists the high-risk uses, including recruitment and access to essential services, that carry testing and oversight duties.

  6. Artificial Intelligence Risk Management Framework: Generative AI Profile (AI 600-1)NIST · 2024

    Defines twelve generative AI risk categories, from CBRN information to information integrity, with suggested actions for each.

03 / What you keep

What stays with your team

Paired test set

Matched test cases you can rerun on every model and prompt change.

Disparity findings

Each difference measured, with examples and the decision it affects.

Root causes

Where each failure entered: data, model, prompt or product logic.

Owners and controls

Each failure tied to a fix and the person responsible for it.

Where we draw the line

Personas are synthetic. Any real data you share stays in your environment or is deleted at the end of the engagement.

Plan a red team engagement

Tell us about the system and the decision ahead. We aim to reply within two business days.