Documentation Index
Fetch the complete documentation index at: https://docs.wittify.ai/llms.txt
Use this file to discover all available pages before exploring further.
Compliance is the page that tracks whether your team is saying the things they are required to say on every call. Define the phrases your team must say, then see who is on script, who is drifting, and where to coach next. Matching combines keywords and semantic intents, with breakdown per script, per agent, and per call.
Page anatomy
| Region | What you see |
|---|---|
| Filter bar | Date and hour controls, see Overview. |
| KPI strip | Four summary cards specific to script adherence. |
| Per-script table | The project’s script library with how each script is performing. |
| Per-agent table | Average adherence per agent, lowest first. |
| Calls tabs card | Two-tab card: Needs attention and Top performers. |
| Edit library dialog | Opens from the per-script card header; admins use it to manage scripts. |
| Per-call drill-in sheet | Slides in when you click a row in the calls tabs. |
KPI strip
Four cards reactive to the active filter window.| KPI | Meaning |
|---|---|
| Overall pass rate | Share of applicable script checks that passed across all scored calls. |
| Average adherence | Mean per-call score across applicable scripts. |
| Calls scored | Count of calls scored in the window. |
| Lowest pass | The script with the worst pass rate in the active range. |
Per-script table
The project’s script library. Each row shows:| Column | Notes |
|---|---|
| Script | Script name (e.g. Greeting, Agent identity disclosure). |
| Severity | Low, Medium, or High. |
| In scope | Number of calls where the script’s trigger applies. |
| Pass rate | Share of in-scope calls that passed the script. |
| Avg score | Mean phrase-level score across in-scope calls. |
Per-agent table
Shows average adherence per agent across the active filter window, sorted lowest first so coaching candidates are at the top. Same table mechanics as the per-script table (sortable columns, pagination at 10 rows by default).The Calls tabs card
A two-tab card titled with Needs attention as the default tab.| Tab | What it shows |
|---|---|
| Needs attention | Calls where at least one required phrase was missed. Worst score first, up to 50 rows. The subtitle reads Calls flagged for missed required phrases ( total). |
| Top performers | Calls that passed every required phrase. Best score first, up to 50 rows. The subtitle reads Calls that passed every required phrase ( total). |
| Column | Sortable |
|---|---|
| Date | Yes |
| Agent | Yes |
| Duration | Yes |
| Score | Yes |
| Tab | Empty message |
|---|---|
| Needs attention | All scored calls passed every required phrase. |
| Top performers | No calls passed every script in this range yet. |
The Edit library dialog
Opens from the Edit library button in the per-script card header. Admins can:| Action | Behaviour |
|---|---|
| Add script ▸ From template | Drops in one of the four starter scripts: Greeting, Agent identity disclosure, Data privacy prompt, Identity verification. |
| Add script ▸ Blank script | Creates a new empty script you can fill in. |
| Set Severity | Per script: Low, Medium, High. Drives sort priority and the Lowest pass KPI. |
| Set Trigger | Per script. Either Every call or Only when intent is in . The intent picker is multi-select and reuses the project’s detected intents. |
| Edit phrases | Each script has one or more phrases. Each phrase carries a label (EN and AR), keyword chips (EN and AR), an intent multi-select, and a Required to pass toggle. |
| Save changes | Saves the library to the project. The next score run picks up the new library. |
| Cancel | Closes the dialog without saving. |
Phrase matching rules
Each phrase matches via two independent signals. A phrase must carry at least one signal or the dialog rejects the save.| Signal | How it matches |
|---|---|
| Keywords (EN) | Word-bounded match: a chip hello matches “hello there” but not “othello”. |
| Keywords (AR) | Case-insensitive match across the chip list. |
| Intents | The phrase matches if the call’s detected intent is in the picked list. Reuses the Intent Analysis catalog. No extra cost. |
The per-call drill-in sheet
Click any row in the Calls tabs card to open a side sheet.| Section | What it shows |
|---|---|
| Session metadata card | Date, agent, duration, sentiment, intents, words, file. |
| Inline audio player | Built-in browser audio with play, pause, seek, and volume. |
| Transcription | The full transcript, RTL or LTR per language. |
| Per-script breakdown | One row per script: Passed / Failed / Not in scope. |
| Per-phrase rows under each script | Each row shows the phrase label, Matched or Not found in transcript, the matching signal (Keyword EN, Keyword AR, Intent), and a short transcript excerpt around the match when applicable. |
CSV export
The page-level Download CSV button emits one row per (call × script × phrase) for the active filter window.| Property | Notes |
|---|---|
| Hard cap | 200,000 rows. Past the cap, you’ll see a message asking you to narrow the date filter. |
| Encoding | UTF-8 with BOM (Arabic renders correctly in Excel). |
Common questions
The starter scripts use English phrases. Do they catch Arabic conversations?
The starter scripts use English phrases. Do they catch Arabic conversations?
Each starter has both EN and AR keyword chips, plus the
greeting / verification etc. intents. They match Arabic out of the box.Why do some calls show as Not in scope for a script?
Why do some calls show as Not in scope for a script?
Each script has a trigger. If the trigger does not apply to a call (for example, the script’s intent list does not include the call’s detected intent), the call is Not in scope for that script.
A call shows Failed for a phrase even though the agent said the right thing.
A call shows Failed for a phrase even though the agent said the right thing.
Two things to check. First, the call’s intent may not be in the phrase’s intent list. Second, the speech-to-text engine may have transcribed the phrase differently. Open the side sheet — the transcript shows you exactly what was recorded.
Can I make a phrase optional?
Can I make a phrase optional?
Yes. Toggle off Required to pass on the phrase. The phrase still appears in the side sheet’s drill-in, but it does not affect the call’s pass result.
The Edit library dialog will not save.
The Edit library dialog will not save.
Most likely a phrase has no keyword and no intent. The dialog requires at least one matching signal per phrase. Add a keyword chip and try again.
What does Severity actually do?
What does Severity actually do?
It does not change the matching logic. It drives the sort order of the per-script table and the Lowest pass KPI, so a high-severity script with a 70% pass rate appears above a low-severity script with the same pass rate.
My Calls tabs cap at 50 rows but I have hundreds of failing calls.
My Calls tabs cap at 50 rows but I have hundreds of failing calls.
The tab caps at 50 to keep the page snappy. Use the Download CSV export to get every (call × script × phrase) row for deeper analysis.
Will the LLM rubric score replace this whole flow?
Will the LLM rubric score replace this whole flow?
No. The upcoming LLM rubric is an additional 0 to 100 score with a rationale, surfaced alongside the deterministic phrase scoring. Both signals will live in the same drill-in sheet.
Where to go next
Agent + Team Scorecards
Per-agent metrics across the contact center.
Intent Analysis
Source the intent list used in script triggers.
Alerts
Threshold rules and rolling-baseline anomalies.
Goals
Project-wide KPI targets.

