We are currently building something exciting and will be launching soon. Registration is temporarily closed. Launching soon — registration temporarily closed.

INDICATORS REFERENCE

Discrimination Analysis Indicators

Discrimination Analysis covers 200 indicators across 6 discrimination groups. Each signal has a stable slug and code for programmatic access. Representative signals are shown publicly; the complete reference is available to customers.

200
Indicators
6
Discrimination Groups
16
Languages
33
Avg / Group
6 results

Showing 6 representative indicators of 200. The complete taxonomy is available to customers.

Request access
# Indicator Slug code Discrimination Group
001 discrimination discrimination conduct_bias.discrimination Conduct Bias
002 race based discrimination race_based_discrimination identity_origin.race_based_discrimination Identity Origin
003 religion discrimination religion_discrimination identity_status.religion_discrimination Identity Status
004 sex discrimination sex_discrimination identity_personal.sex_discrimination Identity Personal
005 hiring discrimination hiring_discrimination context_access.hiring_discrimination Context Access
006 discriminatory harassment discriminatory_harassment conduct_hostile.discriminatory_harassment Conduct Hostile

Browse by Discrimination Group

Alternatively, explore indicators grouped by their parent discrimination group:

1

Conduct Bias

conduct_bias
40 Indicators

The complete signal list for this discrimination group is available to customers. Request access to view it.

2

Identity Origin

identity_origin
30 Indicators

The complete signal list for this discrimination group is available to customers. Request access to view it.

3

Identity Status

identity_status
40 Indicators

The complete signal list for this discrimination group is available to customers. Request access to view it.

4

Identity Personal

identity_personal
30 Indicators

The complete signal list for this discrimination group is available to customers. Request access to view it.

5

Context Access

context_access
40 Indicators

The complete signal list for this discrimination group is available to customers. Request access to view it.

6

Conduct Hostile

conduct_hostile
20 Indicators

The complete signal list for this discrimination group is available to customers. Request access to view it.

Reading Discrimination Analysis output

What you can safely infer from a result - and what you must not.

Intended task

Flag documented exclusionary and discriminatory language patterns tied to protected classes - for human or policy review.

Input requirements

  • text - the only field analyzed; up to 4,096 Unicode code points. Over the limit is rejected with input_too_long, never truncated.
  • language - must be a language this analyzer supports. Unsupported codes are rejected with 400 unsupported_language, never analyzed as a different language.
  • analyzers - include "discrimination"; up to 2 analyzers per request, one billed run each.
  • No context beyond text - no user IDs, history, profiles, or attachments are read or inferred.
  • Sees only the submitted text - the writer's identity, role, and the document's legal context are not inputs.

Ordinary positive

“Applicants must be under 40 and born in this country - no exceptions.”

employment_discrimination very high
age high
nationality_origin high

Safe inference: The text matches documented exclusion patterns on two protected classes. Route it to review with the labels attached.

Confusing negative · Quotation

“The handbook's old rule - "applicants must be born in this country" - was struck down in 2019.”

What happens: The exclusion pattern can still match the quoted clause. Signals flag the language for review - they do not read the surrounding context that makes this a compliance document describing a repealed rule.

Why it's tricky: Audits, legal analysis, and journalism all quote discriminatory language. Ambiguous phrasing ("we need someone young and energetic") may produce weak or no signals - absence is "not detected," never clearance. Both cases are why flagged text goes to review, not to automatic verdicts.

What you can safely infer

  • Which documented protected-class patterns the text matched, and at what strength.
  • That the result is reproducible - the receipt ties the labels to the configuration that produced them.

What you must not infer

  • ✕That unlawful discrimination occurred - legality is a determination for your counsel and jurisdiction.
  • ✕The author's intent, or that a specific person was harmed.
  • ✕That clean text contains no exclusionary content - a missing signal is "not detected," never "compliant."

Boundary: Discrimination signals flag exclusionary language for review - they do not determine that unlawful discrimination occurred, and they say nothing about intent.

Using Indicators in API Responses

When you call /v1/analyze, the response includes matched indicators with signal-match scores. Each signal is identified by its code and includes a level field (“category” or “label”). A score expresses signal-match strength under a particular analyzer configuration. It is not a probability that the signal or a downstream action is correct. Validate action thresholds on representative labeled data.

{
    "language": "en",
    "language_source": "declared",
    "signals": [
        {
            "analyzer": "discrimination",
            "code": "protected_class_bias",
            "label": "Protected Class Bias",
            "score": 0.93,
            "level": "category"
        },
        {
            "analyzer": "discrimination",
            "code": "ethnic_exclusion",
            "label": "Ethnic Exclusion",
            "score": 0.91,
            "level": "label",
            "parent": "protected_class_bias"
        }
    ],
    "meta": {
        "analyzers": [
            {
                "name": "discrimination",
                "status": "completed",
                "applicability": "analyzable",
                "assessment": "signals_detected",
                "signal_count": 2,
                "billed": true
            }
        ]
    },
    "usage": {
        "analyzer_runs": 1
    },
    "verification": {
        "configuration": "sqcfg_5DDA6HPF",
        "fingerprint": "fp_8a72...19f",
        "input_commitment": "ic_31bd...a42",
        "signature": "sig_ed25519_4c1f...e2a",
        "key_id": "edk_af4f218e"
    }
}