Post call analysis

Post call analysis collects insights, summaries, and structured data after conversations. For example, for agents that performs a job interview, you may collect answers to all questions asked during the interview. Or, you can evaluate user sentiment during the call, and perform call summarization.

Collected information may be consumed via one of the following ways:

Modes of operation

Post call analysis can operate in one of the following modes:

Structured data extraction

Use this mode when you want AI Agent to extract specific information from the conversation.

To configure this:

  1. Open the Post Call Analysis configuration screen.
  2. Set Type to 'Extract variables'.
  3. Define one or more variable. For each variable, specify:
    • Name – a unique name.
    • Description – detailed guidance on what data should be captured for this parameter.
    • Type – the expected data type (e.g., string, number, boolean).
  4. Optionally, configure a custom Extract prompt, or leave it empty to use default extraction prompt. If you provide a custom prompt avoid including parameter-specific extraction instructions within it; instead, define those instructions in each parameter’s Description field.

To restrict a variable to a fixed set of allowed values, add an ENUM: directive to its Description, followed by a comma-separated list of the allowed values. The directive must begin a line — the first line or any later one — and its value list ends at the first dot (.) or end of line; the rest of the text is the description used by the LLM. This is supported for variables of type String, Integer, List of strings and List of integers; for the integer-based types the values are converted to integers, and any non-numeric entry is dropped. For example:

ENUM: yes, no
Customer agreed to participate

or, equivalently:

ENUM: yes, no. Customer agreed to participate.

Call summarization

Use this mode when you need a structured or insightful summary of the conversation.

To configure this:

  1. Set Type to 'Summarize conversation'.
  2. Configure the Summarization prompt by specifying the desired structure, key insights, and any important items that should be included in the summary.

Conversation insights

Use this mode when you want to score every conversation on the same well-typed set of measures, so the results stay comparable across calls and can be aggregated. You choose what to measure – for example, the customer's sentiment, whether their request was resolved, or an estimated CSAT.

To configure this:

  1. Set Type to Insights.
  2. Define one or more variable, exactly as for Structured data extraction above. Only Integer, Float, Boolean and String are supported, and a String must be narrowed to an enumeration with an ENUM: directive in its Description. For example, for a sentiment variable:

    ENUM: negative, neutral, positive
    Overall customer sentiment during the call.
  3. Optionally, set a Display name on each variable – a human-friendly label shown in the UI.

  4. Optionally, configure a custom Extract prompt, or leave it empty to use the default.

Collected insight values are reported at the end of every call, and may be viewed or consumed via one of the following ways:

Conversation transcript

Use this mode when you need only a transcript of the conversation, without any summarization or data extraction.

To configure this:

Note: This mode will generate only the call transcript. The same result can also be achieved by configuring the finish webhook, as described in Post call analysis WebHook section.

Add post call analysis to the agent

After creating the post call analysis in the Post call analysis screen, you must assign it to the specific agent. To do this, use the Post call analysis tab in the Agent Configuration screen.

Defining a post call analysis in the Post Call Analysis screen alone is not enough, you must also assign it to the specific agent in the Agent Configuration screen.

You can add multiple post call analysis instances to the same agent. These instances may operate in different modes, for example, one is may perform structured data extraction while another summarizes the call. Alternatively, they may use the same mode but generate different content, for example, a detailed call summary and an executive summary.

You can also reuse the same post call analysis instances across multiple agents.

Post call analysis WebHook

The Post call analysis WebHook uses the following format:

{
    "account_id": ...,          # account ID
    "conversation_id": ...,     # conversation ID
    "agent": ...,               # agent name
    "post_call_analysis": ...,  # post call analysis name
    "start_time": ...,          # conversation start time
    "end_time": ...,            # conversation end time
    "duration ": ...,           # conversation duration
    "conversation_data": {      # conversation data as populated by Live Hub
        "caller": ...           #   calling and called number, as the REST API's
        "callee": ...           #   conversation record carries them
    },                          #   (may be missing for chats)
    "variables ": {},           # conversation variables
    "data": ...                 # extracted post call analysis data
                                #   or plain-text LLM response, if it couldn't be parsed
                                #   or conversation history, if no params are defined
}

The data field is populated based on the selected operation mode:

The status of the WebHook transmission is included in the Post call analysis log entry recorded in the conversation history and displayed in the Logs screen:

Advanced configuration

You may further customize the Post call analysis behavior via the post_call_analysis advanced configuration parameter:

Parameter Type Description
post_call_analysis PostCallAanalysisConfig Configuration of post-call analysis behavior.

PostCallAnalysisConfig

Parameter Type Description
include_logs bool Include logs in the Post call analysis transcript.
timeout int LLM call timeout, in seconds, for the post-call analysis request.
Default: 30
join bool Join data from all Post call analysis instances into a single webhook call. The post_call_analysis field will be removed. And the data field will contain a dictionary of all post call analysis names and their outputs.
last_agent bool Multi-agent topologies use Post call analysis configuration of the main agent, that starts the conversation. Post call analysis configuration of the sub-agents is ignored.
You may change this default behavior at by enabling the last_agent parameter. When enabled, Post call analysis configuration of the last agent – the one that ends the conversation – will be used.
conditions list[str] You may specify logical conditions for running Post call analysis. Use variable names and comparison operators, for example:
user_utterance_count > 1
If multiple conditions are specified they are concatenated using AND Boolean operator. Alternatively, you may include Boolean operators in your conditions, for example:
sex == "male" and age > 18
transcript_format enum Format of the transcript for post-call analysis input.
Supported values:
json
text
Default value:
json for “extract” and “summarize” modes
text for “transcript” mode.
no_user_input enum How to handle NO-USER-INPUT in the transcript.
Supported values:
drop (default)
keep
webhook_headers dict[str, dict[str,str]] Custom headers for webhook calls.
key: post call analysis name
value: dict of header names and values
You may include variables and conversation data, for example, {caller}, in header values.
webhook_content dict[str,str] Custom content for webhook calls.
key: post call analysis name
value: content body
You may include variables, conversation data and {data} element from standard post call analysis webhook content.

If you customize webhook headers or content, make sure to properly quote the provided values.

For example:

{
    "post_call_analysis": {
        "webhook_headers": {
            "my-pca": {
                "api-key": "{apiKey}"
            }
        },
        "webhook_content": {
            "my-pca": "{\"caller\": \"{caller}\", \"transcript\": {data}}"
        }
    }
}