Speech Insights Expression Search
Speech Insights Expression mode uses a purpose-built search syntax for speech analytics users. It supports plain transcript terms, quoted phrases, explicit boolean logic, scoped speech filters, and advanced speech operators when transcript timing or ordering matters.
When to use expression mode
Use Expression mode when you want to:
- combine multiple concepts in one search
- require or exclude exact transcript wording
- scope a match to the agent or the customer
- limit a match to a specific time window in the call
- find wording that occurs after a measurable pause
- require transcript tags alongside transcript text
- use advanced proximity or ordering checks
Section 1: Basic transcript text
Plain words are treated as transcript terms.
billing refund
That search requires both billing and refund.
Use double quotes for an exact phrase:
"cancel my account"
Section 2: Boolean logic
Expression mode supports:
ANDORNOT- parentheses for grouping
Examples:
billing AND refund
cancel OR "close account"
billing NOT "test call"
(cancel OR discontinue) AND "account number"
Spaces between terms still behave like AND, so this is also valid:
billing refund
Section 3: Speech filters
Speech filters apply to the next term, quoted phrase, grouped clause, or advanced speech operator.
Speaker filter
Use speaker: to scope wording to one side of the conversation.
speaker:agent "thank you for calling"
speaker:customer (cancel OR refund)
speaker:customer after:100s (apple OR orange OR banana)
Supported values:
speaker:agentspeaker:customer
Call-position filters
Use timing filters when the transcript hit must happen at a certain point in the call.
after:100s refund
before:120s "thank you for calling"
window:45s..120s "payment failed"
start:30s "thank you for calling"
Supported timing filters:
after:<time>= phrase starts after this pointbefore:<time>= phrase starts before this pointwindow:<from>..<to>= phrase starts inside a time windowstart:<time>= shorthand for “within the opening portion of the call”
Pause filter
Use pause: to require that the matching phrase occurs after a measurable silence.
pause:2s..8s "let me check"
pause:5s..20s speaker:agent "thank you for waiting"
Tag and category filter
Use tag: when the call must already have a transcript tag. category: is accepted as a friendly alias for the same transcript-tag lookup when that wording fits your rollout better.
tag:"Escalation"
category:"Compliance Review"
tag:"Escalation" speaker:customer refund
Section 4: Time units
Distance and timing filters support:
s= secondsw= approximate words- no suffix = words
Examples:
after:100s refund
window:45s..120s "payment failed"
pause:2s..8s "let me check"
Section 5: Expression mode plus the rest of the search form
Expression mode does not replace the existing structured filters in the Speech Insights UI. The expression query is combined with the rest of the search form using AND logic.
That means you can write an expression and also use:
- Tags
- Sites
- Clients
- Dispositions
- Queues
- Agents
- Indicators
- silence and call-time filters
- Add Filter custom metadata fields
- Add Indicator Filter indicator values
Main built-in filter fields
These are the main built-in fields already present in the Speech Insights search form:
- From / To
- Tags
- Sites
- Clients
- Dispositions
- Queues
- Agents
- Indicators
- Total Silence
- Longest Silence
- Talk Time
- Hold Time
- After Call Work Time
Use those directly from the standard search form controls. They are not typed into the expression text box; instead, they are combined with the expression using AND logic when the search runs.
Example: expression plus a custom metadata filter
-
Enter an expression such as:
speaker:customer refund -
Use Add Filter and choose a custom field such as
Department -
Set the operator to
Equals -
Enter a value such as
Billing
This returns calls where the customer mentioned refund and the indexed custom field Department equals Billing.
Example: expression plus a built-in indicator filter
-
Enter an expression such as:
speaker:customer "cancel my account" -
In the main Indicators filter, select one or more indicators from the active index
This returns calls where the expression matches and at least one of the selected indicators is present in the extracted indicator data for that call.
How to use custom metadata fields
Custom metadata fields come from the current index definition and appear in the Add Filter menu.
- Open Add Filter
- Pick the field you want, such as
Department,Region, or another index-specific field - Choose an operator such as
Equals,Contains,Starts With,Greater than, orAdvanced Search - Enter the value to match
This creates a structured metadata filter that is combined with the expression query.
Example: expression plus an indicator filter
-
Enter an expression such as:
near("late fee", refund, 5w) -
Use Add Indicator Filter
-
Choose the relevant indicator for the current index
-
Set the operator and value you need
This returns calls where the expression matches and the selected indicator condition also matches.
How to use indicators
There are two indicator filtering paths in the UI:
- Indicators = a simple built-in filter that checks whether any selected indicator is present on the call
- Add Indicator Filter = an advanced filter that checks a selected indicator with an operator and value
Use the built-in Indicators selector when you only need to narrow results to calls that contain certain indicators at all. Use Add Indicator Filter when you need value-level matching, such as specific extracted terms or advanced operators.
Finding available fields
The UI shows the current built-in filter fields, available custom metadata fields, and available indicator fields for the active index inside the Expression syntax tips panel. The same index-specific field lists also drive the Add Filter and Add Indicator Filter menus.
Section 6: Advanced speech operators
For advanced speech analysis, Expression mode still supports dedicated operators:
near(left, right[, distance])before(left, right[, distance])after(left, right[, distance])
These operators are best when the relationship between phrases matters, not just whether they exist in the same transcript.
Examples:
near("late fee", refund, 5w)
before("card number", "expiration date", 8w)
after("supervisor", "transfer me", 10w)
speaker:customer near("late fee", refund, 5w)
Section 7: Common speech analytics patterns
Simple examples
Use these when you want a fast starting point:
refund
"cancel my account"
refund AND billing
refund NOT "test call"
speaker:customer refund
tag:"Escalation"
Intermediate examples
These combine one or two scopes with transcript logic:
speaker:agent "thank you for calling"
start:30s "thank you for calling"
window:45s..120s "payment failed"
pause:2s..8s "let me check"
near("late fee", refund, 5w)
tag:"Escalation" speaker:customer supervisor
Customer says one of several terms after 100 seconds
speaker:customer after:100s (apple OR orange OR banana)
Calls tagged for escalation where the customer asks for a supervisor early
tag:"Escalation" speaker:customer window:0s..120s supervisor
Agent greeting in the opening script
speaker:agent start:20s "thank you for calling"
Phrase said after a noticeable pause
speaker:agent pause:3s..15s "let me check"
Late-fee language near a refund request
near("late fee", refund, 5w)
Section 8: Complex example usage
The examples below show how to compose several parts of the syntax into analyst-style searches.
Complex example 1: escalation after a long pause
tag:"Escalation" speaker:customer pause:3s..15s ("supervisor" OR "manager")
Use this when you want calls already tagged for escalation where the customer asks for a supervisor or manager after a noticeable pause.
Complex example 2: opening script followed by a customer objection
speaker:agent start:20s "thank you for calling" AND speaker:customer after:20s ("cancel" OR "refund")
Use this when you want calls where the standard greeting happened early and a cancellation or refund request followed later.
Complex example 3: exact phrase ordering with distance control
speaker:agent before("card number", "expiration date", 8w)
Use this when the ordering matters and you want the phrase pair to be spoken by the agent side of the conversation.
Complex example 4: alternative customer intents inside a time window
speaker:customer window:60s..240s (refund OR dispute OR "late fee")
Use this when you want multiple intent variants, but only during the middle portion of a call.
Complex example 5: tag plus proximity plus timing
tag:"Compliance Review" AND after:120s near("social security", "account number", 12w)
Use this when the call must already be tagged for compliance review and the sensitive phrases need to occur near each other after the first two minutes.
Complex example 6: combining grouped logic on both sides of the call
(speaker:customer ("cancel" OR "close account")) AND (speaker:agent ("retention" OR "discount"))
Use this when you want to find calls where the customer expresses a cancellation intent and the agent responds with a retention-style phrase anywhere in the same call.
Section 9: Syntax rules and scoping tips
-
Field filters apply to the next clause:
speaker:customer (refund OR "close account") -
Use parentheses when a speaker or timing scope should cover more than one term:
after:100s (apple OR orange OR banana) -
Use quoted phrases when word order matters:
"close account" -
Use
tag:orcategory:as transcript-level filters that combine with the rest of the search:tag:"Escalation" speaker:customer refund -
Use
near(...),before(...), andafter(...)when transcript ordering or phrase proximity matters.
Section 10: Relationship to the other search modes
- Keyword search is best for quick word and filter lookups.
- Semantic search is best for concept matching.
- Expression search is best for explicit transcript structure, timing rules, and analyst-grade speech searches.