> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vorel.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Categories and spam

> Self-learning conversation categories, how corrections teach the classifier, and the email spam gate.

Categories tell you what your conversations are actually about, and they get more accurate as your
team corrects them.

## Your taxonomy

You define the categories. Each one has a name, a description, and two settings:

| Setting                | What it does                                                             |
| ---------------------- | ------------------------------------------------------------------------ |
| **Auto-apply**         | Whether a confident verdict stamps the conversation, or only suggests it |
| **Minimum confidence** | How sure the classifier must be before the verdict counts as applied     |

New categories start suggest-only at 80% confidence, which is the setting you want while a category
has no examples behind it.

Managing the taxonomy is restricted to owners and admins. An agent can categorize a conversation but
cannot reshape the list everyone else works from.

## How classification works

When a conversation starts, its first customer message is compared against the examples your
workspace has accumulated for each category. If a clear majority of the closest examples agree, that
is the verdict, and no model call happens at all.

Only when the examples do not agree does a model get asked, and at most once.

This ordering matters for cost. A workspace with a well-taught taxonomy classifies almost everything
without a model call.

## Suggested versus applied

A verdict below your confidence threshold, or in a category that is not set to auto-apply, is still
recorded. It renders as a hollow chip with the confidence in a tooltip.

Only an applied verdict is acted on downstream by [routing](/inbox/routing) or the spam gate. A
suggestion is information, not a decision.

## Teaching it

Four things your team does in the normal course of work become training examples:

| Action                                       | What it teaches                            |
| -------------------------------------------- | ------------------------------------------ |
| Applying a label that matches a category key | That conversation belongs to that category |
| Marking as spam                              | An example of spam                         |
| Confirming a suggested chip                  | Confirmation of a correct verdict          |
| Correcting a wrong chip                      | An example of the correct category         |

A correction writes a positive example for the right category. It does not write a negative example
for the wrong one, and it does not delete the example that caused the mistake. Teaching what
something *is* generalises. Teaching what it *is not* mostly adds noise.

Applying a label teaches without stamping. A label is a hint about what a category should be, not a
declaration that this conversation is now categorized.

Each category keeps its most recent 500 examples, so a workspace whose language drifts over a year
is classified on how it talks now.

## Deleting a category

A category with examples behind it refuses to delete, because deleting it throws away everything
your team taught it. Remove the examples first if you genuinely mean it.

## The email spam gate

On email only, an applied `spam` or `irrelevant` verdict stops the agent completely. The message is
stored, categorized and visible in your inbox, and no reply is sent. Not a fallback, not an
acknowledgement. Silence.

This is limited to email on purpose. On WhatsApp, voice and web chat a wrong spam verdict means
ignoring a real customer mid-conversation, so those channels categorize without gating.

## Where categories show up

* **Inbox filters**, so you can work one category at a time
* **[Routing](/inbox/routing)**, so a category can assign a conversation or change who gets paged
* **Reporting**, so you can see what your volume actually consists of
* **A `conversation.categorized` event**, available as a [webhook](/integrations/webhooks) and as a
  [trigger source](/automation/triggers)
