> ## 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: score every call with PyAI Trace

> Build call-center QA and compliance monitoring on PyAI Trace: every call scored against TCPA, HIPAA, PII, and custom rule packs, with per-call 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 call scored instead of a sample, and when usage-based
per-call pricing beats per-agent seats. Trace is in beta: free during beta, on
by default in `warn` mode, and 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 is free during the beta. After beta it meters per scanned audio minute,
on top of the underlying call product, with no seats. See the
[pricing page](https://pyai.com/pricing).

## 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.
