Get your first call review
Open Trace → Upload a call to try a real call before connecting a provider. No API key or change to the organization Trace default is needed.- Transcript: upload a UTF-8 TXT, SRT or VTT file, or paste text, up to 200 KB. The server runs a deterministic personal data pattern review and saves its scorecard. Raw text is not retained by this transcript upload; finding citations contain redacted placeholders. Pasted text needs no transcription credits.
- Recording: choose MP3, WAV, M4A, MP4, FLAC, OGG, WebM or AAC, up to 25 MB. Select an active project. Transcription uses workspace credits through the existing Hear path. The original recording and transcript are saved in My work. Accepted jobs continue after the browser closes. The worker saves the Trace scorecard before reporting completion. Open View upload to check progress.
- Activate Trace if the organization default is off. The confirmation keeps the current scoring policy. Agent overrides still apply.
- Connect calls. Choose PyAI agents to use an agent in the workspace, or JustCall to connect credentials and add its completed-call webhook. Required webhook instructions appear immediately after connection.
- Open a review. A real scorecard must exist before the call is marked ready. A connected provider or received webhook alone is not a completed review.
Pick a starting point
The existing read APIs require
trace:read. Configuring scoring rules requires
trace:configure. Check the live OpenAPI contract
before constructing an integration. A public token for a voice-agent widget does
not grant access to Trace records.
Build a summary dashboard
The dashboard starter includes five cards:- Scored calls: the number of calls with a Trace scorecard.
- Pass rate: PASS verdicts divided by scored calls.
- Calls with a gap: calls with a WARN or FAIL verdict.
- Verdict mix: PASS, WARN, and FAIL counts.
- Top rule findings: distinct affected calls for each rule.
Open Trace → More → Build & embed in the console to design a dashboard.
The starter is available in the repository at
examples/trace-dashboard, with a fictional-data mode that needs no API key.
Provider-account verification for Vanta, Drata, and Secureframe is a separate
release step. An example does not establish a marketplace listing or acceptance
by an auditor.Keep the key on your server
The starter’sserver-adapter.mjs accepts a key resolver you supply. That resolver
must authenticate the user, authorize the workspace, and read the correct key
from your server’s secret store. Without the resolver, the adapter denies access.
It does not select a tenant from browser-supplied organization IDs.
Host trace-dashboard.mjs and model.mjs under your app’s /trace-widgets/
directory, and connect the server adapter to an authenticated
/api/trace-dashboard route. Then embed:
Use your own design system
Assign an exported layout to the element’sconfig property, or use
projectExposure() from model.mjs with your own charts. The projection validates
the counts and returns known aggregate fields. exposureCsv() produces a summary
CSV using the same population.
For a compact customer portal, choose Scored calls and Pass rate. For an internal
risk review, place Calls with a gap and Top rule findings first. For a team lead,
use Verdict mix and link to the private call review workflow in your app.
The public exposure summary covers the whole organization across projects and
environments. It does not offer an agent, project, environment, or pack filter.
Do not add a filter control that leaves the underlying population unchanged.
Add a call review panel
Fetch the scorecard on your server after authorizing the requested call:Create an agent review queue
next_cursor while has_more is true. Use the returned cursor unchanged
and URL-encode it. A single page is not a total. The public list supports agent,
verdict, limit, and cursor parameters; do not assume console-only search or date
filters exist on the public API.
Keep advisory review separate
action=escalate selects the finding’s
suggested action; it does not mean that somebody has already opened a case.
Connect Slack, tickets, and other workflows
Use Trace → More → Delivery to configure Slack or a signed Webhook for completed scorecards. The event istrace.scorecard.completed. Select WARN and FAIL if your
team wants to focus its feed on calls with a gap.
The starter’s webhook-receiver.mjs verifies X-PyAI-Signature against the raw
request body, checks a five-minute timestamp tolerance, and bounds the request
size. Supply a destination-specific secret and an enqueueOnce callback that
atomically records the delivery ID and durable downstream work. It acknowledges
the event only after that callback resolves. A queue failure returns an error so
delivery can retry.
Deduplicate downstream writes as well. A worker can finish a CRM write and crash
before marking its local queue item complete. Keep credentials, payloads, and
errors out of public pages. Unlike the summary widget, completed-call events can
contain call IDs, agent IDs, and finding titles.
Changing a widget’s label or threshold should not silently change call routing,
scoring policy, or delivery subscriptions. Make those changes in their respective
configuration workflows.
Build reports with the right denominator
When there are no scored calls, show an unavailable rate. Do not display 100%
or describe the organization as having no risk. Never sum per-rule counts into a
count of affected calls. Add the window and collection timestamp to snapshots
saved in your warehouse. The exposure endpoint is a trailing summary, not a
complete historical series.
Extend the integration deliberately
- Add your own rule packs through the supported Trace configuration API, then verify the intended behavior before enabling them for calls.
- Attach a CRM case, release version, or review decision using your app’s trusted call mapping. Do not include personal identifiers in a public dashboard URL.
- Keep executive summaries and call investigations as separate permission levels.
- Reconcile eligible calls if you need a coverage metric or audit population.
- Keep provider upload acknowledgement, review acceptance, and any remediation decision as separate records in a compliance workflow.