> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pyai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Build call-center QA with PyAI Trace

> Score eligible calls against TCPA, HIPAA, PII, and custom rule packs, with scorecards, violation drill-down, and an exposure dashboard.

Traditional QA samples a few calls per agent per month and hopes the sample is
representative. **PyAI Trace** scores *every* call: each one gets a deterministic
scorecard against built-in rule packs (TCPA, HIPAA, PII, brand voice) and your
own custom packs, with plain-English findings, cited regulations, and a
tamper-evident audit hash. Instead of asking "did anyone check that call," you
ask "show me this week's violations," and the answer is one API call.

Trace is compliance guardrails and per-call scoring, not a full CCaaS suite.
If you need agent coaching workflows, scorecard-rubrics-as-a-product, and a QA
team's UI (the Observe.AI or MaestroQA axis), those suites are the better buy.
Build on Trace when QA and compliance data belongs inside your own platform,
when you want every eligible call scored instead of a sample, and when usage-based
per-call pricing beats per-agent seats. Trace is in beta, must be enabled for
your organization, and its findings are informational, not legal advice.

## What you're building

```mermaid theme={null}
flowchart LR
  calls[Your agents' calls] --> trace[Trace: scorecard per call]
  trace --> exposure[Exposure dashboard: org-level gaps]
  trace --> interactions[Interactions: per-call scorecards]
  trace --> violations[Violations: every fired rule]
  trace --> findings[Findings: semantic alerts feed]
  violations --> review[Your review queue]
  findings --> review
```

## The PyAI stack for this build

| Piece | PyAI product | Endpoints | Scope |
| - | - | - | - |
| Turn it on, pick packs and mode | Trace config | `PUT /v1/trace/config` | `trace:configure` |
| Built-in and custom rule packs | Trace rule packs | `GET/POST /v1/trace/rule-packs` | `trace:configure` |
| Org-level headline | Trace exposure | `GET /v1/trace/exposure` | `trace:read` |
| Per-call scorecards | Trace interactions | `GET /v1/trace/interactions[/{id}]` | `trace:read` |
| Every fired rule | Trace violations | `GET /v1/trace/violations` | `trace:read` |
| Semantic alerts (advisory) | Trace findings | `GET /v1/trace/findings` | `trace:read` |

## Build order

<Steps>
  <Step title="Enable Trace with the packs you need">
    One `PUT /v1/trace/config` sets the org default (override per agent with
    `agent_id`). Start in `warn` mode: everything is scored and logged, nothing
    touches the call. The [Trace guide](/guides/trace-guardrails) has the full
    config body.
  </Step>

  <Step title="Read your exposure headline">
    `GET /v1/trace/exposure?window_days=30` returns interactions scanned, the
    share with a compliance gap, the per-rule exposure ranking, and the verdict
    mix. This is the number your compliance lead puts in a deck.
  </Step>

  <Step title="Build the review queue">
    Pull `GET /v1/trace/violations?severity=critical` (filter by `rule_id` or
    `interaction_id`) and page through `GET /v1/trace/interactions?verdict=FAIL`
    for the worst calls. Each interaction detail carries the full evidence view
    plus the audit hash.
  </Step>

  <Step title="Wire the alerts feed">
    The semantic findings layer catches what deterministic rules cannot
    (indirect opt-outs, hallucination versus knowledge base). The
    compliance-officer feed is `GET /v1/trace/findings?action=escalate`.
  </Step>

  <Step title="Escalate modes when ready">
    Move from `warn` to `modify` (redact PII, inject disclosures), `block`, or
    `human_handoff` per agent as confidence builds. Every mode is fail-open:
    compliance tooling never takes your calls down.
  </Step>
</Steps>

<Note>
  The **Compliance / Trace** tab in the [console](https://console.pyai.com)
  renders all of this (Overview, Interactions, Alerts) with no code, so your
  compliance team gets the dashboard while you build the integrations.
</Note>

## FAQ

### Which regulations does PyAI Trace cover out of the box?

Built-in rule packs cover TCPA, HIPAA, PII, and brand voice, and you can upload
custom packs in the Trace DSL (`POST /v1/trace/rule-packs`). Pack wording and
citations are curated separately, and findings are informational rather than
legal advice.

### Does Trace work on calls that do not run on PyAI?

Trace scores calls that run on the PyAI platform (Omni agents and calls carried
on PyAI telephony). For recordings of external calls, the
[conversation-intelligence pipeline](/use-cases/build-your-own-gong) (Hear
batch plus your own checks) is the right tool.

### Can Trace stop a non-compliant call in real time?

Yes, when you move past `warn`: `modify` redacts PII and injects missing
disclosures inline, `block` suppresses non-compliant output, and
`human_handoff` escalates to a person. All modes are fail-open.

### What does Trace cost?

Trace meters per scanned call, on top of the underlying call product, with no
seats. Your console shows any promotional billing. See the
[pricing page](https://pyai.com/pricing) for the current rate.

## Start building

The [Trace guide](/guides/trace-guardrails) walks through config, rule packs,
and every read endpoint with copy-paste commands. New to PyAI?
[Get an instant sandbox key](/quickstart) first.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.