Skip to main content

What are Extractions?

Extractions allow you to automatically capture structured data from call transcripts. Organize extractions into categories and define custom questions to extract specific information like lead quality, appointment details, customer sentiment, and more.
Extractions interface showing categories and extraction templates

Getting Started with Extractions

Step 1: Access the Analytics Tab

Navigate to the Analytics tab in your agent configuration to find the Extractions section.
Empty extractions state with Create First Category button

Creating Categories

Categories help you organize related extractions together. For example, “Agent Handover”, “Visit Details”, or “Lead Qualification”.
1

Click Create First Category or New Category

Start by creating a category to organize your extractions.
2

Enter Category Name

Choose a descriptive name like “Agent Handover” or “Visit Details”.
3

Click Create

Your category is now ready for extractions.
Create category dialog with input field

Creating Extractions

Within each category, you can create multiple extraction templates to capture different data points.
New extraction form showing name, prompt, answer type, and model fields

Extraction Fields

A descriptive name for the extraction (e.g., “Call Outcome”, “Customer Sentiment”, “Agent Handover Needed”).This name will appear in your extraction results and webhooks.
Instructions that guide the LLM on what to extract from the transcript.Example prompts:
What was the outcome of the call? Was the customer satisfied?
Did the agent answer all questions?
Determine whether an agent handover is required based on the
customer's statements.
You can use variables like {name}, {candidate_name}, {email} to reference call-specific data from recipient_data.
Choose how the LLM should structure its response:Free Text
  • LLM generates a custom answer based on conversation context
  • Best for open-ended questions and detailed responses
  • Example: “Describe the customer’s main concern”
Pre-defined
  • LLM selects from predefined options you configure
  • Best for categorical data and structured responses
  • Example: Lead quality (hot/warm/cold), Yes/No questions
Select the LLM model for extraction processing.Default: gpt-4.1-mini (recommended for most use cases)

Answer Types Explained

Free Text Extractions

Use free text when you want the LLM to generate custom responses based on the conversation. Best for:
  • Summarizing customer concerns
  • Extracting reasons or explanations
  • Capturing qualitative feedback
  • Open-ended questions
Example:
  • Name: “Customer Concern”
  • Prompt: “Summarize the main issue the customer raised during the call”
  • Answer Type: Free Text

Pre-defined Extractions

Use pre-defined options when you want structured, categorical responses.
Edit extraction template showing predefined answer options with conditions
Best for:
  • Yes/No questions
  • Status classifications
  • Lead scoring
  • Outcome categorization

Configuring Pre-defined Answers

Each answer option consists of:
  1. Answer Value - The value to return (e.g., “Yes”, “No”, “hot”, “warm”, “cold”)
  2. Condition - Instructions for when to select this answer
Example: Agent Handover Detection Answer 1:
  • Value: Yes
  • Condition: yield if any one of the triggers for handover are satisfied
Answer 2:
  • Value: No
  • Condition: yield if none of the triggers for handover are satisfied
Conditions support variables like {name}, {candidate_name} for dynamic evaluation based on recipient data.

Managing Extractions

Edit an Extraction

  1. Click the edit icon (pencil) on any extraction card
  2. Modify the name, prompt, answer type, or model
  3. Click Save Changes

Delete an Extraction

  1. Click the delete icon (trash) on any extraction card
  2. Confirm deletion

Reorder Extractions

Drag extraction cards to reorder them within a category.

Testing Extractions

Before deploying extractions to production, test them against sample or real transcripts to validate accuracy and refine your prompts.
Test Extractions modal showing sample transcripts, transcript input, and extraction results

How to Test Extractions

1

Click Test Extractions

In the Extractions section, click the Test Extractions button to open the testing modal.
2

Choose a Transcript

Select from sample transcripts (Sales Call, Support Call, Appointment) or provide your own:
  • Paste - Paste a transcript directly into the text area
  • Import - Upload a transcript file
3

Run Test

Click the Run Test button to process the transcript through all your extraction templates.
4

Review Results

View extraction results organized by category. Each extraction shows:
  • SUBJECTIVE - Free text responses generated by the LLM
  • OBJECTIVE - Pre-defined values selected by the LLM

Understanding Test Results

Extraction results are displayed hierarchically:
CATEGORY NAME
  ├─ EXTRACTION NAME
  │   ├─ SUBJECTIVE: [Free text response]
  │   └─ OBJECTIVE: [Pre-defined value or null]
Example:
VISIT DETAILS
  ├─ RESCHEDULED VISIT TIME
  │   ├─ SUBJECTIVE: 14:00
  │   └─ OBJECTIVE: null
  ├─ RESCHEDULED VISIT DATE
  │   ├─ SUBJECTIVE: 24/03/2026
  │   └─ OBJECTIVE: null
null appears when an extraction type isn’t configured or no matching value is found.

Testing Best Practices

Test your extractions against various conversation types to ensure they work across different scenarios.
If using both free text and pre-defined answers, verify both are extracting correctly.
If results aren’t accurate, edit your extraction prompts and conditions, then test again.
For production validation, test with actual call transcripts from your agent.

Sample Transcripts

The Test Extractions interface provides three sample transcript types:
  • Sales Call - Conversation about products and services
  • Support Call - Customer support interaction
  • Appointment - Scheduling and booking conversation
These samples help you quickly validate extraction logic without needing your own transcripts.

Working with Categories

Rename a Category

Click the edit icon next to the category name to rename it.

Delete a Category

Click the delete icon next to the category name. This will remove the category and all extractions within it.
Deleting a category is permanent and cannot be undone. All extractions in the category will be deleted.

Add Extractions to a Category

Click Add Extraction to [Category Name] button at the bottom of each category section.

Extraction Output Format

Extraction results are returned as a nested JSON structure organized by category and extraction name:
{
  "extracted_data": {
    "Category Name": {
      "Extraction Name": {
        "subjective": "Free text response from LLM",
        "objective": "Pre-defined value or null"
      }
    }
  }
}
Complete Example:
{
  "extracted_data": {
    "Visit Details": {
      "Rescheduled visit Time": {
        "subjective": "14:00",
        "objective": null
      },
      "Rescheduled visit date": {
        "subjective": "24/03/2026",
        "objective": null
      },
      "Visit Confirmation Status": {
        "subjective": "confirmed",
        "objective": null
      },
      "Visit Time": {
        "subjective": "",
        "objective": null
      },
      "Reason For Visit Cancellation": {
        "subjective": "null",
        "objective": null
      }
    },
    "Agent Handover": {
      "Agent Handover Needed": {
        "subjective": "The customer expressed interest in the solutions and agreed to a demo appointment. The customer did not raise any explicit requests related to vehicle consultation, price negotiation, finance, exchange, consultation needs, or detailed vehicle inquiries.",
        "objective": "No"
      },
      "Agent Handover Context": {
        "subjective": "",
        "objective": null
      }
    }
  }
}

Understanding the Output

Contains the free text response generated by the LLM based on the extraction prompt.
  • Returns a string with the LLM’s analysis
  • Empty string "" if no information found
  • "null" (string) if extraction wasn’t applicable
Example: "The customer expressed interest and agreed to a demo appointment"
Contains the pre-defined value selected by the LLM from configured answer options.
  • Returns the configured answer value (e.g., "Yes", "No", "hot", "warm", "cold")
  • null if pre-defined answers aren’t configured
  • null if no matching condition was satisfied
Example: "No" (from answer options “Yes” or “No”)
Different empty states have different meanings:
ValueMeaning
"" (empty string)No relevant information found in transcript
"null" (string)Extraction wasn’t applicable to this call
null (JSON null)Pre-defined answers not configured OR no condition matched

Accessing Extraction Results

Extracted data is part of the call execution result and is available as extracted_data in every execution response. You can access it in the following ways:
Fetch any execution by ID using GET /executions/{execution_id} or list all executions for an agent using GET /v2/agent/{agent_id}/executions. The extracted_data field is returned in the response body.
{
  "execution_id": "abc123",
  "status": "completed",
  "transcript": "...",
  "extracted_data": {
    "Agent Handover": {
      "Agent Handover Needed": {
        "subjective": "Customer asked to speak with a human.",
        "objective": "Yes"
      }
    }
  }
}
If you’ve configured a webhook, the extracted_data field is included in the post-call webhook payload, the same execution object sent to your endpoint after every call.
Open any call record from the Call History tab in the dashboard to see extraction results alongside the transcript and call summary.
For batch campaigns, extracted_data is returned in each execution record when fetching batch execution results.

Common Use Cases

Use CaseWhat to extractWhat it enables
Agent HandoverDid the caller ask for a human?Route to a live agent in real time without manual review
Lead ScoringBudget, timeline, decision-makerPush hot leads to your CRM or Slack before the rep hangs up
Appointment SyncConfirmed date, time, locationWrite bookings to Google Calendar or Cal.com automatically
Churn PreventionSentiment, unresolved complaintsFlag unhappy customers and trigger a follow-up workflow
Compliance AuditingDisclaimer read, consent givenStructured Yes/No record across thousands of calls
Call IntelligenceObjections, outcomes, cancellation reasonsSpot trends and measure what’s working without reading transcripts

Best Practices

  1. Write specific prompts : Clearly define what to capture and how to interpret the conversation. Avoid vague or multi-part instructions.
  2. Pick the right answer type : Use Pre-defined for categorical data like Yes/No or status fields, and Free Text for open-ended responses.
  3. Keep extractions focused : Split complex logic into multiple simple extractions rather than one long prompt.
  4. Test before deploying : Run your extractions against real or sample transcripts to catch issues early.

Next Steps

Extractions API

Access extractions programmatically

Webhooks

Receive extraction data in real-time

Call History

View extraction results for past calls

Analytics Tab

Configure other post-call tasks