Setting Up Agent QA

This section walks you through configuring Agent QA from scratch. By the end, you will have a fully working QA system evaluating your customer service calls automatically.

2.1 Prerequisites

Before starting setup, prepare three sets of files. The quality of these inputs directly determines the accuracy of your evaluations.

Golden Call Recordings

Representative audio files that cover your typical call scenarios.

RequirementDetail
ContentDiverse scenarios -- routine calls, escalations, edge cases, different agents, different outcomes
Supported formatsMP3, WAV, M4A, MP4
Maximum file size25 MB per file
Audio qualityClear speech, reasonable duration, minimal background noise

Tips for selecting golden recordings: Include calls with diverse outcomes (successful resolutions, escalations, transfers, unresolved issues). Cover all major contact reason categories. Balance between high-performing and low-performing examples. Include calls from multiple agents to avoid bias. Aim for 20 to 50 examples per QA parameter for best calibration results.

Label Data CSV

A spreadsheet containing your human reviewers' Pass/Fail/N/A grades for each golden call recording.

RequirementDetail
FormatCSV file, UTF-8 encoded
Required columnFilename -- must match audio file names without the file extension
Parameter columnsOne column per QA parameter, with values of exactly Pass, Fail, or N/A
No empty cellsEvery parameter cell must contain Pass, Fail, or N/A

Example:

UCID,Transcript,Greeting,Customer Verification,Issue Resolution,Empathy,Hold Time
call-001,"Good morning, thank you for calling...",Pass,Pass,Fail,Pass,N/A
call-002,"Yeah what do you need?",Fail,Pass,Pass,Fail,Pass
call-003,"Hello, this is Sarah from Support...",Pass,N/A,Pass,Pass,Pass

The UCID value call-001 must correspond to an audio file named call-001.mp3, call-001.wav, call-001.m4a, or call-001.mp4. The Transcript column is optional -- if omitted, the system transcribes from audio. Column headers become your parameter names, so use clear, descriptive names.

QA Form

RequirementDetail
FormatCSV
ContentParameter names, detailed descriptions, scoring criteria (what constitutes Pass vs. Fail), weight assignments, and criticality indicators

2.2 Create Your AI Employee

  1. Log in at app.ema.co
  2. Navigate to AI Employees in the left sidebar
  3. Click Create on "Pre-built AI Employee"
  4. Select the Agent QA template from the catalog
  5. Enter a Name (e.g., "QA Assistant - Customer Service")
  6. Enter a Description (e.g., "Evaluates all inbound customer service calls against our 25-parameter QA scorecard")
  7. Select the Language for evaluations (this determines the language used in scorecard reasoning and insights)
  8. Click Continue

Your AI Employee is created in Disabled state. You must complete all configuration steps before enabling it.

After creation, you will see five tabs:

TabPurpose
ConfigurationSet up QA parameters, data sources, integrations, and contact reasons
AuditReview evaluated interactions with scorecards and transcripts (empty until processing begins)
MetricsView aggregate analytics -- agent performance trends, contact reason breakdowns, resolution rates, sentiment distributions
InsightsBrowse AI-generated patterns -- strengths, improvement areas, product feedback, competitive intelligence
PermissionsManage user access -- invite users, assign roles, control visibility

2.3 Configure QA Parameters with Auto-Learning

Auto-Learning is the fastest and most accurate way to configure your evaluation rules. It uses your golden dataset to generate, calibrate, and iteratively refine parameter instructions until they align with your human reviewers' grades.

Upload Your Files

  1. Open your AI Employee and click the Configuration tab
  2. Scroll to QA Parameters and click Setup QA Parameters
  3. Upload all files:
FileInstructions
Audio filesSelect your golden call recordings. Supported formats: MP3, WAV, M4A, MP4. Max 25 MB per file.
TranscriptSelect your golden transcripts. Supported formats: JSON, XML, HTML.
Label dataClick Download sample first to confirm the expected format. CSV with Pass/Fail/N/A values.
QA formClick Download sample to check the expected format. Upload the QA form CSV.

Validation Before Auto-Learning Can Start

ValidationRequirement
Column matchingParameter columns in your label data CSV must match the parameter definitions in your QA form CSV exactly
Transcription readinessAll uploaded audio files must have completed transcription before Auto-Learning can start
Label data valuesEvery cell must contain exactly Pass, Fail, N/A, or NOT_APPLICABLE
No concurrent pipelinesOnly one Auto-Learning pipeline can run per AI Employee at a time

Run Auto-Learning

  1. After all files are uploaded and validated, click Generate Parameters
  2. Auto-Learning begins processing through multiple stages

What you see during processing:

  • A split-panel view: the left pane displays the parameters list with per-iteration accuracy data, while the right pane shows an overall accuracy chart tracking improvement across iterations
  • You can click Run in background to continue configuring other settings while it runs
  • If processing fails, a Retry button appears to restart the pipeline
  • Processing typically takes 15 to 45 minutes depending on the number of golden recordings

What happens behind the scenes: The system runs up to 3 improvement iterations by default, stopping early if accuracy converges (i.e., improvement between consecutive iterations falls below a 1% threshold). Parameters with accuracy below 90% are targeted for instruction rewriting in each iteration.

After the initial run completes, you can click Deep Optimize to run additional iterations (up to 20) if accuracy on certain parameters is below your target. Deep Optimize also uses convergence-based early stopping.

Review and Approve Parameters

After Auto-Learning completes:

  1. Click Review Parameters
  2. For each parameter, review:
FieldDescription
Parameter NameThe name of the QA criterion (must be unique)
CategoryGrouping label for related parameters
WeightHow much this parameter contributes to the overall score (must be greater than 0)
CriticalityCritical = auto-fail if this parameter fails; Non-Critical = weighted contribution only
MechanismTranscript Only, Knowledge Verified, or Action Based
Generated InstructionsA pass/fail instruction and a not-applicable instruction generated by Auto-Learning
AccuracyPercentage match between the system's evaluation and your human grades
  1. Edit any parameter by clicking on it -- you can modify instruction text, weight, criticality, or mechanism
  2. All parameters are selected by default. Deselect any you want to discard, then click Approve Parameters

Understanding Accuracy Results

AccuracyInterpretationRecommended Action
95-100%Excellent alignment with human gradesNo action needed
90-94%Strong alignmentNo action needed
85-89%AcceptableConsider adding more golden data examples or refining instruction text
Below 85%Needs attentionReview golden data quality; consider splitting complex parameters into simpler ones

Adding Parameters Manually

You can also add parameters without Auto-Learning:

  1. In Configuration > QA Parameters, click Add
  2. Define the parameter name, category, weight, criticality, mechanism, pass/fail instruction, and N/A instruction
  3. Click Save

Manual parameters do not have accuracy scores since they have not been tested against golden data. Consider running Auto-Learning again after adding manual parameters to validate their performance.

2.4 Add a Knowledge Base

Skip this step if all of your parameters use the Transcript Only mechanism. A knowledge base is only required for parameters using the Knowledge Verified mechanism.

Setting Up Data Sources

  1. In the Configuration tab, scroll to Data Sources
  2. Click Add and select your source type:
Source TypeBest ForSync Behavior
File UploadQuick setup, static documentsManual -- re-upload when documents change
Google DriveOrganizations using Google WorkspaceAutomatic -- refreshes within ~10 minutes of changes
SharePointOrganizations using Microsoft 365Automatic sync
ConfluenceOrganizations using Atlassian toolsAutomatic sync
URL ScrapingPublic-facing knowledge bases, help centersCrawls up to two levels deep from each seed URL
  1. Create a folder name to organize your documents (e.g., "Return Policies," "Product Guides")
  2. Upload or connect your files
  3. Optionally, assign tags to documents for precise filtering when connecting folders to specific parameters

Supported File Formats

CategoryFormats
Production-readyPDF, DOCX, PPTX, TXT, HTML, MD
Limited supportXLSB, CSV, XLSX, XML, JSON
Not supportedLegacy Office binaries (.doc, .xls), source code files, audio/video, native Google Docs/Sheets/Slides

Scanned documents pass through OCR automatically. Diagrams are not interpreted -- add text captions for important visual content.

2.5 Add Integrations

Skip this step if none of your parameters use the Action Based mechanism.

Available Integrations

IntegrationTypical Use Cases
SalesforceCase creation, CRM field updates, opportunity logging
ZendeskTicket creation and update verification
GenesysCall metadata retrieval, disposition codes
Five9Dialer data, agent statistics, call disposition
Nice CXoneQuality management sync
Custom WebhooksAny REST API integration for proprietary systems

Setup Steps

  1. In the Configuration tab, scroll to Integrations
  2. Click Add Integration and select the type
  3. Enter credentials -- API URL, API Key or OAuth credentials, integration-specific settings
  4. Click Test Connection to verify connectivity
  5. Configure field mappings -- specify which data fields to retrieve and how to match them to call interactions
  6. Click Save
  7. Connect the integration to your Action Based parameters in the QA Parameters section

2.6 Configure Contact Reasons

Contact reasons categorize why customers are calling. This classification powers the analytics in your Metrics dashboard.

The Three-Level Hierarchy

LevelDescriptionExample
L1High-level categoryReservations
L2Detailed breakdown within L1Modify Reservation
L3 (Call Driver)Specific root causeVoluntary Date Change

Configure Non-Resolution Reasons

Non-resolution reasons categorize why an issue was not resolved. The default L1 categories are:

L1 CategoryDescriptionExample L2 Subcategories
PeopleAgent-related issuesKnowledge gap, communication issues, insufficient training
ProcessWorkflow or policy limitationsScope limitation, policy restriction, approval required
TechnicalSystem issuesSystem downtime, integration failure, tool malfunction
End UserCustomer-related factorsCustomer unresponsive, call disconnected, customer declined solution

Where to Make Changes

What You Want to DoWhere to Do It
Edit existing category instructionsConfiguration page within your AI Employee
Add or delete categories (new L1/L2/L3 entries)Workflow Builder -- click "Go to AI Employee builder" from the Configuration page

Keep categories mutually exclusive -- each call should clearly belong to one category at each level. Aim for 5 to 10 L1 categories, 3 to 8 L2 per L1, and specific L3 call drivers under each L2. Review and update categories quarterly.

2.7 Set Up Permissions

Agent QA uses role-based access control with four roles. See Roles and Permissions for the full reference.

  1. Click the Permissions tab in your AI Employee
  2. Click Add User
  3. Enter the user's email address
  4. Select the appropriate role
  5. Click Send Invitation

2.8 Enable and Send Your First Call

Pre-Enable Checklist

  • QA parameters configured and approved (via Auto-Learning or manually)
  • Knowledge base connected and documents indexed (if using Knowledge Verified parameters)
  • Integrations added and connections tested (if using Action Based parameters)
  • Contact reasons configured at all three levels (L1, L2, L3)
  • Non-resolution reasons configured (L1 and L2)
  • Permissions assigned and invitations sent

Enable Your AI Employee

  1. Navigate to the Configuration tab
  2. Click Save changes if any pending changes are indicated
  3. Click the Enable toggle at the top of the page and confirm

Verify with a Test Call

Upload a test call via the API to verify end-to-end processing:

API endpoints:

  • Audio Files: POST https://api.ema.co/api/v1/external/upload/file
  • Transcript File: POST https://api.ema.co/api/v1/external/upload/transcript

Required headers:

HeaderValue
x-persona-idYour AI Employee's persona ID (found in Configuration tab URL or settings)
AuthorizationBearer <your-jwt-token>

Required form fields:

FieldTypeDescription
resource_idstringA unique identifier for the call (e.g., test-call-001)
agent_idstringThe agent's UUID in your system
agent_emailstringThe agent's email address (used for Agent-role permission filtering)
channelsstringNumber of audio channels ("1" for mono, "2" for stereo)
timestampstringCall timestamp in YYYY-MM-DD HH:MM:SS format
is_golden_datastring"false" for regular evaluation calls
filefileThe audio file (MP3, WAV, M4A, or MP4, max 25 MB)

Example (Python):

import requests

API_URL = "https://api.ema.co/api/v1/external/upload/file"
PERSONA_ID = "your-persona-id"
BEARER_TOKEN = "your-jwt-token"

headers = {
 "x-persona-id": PERSONA_ID,
 "Authorization": f"Bearer {BEARER_TOKEN}",
}

data = {
 "resource_id": "test-call-001",
 "agent_id": "agent-uuid",
 "agent_email": "[email protected]",
 "channels": "1",
 "timestamp": "2024-01-15 14:30:00",
 "is_golden_data": "false",
}

with open("test_call.wav", "rb") as f:
 files = {"file": ("test_call.wav", f, "audio/wav")}
 response = requests.post(API_URL, headers=headers, data=data, files=files)

print(response.status_code, response.text)

Expected response: HTTP 200 with a confirmation message.

Verify the Results

  1. Wait 2 to 5 minutes for processing
  2. Navigate to the Audit tab
  3. Your test interaction should appear with a status of "QA completed"
  4. Click View Details to review the scorecard, transcript, and reasoning

Troubleshooting a Failed Test Call

IssueWhat to Check
Unsupported formatAudio must be MP3, WAV, M4A, or MP4. Transcript can be JSON, XML, or HTML.
File too largeMust be under 25 MB. Compress or split longer recordings.
Poor audio qualityEnsure clear speech. Very short recordings (under 10 seconds) or recordings with no speech may fail.
Authentication errorVerify your bearer token is valid and the x-persona-id header matches your AI Employee.
AI Employee disabledConfirm the Enable toggle is set to Enabled.

Last updated: Jul 3, 2026