Agent Capabilities

Message Tagging

Automatically detect and respond to specific types of user messages using AI-powered semantic matching

| View as Markdown
Hunter Hodnett
Hunter Hodnett CPTO at Chipp
| 1 min read
# tags # automation # safety # routing # tutorials

Message tags are one of the most powerful features in Chipp. They let you automatically detect specific types of messages and take action—whether that’s routing to a human, blocking harmful content, or tracking purchase intent.

What Can You Do with Tags?

Tags unlock a wide range of automation possibilities. Here are just a few:

🏷️ What Can You Do with Tags?

How Tag Detection Works

Unlike simple keyword matching, Chipp uses semantic similarity to understand the meaning behind messages. This means your tags will catch variations and paraphrases you never explicitly defined.

🔍

See Tag Detection in Action

Type a message and see which tags would be detected based on semantic similarity.

Similarity Threshold
Tags configured in this demo
Human Needed Refund Request Complaint

Demo uses pre-computed results for illustration

Why Semantic Matching Matters

Traditional keyword-based systems require you to anticipate every possible way someone might phrase a request. With semantic matching:

  • “I want to talk to a human” matches “Can I speak with a real person?”
  • “What’s the price?” matches “How much does this cost?”
  • “I’m frustrated” matches “This is really annoying”

You define a few example phrases, and the AI understands the underlying intent.

Getting Started

Ready to set up your first tag? Follow this step-by-step guide:

1
Navigate to your app's Build tab

Open the app where you want to configure message tags.

2
Open the Tags panel

Click on "Tags" in the setup section to manage your tag definitions.

3
Define your tags

Create tags with names and descriptions. The AI uses descriptions to determine when to apply each tag.

4
Test with real conversations

Chat with your app and verify tags are applied correctly. Adjust descriptions as needed.

Tag Configuration Options

Each tag has several settings you can customize:

Tag Name

Give your tag a clear, descriptive name. You’ll see this in your analytics and when reviewing chat history, so make it easy to understand at a glance.

Good names: “Human Escalation”, “Pricing Question”, “Complaint” Bad names: “Tag 1”, “Important”, “Check”

Example Phrases

Add 3-5 phrases that represent the type of message you want to detect. The AI uses these to understand the semantic meaning, so focus on variety:

plaintext
Good examples for "Human Needed":
- "I need to talk to a human"
- "Can I speak with a real person?"
- "Connect me to support"
- "I want to talk to someone"

Less effective (too similar):
- "Talk to human"
- "Speak to human"
- "Human please"
- "Get me a human"

Detection Sensitivity

The sensitivity slider controls how closely a message must match your examples to trigger the tag:

SensitivityBest ForTrade-off
Low (50-65%)Catching all possible variationsMore false positives
Medium (70-80%)Balanced detectionGood starting point
High (85-95%)Precise matching onlyMay miss variations

Tip: Start at 75% and adjust based on what you see in your chat history.

Blocking Response (Optional)

For safety or compliance tags, you can replace the AI’s response entirely when a tag is detected. This is useful for:

  • Harmful content: Block and provide a polite refusal
  • Off-topic requests: Redirect to your app’s purpose
  • Sensitive topics: Provide specific guidance or disclaimers

When you add a blocking response, the AI won’t generate anything—your exact text will be shown instead.

Best Practices

Start Small

Begin with 2-3 high-value tags rather than trying to cover every scenario. You can always add more as you learn what your users are asking.

Review Matches Regularly

Check your tag matches in the chat history to spot false positives and missed detections. This helps you tune your sensitivity and add better example phrases.

Use Specific Examples

The more specific and varied your example phrases, the better the detection. Generic phrases lead to more false positives.

Don’t Over-Block

Only use blocking responses when absolutely necessary. For most tags, it’s better to let the AI respond naturally while you track the conversation.

Common Tag Configurations

Here are some popular tag setups to get you started:

Customer Support Bot

TagPurposeBlocking?
Human NeededRoute frustrated users to supportNo
Refund RequestFlag for manual reviewNo
Positive FeedbackTrack happy customersNo

Sales Assistant

TagPurposeBlocking?
Purchase IntentIdentify hot leadsNo
Pricing QuestionTrack interestNo
Competitor MentionMonitor positioningNo

Knowledge Base

TagPurposeBlocking?
Off-TopicRedirect to purposeYes
Complex QuestionFlag for follow-upNo
FeedbackCollect suggestionsNo

Viewing Tag Analytics

Once your tags are active, you can see them in action:

  1. Chat History: Each message shows any tags that were detected
  2. Tag Detail View: Click on a tag to see all matches, sorted by recency
  3. Remove False Positives: Click the X on any incorrectly tagged message to improve future detection

Advanced Tips

Combine with Custom Actions

Use tags as triggers for more complex workflows. When a tag is detected, you could:

  • Send a notification to Slack
  • Create a ticket in your CRM
  • Update a spreadsheet
  • Trigger an email

Multiple Tags per Message

A single message can trigger multiple tags. For example, “I want a refund and need to speak to someone” might trigger both “Refund Request” and “Human Needed.”

Tag Categories

Organize related tags with consistent naming prefixes:

  • Support: Human Needed
  • Support: Complaint
  • Sales: Pricing Question
  • Sales: Demo Request

Negative Examples: Teaching Tags What NOT to Match

By default, tags learn only from positive examples — phrases that should trigger. For most use cases this works well, but when your tag guards a hard compliance boundary (like “block external data comparisons” or “prevent off-label claims”), a legitimate message can look almost identical to a prohibited one.

When to Use Negative Examples

Negative examples are most valuable in three scenarios:

  1. Semantic Overlap: Your positive examples (“Compare our rate to published literature”) are semantically very similar to legitimate messages (“Compare our rate across patient subgroups”). Raising the sensitivity threshold alone can’t separate them.
  2. Compliance Boundaries: Tags that guard strict regulatory or safety rules where false negatives (missing a prohibited intent) are worse than false positives, but missed legitimate uses break user experience.
  3. Calibration Precision: You’ve tuned a tag with “Test a message” (see below) and consistently see one type of false positive that thresholds can’t filter.

How Negative Examples Work

Chipp’s semantic matching computes cosine similarity between an incoming message and all your tag’s examples—both positive and negative. A message triggers the tag if its best match (highest similarity to any example) beats the configured threshold.

Key insight: Negative examples compete directly against positive examples in the same semantic space. When a message is semantically close to both a positive and a negative example, the tag resolves toward whichever example it’s more similar to. This is why a couple of well-chosen negatives can improve precision where thresholds alone cannot.

Guardrail: If a message is equally similar to a positive and negative example (a tie), the tag triggers — fail-safe behavior. When in doubt, block.

Example: Pharma Compliance Boundary

A tag needs to block external/published-literature comparisons (“What is our rate compared to the published literature?”) while allowing legitimate cohort analyses:

Positive examples (must trigger):

  • “How does our rate compare to published literature?”
  • “What does the literature say about this rate?”
  • “How do we stack up against industry benchmarks?”

Negative examples (must NOT trigger):

  • “How does our rate differ across patient subgroups?”
  • “Compare our rate between males and females in the cohort”
  • “What’s the misdiagnosis rate in our patient population?”

With the negatives in place, the classifier learns that “compare … to literature/benchmarks/external” is the true signal, not comparison in general. Testing revealed that this fixture (6 prompts at 0.33 and 0.5 sensitivity thresholds) achieves clean separation only with negatives—thresholds alone catch either all positives and all negatives, or none of either.

Creating and Managing Negative Examples

  1. Open the tag editor and scroll to “NEGATIVE EXAMPLES · MUST NOT TRIGGER”
  2. Add 2-5 phrases that are similar to your positives but must never trigger
  3. Focus on the specific semantic boundary you’re guarding (e.g., “external comparisons” vs. “within-cohort comparisons”)
  4. Use “Test a message” (below) to validate that your negatives actually prevent false positives
  5. If separability still isn’t clean, add more negatives targeting the boundary, or split into more specific tags

Calibrating Tags with “Test a Message”

The “Test a message” panel in the tag editor lets you score any message against the tag in real-time, showing:

  • Match score: Numeric similarity (0-1) to the closest example
  • Threshold: Your configured sensitivity level
  • Would trigger: Boolean outcome for this message

This is invaluable for calibration:

  • Draft your positives and negatives, then test real prompts from your chat history
  • If a legitimate message is scoring too high (near the threshold), add a negative example close to it
  • If a prohibited message is scoring too low (missing true positives), refine your positive examples for more specificity
  • Iterate until you see clean separation between intended positives and negatives

The test does not generate a response, mutate conversation state, or create a permanent record—it’s purely diagnostic.

Troubleshooting

Tags Aren’t Detecting Anything

  • Lower your sensitivity threshold
  • Add more varied example phrases
  • Check that the tag is enabled

Too Many False Positives

  • Raise your sensitivity threshold
  • Make example phrases more specific
  • Remove overly generic examples

Tags Detecting the Wrong Things

  • Review your example phrases for unintended patterns
  • Use negative examples — See the “Negative Examples” section above. This is especially effective for hard compliance boundaries where legitimate messages are semantically similar to prohibited ones.
  • Test before deploying — Use “Test a message” (see “Calibrating Tags” above) to validate your positive/negative/threshold combination against real prompts before enabling the tag live.
  • Raise your sensitivity threshold if you’re getting false positives on completely unrelated topics
  • Consider splitting into more specific tags if you have multiple distinct intents

Next Steps

Now that you understand message tagging, try setting up your first tag:

  1. Think about what user messages you most want to detect
  2. Create a tag with 3-5 good example phrases
  3. Start at 75% sensitivity
  4. Monitor your chat history for a few days
  5. Tune based on what you observe

Tags become more valuable over time as you refine them based on real user interactions. Start simple, iterate often, and you’ll build a powerful automation layer for your AI app.

Using with MCP

You can manage tags programmatically using the Chipp MCP Server, including AI-powered utterance generation.

Available Tools

ToolDescription
list_tagsList all tags for an app
create_tagCreate a new tag with utterances and actions
update_tagUpdate tag name, utterances, or actions
delete_tagRemove a tag
list_tag_instancesView messages that matched a tag
remove_tag_instanceRemove a false positive match
generate_utterancesAI-generate training phrases for a tag

Example Prompts

plaintext
"Create a tag called 'pricing_intent' for my sales bot"
"Generate 200 utterances for detecting refund requests"
"Show messages that matched the 'human_needed' tag"
"Remove the false positive from tag instance xyz"

Workflow: AI-Powered Tag Training

plaintext
You: Create a tag for detecting pricing questions in my B2B sales bot

AI: [Calls create_tag]
Created tag "pricing_intent". Would you like me to generate
training utterances?

You: Yes, generate 200 varied examples for B2B software pricing

AI: [Calls generate_utterances with count=200, domain="B2B software"]
Generated 200 utterances including:
- "How much does your enterprise plan cost?"
- "What's the pricing for 100 users?"
- "Do you offer volume discounts?"
- "Is there a free trial available?"
...

Saved to tag "pricing_intent". The tag is now active.
ℹ️

MCP server access requires a Builder plan or higher. See the MCP Setup Guide to get started.