Skip to main content

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
  • save a search rule as an Expression transcript tag so every new call is tagged automatically

To use Expression mode, open Speech Insights -> Search: Index Name, open the Search Form section, and choose Expression as the search mode. Click Expression syntax tips to see a short syntax summary and the custom metadata and indicator fields that are available for the index.

A full syntax reference with examples is also available at Speech Insights -> Expression Search. That page needs the Manage Speech Insights Settings permission, which the Speech Insights Export feature adds.

Results are sorted by most recent call first. To rank by search match instead, open Result Sorting and choose Relevance in Sort by.

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:

  • AND
  • OR
  • NOT
  • 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:agent
  • speaker: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 point
  • before:<time> = phrase starts before this point
  • window:<from>..<to> = phrase starts inside a time window
  • start:<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 = seconds
  • w = 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​

  1. Enter an expression such as:

    speaker:customer refund
  2. Use Add Filter and choose a custom field such as Department

  3. Set the operator to Equals

  4. 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​

  1. Enter an expression such as:

    speaker:customer "cancel my account"
  2. 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.

  1. Open Add Filter
  2. Pick the field you want, such as Department, Region, or another index-specific field
  3. Choose an operator such as Equals, Contains, Starts With, Greater than, or Advanced Search
  4. Enter the value to match

This creates a structured metadata filter that is combined with the expression query.

Example: expression plus an indicator filter​

  1. Enter an expression such as:

    near("late fee", refund, 5w)
  2. Use Add Indicator Filter

  3. Choose the relevant indicator for the current index

  4. 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:

  1. Indicators = a simple built-in filter that checks whether any selected indicator is present on the call
  2. 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​

  1. Field filters apply to the next clause:

    speaker:customer (refund OR "close account")
  2. Use parentheses when a speaker or timing scope should cover more than one term:

    after:100s (apple OR orange OR banana)
  3. Use quoted phrases when word order matters:

    "close account"
  4. Use tag: or category: as transcript-level filters that combine with the rest of the search:

    tag:"Escalation" speaker:customer refund
  5. Use near(...), before(...), and after(...) 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.

Section 11: Use an expression as a transcript tag​

When an expression finds the calls you want, you can save it as a tag so WinnerWare applies it to every new call:

  1. Go to Speech Insights -> Transcript Tags and click Add Tag.
  2. Set Type to Expression.
  3. Enter the expression in the Expression field. The editor shows a short syntax summary.
  4. Optionally limit the tag with Clients, Ingestion sources, dates, Dispositions, Queues, or Agents.
  5. Save. An expression with a syntax error cannot be saved, and WinnerWare shows the error.

Expression tags are matched inside WinnerWare with the same rules as Expression search. They do not use AI, so they cost nothing to run.

Keep these points in mind:

  • The tag checks only the call text and timing. Search-form filters such as Add Filter are not part of a tag. Use the tag's own filter fields instead.
  • tag: inside an expression tag can refer to tags already on the call and to keyword or expression tags matched earlier in the same pass. Semantics tags are classified after expression tags, so on a new call a tag: reference to a semantics tag does not match yet.
  • Test the tag with Evaluate against existing transcripts while it is inactive, then turn on Active?.
  • To apply the tag to calls that were already processed, use Speech Insights Retro Processing.

See Speech Insights for every tag option.