Call Quality Assessment Agent
Evaluate customer-care call transcripts against a deterministic nine-dimension Service Excellence Index and get an instant quality grade, full dimension breakdown, and AI-coached rewrite in one run.
What it does
Call Quality Assessment Agent evaluates a call transcript against a nine-dimension Service Excellence Index. Paste or upload a transcript and the agent returns an overall score (0-100), a grade from A+ (Exceptional) to E (Critical), a per-dimension scorecard with observations, a sentiment delta, and an AI-generated coached rewrite focused on the lowest-scoring dimensions.
Leverage the Call Quality Assessment Agent to generate consistent, explainable, and auditable quality scores without building a custom scoring pipeline. The agent automatically identifies the transcript language, interaction category, and subcategory, delivering deterministic results that ensure identical transcripts always receive the same score.
Capabilities
- Nine-dimension scoring. Scores Empathy & Tone (12 pts), First Call Resolution (14 pts), Compliance (12 pts), Active Listening (10 pts), Product / Plan Accuracy (12 pts), Solution Orientation (10 pts), Brand / Upsell (10 pts), Conversation Closure (10 pts), and Sentiment Delta (10 pts) - 100 points total.
- Grade with coaching trigger. Returns a letter grade (A+, A, B, C, D, E) mapped to score bands. A/A+ calls are skipped for coaching; C/D/E calls are flagged for immediate review.
- Multilingual support. Accepts English, Hindi, Tamil, Telugu, Kannada, Malayalam, Marathi, and Punjabi. Non-English transcripts are translated automatically; the original language is preserved in the report.
- AI-coached rewrite. Produces an improved version of the transcript that targets the weakest dimensions, so supervisors can show agents exactly what a better call would look like.
- Auto call-type detection. Identifies whether the call is a complaint, sale, upsell, retention, service query, or information request no pre-labelling required.
- Sentiment delta. Measures how much customer sentiment improved from call open to call close, surfacing calls where the agent de-escalated or escalated the situation.
Inputs & outputs
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| transcript | string / file | required | Plain-text call transcript with speaker labels on each line:
AGENT: ... and CUSTOMER: ... (case-insensitive, colon
or dash separator). Accepts .txt, .json,
.html |
| language | string | optional | Language code (en, hi,
ta, te, kn, ml,
mr, pa). Omit to let the agent auto-detect. |
| categoryId | string | optional | Call category code: CMPL (Complaint),
SALE (Sales), UPSL (Upsell), RETN
(Retention), QURY (Service Query), INFO
(Information). Omit to let the agent auto-detect from transcript content
- the same detector /score uses. |
| subCategoryId | string | optional | Sub-category code (e.g. CMPL.BIL for billing
dispute, SALE.PST for postpaid new connection). Omit to
let the agent infer. |
Outputs
| Name | Type | Description |
|---|---|---|
| callId | string | Unique identifier for this scored call, used to retrieve the full report. |
| assessment.overallScore | number | Total score out of 100. |
| assessment.grade | string | Letter grade: A+ (≥ 95), A (85-94), B (70-84), C (50-69), D (30-49), E (0-29). |
| assessment.factors | array | Nine dimension objects, each with label,
score, maxScore, and observations
(rule-level evidence). |
| assessment.decision | string | One of excellence_demonstrated (A+),
excellence (A), meets_standard (B),
coaching_recommended (C), below_standard (D),
or urgent_review (E). |
| assessment.coachingPriority | string | none (A/A+ no rewrite generated),
low (B), medium (C/D), or high (E). |
| coaching.improvedTranscript | string | AI-generated coached rewrite of the transcript, targeting the lowest-scoring dimensions. |
Example tasks
Things you can hand this agent:
- Score a 15-minute billing-dispute call from your contact centre to identify which dimensions pulled the grade below B.
- Evaluate 100 calls from a new hire cohort and surface the bottom 10% by FCR and Compliance score for targeted coaching sessions.
- Run a Hindi-language upsell call through the agent to get a coached English rewrite that supervisors can use for training.
- Compare grade distributions across two customer-care circles to benchmark regional quality before a quarterly review.
{
"callId": "cq_7f3a9b2c",
"idempotent": false,
"assessment": {
"overallScore": 79,
"grade": "B",
"decision": "meets_standard",
"coachingPriority": "low",
"language": "en",
"factors": [
{ "label": "Empathy & Tone", "score": 10, "maxScore": 12 },
{ "label": "First Call Resolution", "score": 11, "maxScore": 14 },
{ "label": "Compliance", "score": 10, "maxScore": 12 },
{ "label": "Active Listening", "score": 8, "maxScore": 10 },
{ "label": "Product / Plan Accuracy", "score": 9, "maxScore": 12 },
{ "label": "Solution Orientation", "score": 8, "maxScore": 10 },
{ "label": "Brand / Upsell", "score": 7, "maxScore": 10 },
{ "label": "Conversation Closure", "score": 9, "maxScore": 10 },
{ "label": "Sentiment Delta", "score": 7, "maxScore": 10 }
]
},
"newBalance": 875
}
Configuration
The agent requires no configuration to produce a scored result. The following optional parameters let you override auto-detection defaults:
| Option | Type | Default | Description |
|---|---|---|---|
| lang | string | auto | Force a specific transcript language instead of using character-script detection. |
| categoryId | string | auto | Force a call category (CMPL / SALE /
UPSL / RETN / QURY / INFO)
instead of auto-detecting from transcript keywords. |
| subCategoryId | string | auto | Force a sub-category (e.g. CMPL.BIL) in addition
to the category override. |
Bulk & audio input
Bulk scoring
Click 📦 Bulk Upload above the transcript box to score many calls in one batch instead of running them one at a time:
.json- a single object, or an array of objects/strings (each item = one transcript). An item can carry its owncategoryId,subCategoryId, orlangoverride; explicit per-item metadata always wins over auto-detection..zip- a folder of.txt/.html/.jsonfiles, including sub-folders (each file = one transcript; a.jsonfile inside may hold many).
The Bulk Upload dialog caps a batch at 100 transcripts, 25 MB total.
Each transcript is scored individually, and you get an average quality report plus
a per-transcript breakdown with a downloadable ZIP of all reports. For programmatic
access, POST to the BFF endpoint
(/api/bff/v1/ai-agents/call-quality-manager/bulk-upload) with a
transcripts array - the same 100 per request limit
applies, still capped at 25 MB per request body. Credits for the whole batch are deducted upfront
and refunded per item for anything that fails or comes back unscorable (junk,
one-sided, or too-short input).
Audio upload
Click Upload Audio to transcribe a call recording instead of
pasting text. Accepts mp3, wav, m4a,
webm, ogg, and flac, up to
30 MB. The file is transcribed by AWS Transcribe with speaker
diarization; the resulting AGENT: / CUSTOMER: transcript
drops straight into the textarea for scoring. No credits are charged for
transcription itself - only for the subsequent scoring run.
Limits & guardrails
- Supported text input formats:
.txt,.json,.html. Supported audio formats:mp3,wav,m4a,webm,ogg,flac(max 30 MB). - Supported languages: English, Hindi, Tamil, Telugu, Kannada, Malayalam, Marathi, Punjabi.
- Bulk Upload: up to 100 transcripts / 25 MB per batch, whether via the dialog or the BFF endpoint directly.
- The scoring engine is deterministic the same transcript always produces the same nine-dimension scores and overall grade.
- A/A+ calls (score ≥ 85) return
decision: excellenceorexcellence_demonstratedwithcoachingPriority: none; no coached rewrite is generated for these calls. - Junk, one-sided, or too-short transcripts (e.g. under ~12 words, or missing
a real two-sided exchange) come back as
unscorable: truewith areasoninstead of a fabricated score, and are never charged. - Failed runs (error before any score is produced) are not charged.
- Transcript data is not persisted after the run completes and is never used for model training.