How-to

Keyword filter

Silently drop specific words or phrases while the bot is speaking — "hmm", "okay", "hello" — so they don't trigger an interruption.

When the bot is mid-sentence and background chatter or a polite “okay” reaches the mic, the pipeline normally treats it as a potential turn-start. The keyword filter drops specified tokens before they become interruptions. It is a surgical complement to min_words — use it for exact words you know are noise.

Prerequisites

  • A template with configurations — see Flow nodes.
  • Understanding of how interruptions work — see Interruption control.
  • A list of specific words or short phrases you want to suppress.

Config fields

FieldTypeAllowed valuesDefaultBehaviour
enabledbooltrue, falsefalseMaster switch. false means no filtering even if keywords is populated.
keywordsstring[]any words or phrases[]List to suppress. Matching is case-insensitive, leading/trailing whitespace is trimmed.
match_typeenum"exact", "includes""exact"exact: the entire transcription must equal the keyword. includes: the transcription may contain the keyword.

Minimal config

template-keyword-filter.json
json
{
  "configurations": {
    "keyword_filter": {
      "enabled": true,
      "keywords": ["hmm", "okay", "hello", "yeah"],
      "match_type": "exact"
    }
  }
}

With this config, the user saying “okay” while the bot is speaking is dropped. The user saying “okay, what’s my balance” is not dropped in exact mode — switch to includes if you want to catch embedded keywords.

When the filter runs

The filter only engages while the bot is actively speaking — specifically between the BotStartedSpeaking and BotStoppedSpeaking frames. When the bot is idle, every transcription passes through normally. This preserves responsiveness: if the user initiates a turn with “okay, help me with…” while the bot is silent, nothing is filtered.

Edge cases

  • Silent drop — Matching frames are discarded before they reach the interruption logic. No frame is pushed downstream; the LLM never sees them.
  • Exact vs. includes — In exact mode, keyword "okay" drops "okay" but not "okay sure". In includes mode, both are dropped. Use includes sparingly — it is aggressive and can swallow meaningful turns.
  • Case and whitespace — Matching is case-insensitive and whitespace-trimmed. " OK " matches "ok".
  • Interacts with min_words — Filtered frames are dropped before interruption logic runs, so they never count toward min_words either. The filter is the strictest layer.

Don't filter words the bot needs to hear

If the conversation has a node where the user is expected to say “yes” or “no”, ensure those words are not in your keyword list. The filter is global across nodes — it does not auto-disable on answer-prompting nodes.

Next steps

Was this helpful?