Skip to main content

Call Summarization

Automatically generate concise summaries of conversations.

Overview

Call Summarization helps you:

  • Create quick call overviews
  • Extract key decisions and action items
  • Track conversation outcomes
  • Improve record-keeping efficiency
  • Enable quick call reviews

How It Works

SpeechLytics summarization analyzes the full transcription to:

  1. Identify key points: Main topics discussed
  2. Extract outcomes: Decisions made and resolutions
  3. Generate summary: Concise overview of the call
  4. Highlight actions: Follow-up items and next steps

Getting Call Summaries

From Transcript Status

curl -X GET "https://api.example.com/api/v1/transcripts/123456789/status" \
-H "Authorization: Bearer YOUR_TOKEN"

Response includes summary:

{
"callSummary": {
"summary": "Customer called regarding billing discrepancy on account #12345. Agent investigated and found double charge from last payment. Customer satisfied with explanation. Issue resolved by issuing refund credit of $50 to account effective immediately. Customer will receive credit in next billing cycle."
}
}

Summary Fields

FieldDescription
summaryHuman-readable call summary

Summary Structure

Summaries typically include:

  1. Caller Information

    • Who called and why
    • Account/reference numbers
  2. Key Topics

    • Main issues discussed
    • Resolutions offered
  3. Actions Taken

    • What was resolved
    • What was escalated
  4. Outcomes

    • Customer satisfaction level
    • Follow-up requirements
  5. Next Steps

    • Required follow-up
    • Timelines

Example Summaries

Customer Service Call

Customer contacted regarding delayed order #ORD-2025-001. Agent reviewed
order status and confirmed it is in transit with expected delivery Friday.
Customer accepted timeline. Agent provided tracking number: 1Z123456789.
No further action required.

Technical Support Call

Customer experiencing login issues with mobile app. Agent requested logs
and identified DNS configuration problem on customer's network. Customer
implemented suggested DNS changes (8.8.8.8, 8.8.4.4). Issue resolved.
App now accessible. Customer confirmed working status.

Sales Call

Prospect inquired about enterprise pricing for 500+ users. Agent provided
overview of features and pricing tier options. Prospect interested in
comprehensive package. Next step: Product demo scheduled for Tuesday
at 2 PM. Sales rep: John (ext. 4532).

Integration Example

Python

import requests

class SummaryAnalyzer:
def __init__(self, api_base, token):
self.api_base = api_base
self.headers = {"Authorization": f"Bearer {token}"}

def get_summary(self, transcript_id):
"""Get call summary"""
response = requests.get(
f"{self.api_base}/api/v1/transcripts/{transcript_id}/status",
headers=self.headers
)

transcript = response.json()
summary = transcript.get('callSummary', {})
return summary.get('summary', '')

def extract_action_items(self, transcript_id):
"""Extract action items from summary"""
summary = self.get_summary(transcript_id)

action_keywords = [
'follow up', 'call back', 'send', 'email', 'callback',
'next step', 'scheduled', 'meeting', 'appointment', 'check'
]

lines = summary.split('. ')
action_items = []

for line in lines:
lower_line = line.lower()
if any(keyword in lower_line for keyword in action_keywords):
action_items.append(line.strip())

return action_items

def extract_resolution(self, transcript_id):
"""Extract call resolution from summary"""
summary = self.get_summary(transcript_id)

resolution_indicators = [
'resolved', 'fixed', 'issued', 'provided', 'explained',
'clarified', 'confirmed', 'approved', 'denied'
]

lines = summary.split('. ')
resolutions = []

for line in lines:
lower_line = line.lower()
if any(indicator in lower_line for indicator in resolution_indicators):
resolutions.append(line.strip())

return resolutions

# Usage
analyzer = SummaryAnalyzer("https://api.example.com", "your_token")

# Get summary
summary = analyzer.get_summary(123456789)
print("Call Summary:", summary)

# Extract action items
actions = analyzer.extract_action_items(123456789)
print("Action Items:", actions)

# Extract resolutions
resolutions = analyzer.extract_resolution(123456789)
print("Resolutions:", resolutions)

Summary Quality

Factors affecting summary quality:

  1. Audio Quality

    • Clear audio produces better summaries
    • Background noise can affect accuracy
    • Proper microphone placement helps
  2. Speech Clarity

    • Clear pronunciation important
    • Mumbling affects transcription
    • Accents may need extra processing
  3. Conversation Structure

    • Well-organized conversations summarize better
    • Rambling calls are harder to summarize
    • Multiple concurrent topics complicate summaries

Advanced Features

Key Metrics Extraction

{
"callSummary": {
"summary": "...",
"duration_seconds": 180,
"topics": ["Billing", "Account Update"],
"sentiment": "Positive",
"customer_satisfaction": 0.92,
"resolution_time": 120,
"actions_required": 2,
"escalation_needed": false
}
}

Timeline Extraction

{
"timeline": [
{
"timestamp": 0,
"event": "Customer called regarding order status"
},
{
"timestamp": 45,
"event": "Agent found tracking information"
},
{
"timestamp": 120,
"event": "Customer satisfied with update"
}
]
}

Use Cases

1. Record Keeping

  • Create formal call records
  • Document customer interactions
  • Maintain audit trail
  • Enable call reviews

2. Quality Assurance

  • Review agent performance
  • Identify training needs
  • Monitor call handling
  • Reward best practices

3. Customer Service

  • Quick call reviews
  • Customer follow-up
  • Issue resolution tracking
  • Escalation identification

4. Business Intelligence

  • Track common issues
  • Identify trends
  • Measure resolution effectiveness
  • Inform process improvements

5. Automation

  • Trigger workflows based on content
  • Route based on detected issues
  • Create tickets from summaries
  • Send alerts for escalations

CRM Integration

Push Summaries to CRM

def sync_summary_to_crm(transcript_id, api_token, crm_api_key):
"""Sync call summary to CRM system"""

# Get summary from SpeechLytics
analyzer = SummaryAnalyzer("https://api.example.com", api_token)
summary = analyzer.get_summary(transcript_id)

# Get customer info from transcript
response = requests.get(
f"https://api.example.com/api/v1/transcripts/{transcript_id}/status",
headers={"Authorization": f"Bearer {api_token}"}
)
transcript = response.json()

# Prepare CRM update
crm_payload = {
'transcript_id': transcript_id,
'summary': summary,
'call_date': transcript.get('created'),
'duration': transcript.get('duration'),
'sentiment': transcript.get('sentiments', [{}])[0].get('title'),
'call_type': transcript.get('name')
}

# Update CRM
crm_response = requests.post(
"https://crm.company.com/api/calls",
headers={"Authorization": f"Bearer {crm_api_key}"},
json=crm_payload
)

return crm_response.json()

Visualization

Summary Dashboard Widget

┌─────────────────────────────────────┐
│ Call Summary - ID: 123456789 │
├─────────────────────────────────────┤
│ Customer called regarding billing │
│ discrepancy. Issue identified and │
│ resolved with $50 credit issued. │
│ │
│ ✓ Resolved │
│ ⚠ Follow-up: Check if credit posts │
└─────────────────────────────────────┘

Best Practices

1. Review Summaries

  • Always review AI-generated summaries
  • Verify key information accuracy
  • Add missing details manually
  • Provide feedback for improvement

2. Consistency

  • Use summaries for all calls
  • Maintain standard format
  • Track summary quality
  • Monitor improvement over time

3. Action Items

  • Extract and track actions
  • Set reminders for follow-ups
  • Assign responsibility
  • Monitor completion

4. Training

  • Share good summary examples
  • Identify patterns to improve
  • Train agents on clear communication
  • Provide feedback

Troubleshooting

Summary Too Short

  • Audio may be low quality
  • Limited conversation content
  • Transcription incomplete
  • Try re-processing with better audio

Summary Too Long

  • May include unnecessary details
  • Complex multi-topic conversation
  • Consider breaking into segments
  • Adjust summarization parameters

Missing Key Information

  • May not have been in audio
  • Spoken too quickly or unclearly
  • Overlapping speakers
  • Review original transcription

Next Steps

Summarization need to be enabled on your account in order to process the transcription and get summary.

Usage

To enable summarization, you will need to contact sales.

Once enabled, after transcription is finished, summarization will be automatically executed.

Result

The transcription result will contain a "callsummary" key with the output of the model:

"{
"transcription": {...},
"callsummary": {
"summary": "string"
},
}"

You’ll find the summarization of your audio under the summary key.