Our stance in one paragraph
EgisAI does not infer or store demographic attributes about your end users. We do not run protected-class proxy detection, disparate-impact testing, or statistical-parity analysis. The platform’s drift signals are operational (cadence, model affinity, geo, block-rate, latency distribution) rather than demographic. Where you need a fairness audit, we support you by exporting decision logs grouped by the identifiers you already attach to calls (agent_id, user_id, session_id) so you can
run analytics in the fairness tool of your choice without ever sharing the
underlying demographic data with us.
What we monitor at runtime
The SDK and dashboard surface three categories of behavioral signal. None of them are fairness signals; they are operational signals on which a fairness analysis can be layered offline.
If an operator authors a
pii_scan policy that detects names + emails,
those redactions count toward sanitization metrics, but the platform does
not classify the person the data refers to. Names and emails are masked
and counted; demographics are never inferred or stored.
What we do support: content-level fairness controls
The policy engine has shipped controls that operators can use to enforce content fairness:- Slur / harassment denial. The policy library includes a curated policy that blocks slurs targeting protected classes and dehumanising language. Operators can enable it as-is or use it as a starting point for their own deny lists. See Policies.
- Intent-based denials via
semantic_guard. Operators describe prohibited intents in plain English (“incitement of discrimination against a protected class”, “harassment-as-a-service requests”); the LLM-backed judge applies those intents on the prompt and the response. - Output regex filters. Pattern-based blocks for known problematic surface forms.
verdict,
reason_code, and message on the audit row, so you can review which
fairness-related policy fired on which call.
What we do not do
To be unambiguous for procurement:- We do not infer race, ethnicity, gender, age, religion, disability, sexual orientation, immigration status, or any other protected attribute about end users from prompt content.
- We do not run statistical-parity, equal-opportunity, calibration, or any other fairness metric internally and serve it to operators as a finding.
- We do not flag agents as “biased” or “fair.” The trust score is operational risk, not a fairness verdict.
- We do not train models on customer data under any plan.
Supporting your fairness audit
The supported path is to export the per-call decision log and run fairness analysis in your own pipeline. The Audit-evidence export ZIP includes arequest_logs.csv that carries every call’s verdict, agent_id,
api_key_id, prompt_verdict, response_verdict, matched_policy, and
the user_id you attached to the call via set_context(). Operators
typically group these by:
- Per-agent. Slice block-rate and sanitization-rate by
agent_idto see whether one agent is disproportionately refusing or redacting traffic relative to its peers. - Per-customer-cohort. Group by your own customer cohort attribute
(the value you put in
set_context(user_id=…)orset_context(session_id=…)) to compare verdict distributions across the cohorts you defined. - Per-policy. Group by
matched_policyto see whether a specific rule has uneven impact across cohorts.
Example: cohort block-rate comparison
user_id
identifier you chose to attach to the call does. The fairness join happens
in your environment against data we never see.
What a fairness-conscious operator should do
- Author the fairness policies you need. Use the slur policy, write
intent-based
semantic_guardrules for the harms your product cannot produce, and review the matched-policies audit trail. - Tag traffic with cohort-stable opaque identifiers. Attach an
internal
user_idorsession_idyou can later join against your own cohort tables. - Export the audit log on the cadence your governance committee requires (typically monthly or quarterly).
- Run fairness analytics offline in the tool your team already uses. The export is designed for direct ingest into Pandas, Snowflake, Databricks, or any SIEM.
- Treat any positive finding as a policy or product change, not as an EgisAI ticket. The audit log is evidence; the fix lives in your policies or in your product.
What a regulator usually asks for
Regulator-grade fairness reviews under the EU AI Act (Articles 9 / 10 / 14 / 15) or NIST AI RMF (MAP 2.3, MEASURE 2.11) usually need three artefacts:- The policy inventory at the moment in question — which rules
were enabled, with what configuration.
policies.csvfrom the audit-evidence export delivers this. - The operator-action audit trail — who changed which policy when.
audit_log.csvdelivers this. - The per-call decision log — which call hit which policy, with
verdict and matched-policy id.
request_logs.csvdelivers this.
What’s next
Decision explainability
The four surfaces that explain why a call hit a verdict — at the level an EU AI Act Article 13 review expects.
Audit-evidence export
The CSV-of-ZIPs your fairness pipeline ingests.
Policies
The policy library, including the protected-class content rules.
Privacy and security
The privacy contract that prevents demographic inference at the SDK boundary.