Reader setup
Before you choose
List your constraints, required evidence and stop rules before you score options.
- A small set of consented synthetic or formally approved test transcripts with known expected facts
- A named QA owner who decides what reviewers may use the output for
- A private test workspace that is not the production CRM or agent-performance system
- What you will prove
- You will define a limited analysis rubric, compare AI output with a human review, and keep the result clearly marked as a draft observation.
- Safety boundary
- Do not use automated analysis as the sole basis for hiring, firing, pay, customer eligibility, compliance findings or discipline. Redact and minimize data before any test.
Reader path
How to use this article
- Use it when: You are comparing options and need decision evidence before approval.
- Expected result: Turn options into explicit acceptance criteria and documented stop conditions.
- Start here: Score what is mandatory, keep unknowns visible, then decide only when risks are understood.
Ask one small, auditable question
“Analyze the call” is too vague to test. Begin with facts a reviewer can check: Was a callback requested? Which product name was mentioned? Was the required lab greeting present? Separate extraction from judgment: extracting a spoken phrase is different from deciding whether an agent performed well.
Write the allowed output fields before selecting a model: call ID, exact supporting quote with timestamp when available, an uncertainty flag, and `needs_human_review`. If the source cannot support a field, the correct value is unknown—not a guess.
Good starter questions read like a checklist item, not a verdict: did the agent state the required disclosure, was a price quoted, was a callback requested, did the customer ask to be placed on a do-not-call list. Avoid a first question that already assumes a judgment, such as whether the agent was persuasive, because two careful reviewers can disagree about that without either one being wrong.
Visual walkthrough
Follow three real demo screens
Captured on an isolated VICIdial demo: Administration screens on September 24, 2026, and the idle Agent screen on August 11, 2026. Each caption states its own capture time, and every sanitized image helps you recognize a related screen; none proves that this article's call, command, or result occurred.Treat home-page counts as orientation

Use the Reports index

See the Real-Time report layout

Make a tiny human-labeled test set
Use 10–20 approved test calls or scripts spanning clear positives, clear negatives, silence, interruptions and ambiguous wording. Two humans should label the expected result independently, then resolve differences. That gives you a baseline before the model ever sees a production-like queue.
Keep the test set separate from campaign reporting. A model that appears useful on a friendly sample may fail on accents, noise, jargon, transfers, multiple speakers or incomplete recordings.
Spread the sample across agents, campaigns, call lengths and days rather than pulling twenty consecutive calls from one queue, or the test set will only confirm that the model handles whatever pattern happened to be common that day. When the two human labels disagree, write down why before resolving it — that disagreement log is often more useful later than the final label.
Guided example: use a constrained review record
This JSON is a local contract for the reviewer. It does not call an AI service; it shows that the output must preserve evidence and uncertainty instead of producing a confident free-text score.
Keep the record's shape identical across every test call, including the ones where nothing relevant was said. An empty `supportingText` with `requestedCallback: 'unknown'` is a complete, honest result; do not let a later prompt revision quietly drop a field the reviewer still expects to see.
const review = { testCallId: 'lab-001', requestedCallback: 'unknown', // yes | no | unknown supportingText: '', reviewerDecision: 'pending', modelOutputIsAdvisory: true};This sample is a template or reading aid, not a terminal command. There is no output to show.
- Before you run it
- Use invented IDs and synthetic transcript text only.
- Success looks like
- Every proposed finding has a place for evidence and a human decision.
- Stop if
- Stop if a downstream report treats `requestedCallback` as verified before a reviewer confirms it.
Guided example: validate the shape, then the meaning
A structured response is easier to reject safely than an unbounded paragraph. Schema validation only proves the response has the right fields; it does not prove the call interpretation is correct. Compare every result with the human labels in your test set.
Version the prompt text itself, not only the model name. A one-line change to the prompt can shift results across the whole test set, and without a saved prompt version you cannot tell whether a new disagreement came from the model, the prompt, or the transcript.
function acceptForReview(result) { const allowed = new Set(['yes', 'no', 'unknown']); return typeof result?.testCallId === 'string' && allowed.has(result?.requestedCallback) && typeof result?.supportingText === 'string' && result?.modelOutputIsAdvisory === true;} // A true result enters a human review queue; it does not update VICIdial or a CRM.This sample is a template or reading aid, not a terminal command. There is no output to show.
- Before you run it
- Run this only in the test integration service with fabricated results.
- Success looks like
- Malformed outputs are rejected and valid-shaped outputs wait for a named reviewer.
- Stop if
- Stop if anyone proposes using this gate as proof that the model's conclusion is accurate.
Measure disagreements, not just attractive examples
Count false positives, false negatives and ‘unknown’ cases against the human gold labels. Review disagreements by call type and language. A useful workflow reports uncertainty and routes edge cases to people; it does not hide them behind a single average score.
Store the prompt version, model/version identifier offered by the provider, source transcript version, reviewer decision and date. That record makes it possible to reproduce a surprising result or pause a bad release.
In plain language: a false positive is the model claiming something happened that the human labels say did not; a false negative is the model missing something the human labels say did happen. Track both separately, because a workflow that hides its false negatives behind a high overall agreement rate is the one most likely to embarrass you in production.
Keep the production rollout reversible
If the test is acceptable, begin with an advisory queue for a small authorized team. Give reviewers an easy reject/correct action and monitor disagreement rates. Keep original reports and dispositions authoritative; AI notes are a separate attachment until governance explicitly approves another use.
Do not claim a model detects compliance, intent, sentiment, deception or sales quality reliably without a domain-specific evaluation and accountable policy owner. Those are high-impact interpretations, not simple transcript facts.
VICIdial's own Quality Control Manual documents a human call-review process that most installations already run in some form. Treat this workflow as a second, advisory layer beside that existing process, not a replacement for it — the manual's own review discipline is the baseline this workflow has to earn a place next to, not skip past.
Set a retention period for the test transcripts and the review records themselves, not just the customer recordings they came from. A QA experiment that quietly becomes a permanent, ungoverned archive of call content creates its own privacy liability, separate from whatever retention rule already governs the original recording.
- The rubric is limited and testable.
- Humans labeled a test set before review began.
- Every output remains advisory and reversible.
Evidence ledger
Verification basis
- Structured output validation prevents malformed integration data but does not validate the truth of an analysis.
- The cited API documentation describes structured response capabilities; it does not certify any sales, QA, sentiment or compliance conclusion.
- This guide deliberately provides no performance benchmark because it must be measured on the organization’s approved evaluation set.
- VICIdial publishes its own Quality Control Manual, evidence that a human call-review process is already the norm this workflow supplements, not a gap only this article fills.
Primary references
Sources
- OpenAI Structured Outputs guideOpenAI · accessed September 23, 2026
- NIST AI Risk Management FrameworkNIST · accessed September 23, 2026
- VICIdial reporting documentation indexVICIdial · accessed September 23, 2026
- VICIdial Quality Control ManualVICIdial · accessed September 23, 2026