Skip to main content
ServiceLens, which includes conversation attributes, is currently in beta and available per project. Contact support@botbrains.io to turn it on for your project.
Conversation attributes add structured fields to every conversation, such as the product a customer asks about, whether they asked for a refund, or how frustrated they are. People set them by hand, integrations set them through the API, or AI fills them from the transcript. Unlike free-form labels, each attribute has a type and defined values, so you can filter conversations by it, combine attributes into scorecards, and flag conversations with monitors. You manage them on the conversation attributes page.

Attribute Types

Click New attribute and choose Create your own or a template. Each attribute has a label, a type, a key, and an optional description. The key forms the identifier conversation.attributes.<key>. You can’t change the key or the type after you create the attribute. Levels. For the AI to fill a number, add 2 to 10 levels in increasing or decreasing order, each with an optional label and description. An integer gets the most likely level, a decimal the probability-weighted average. Keys. A key uses lowercase letters, digits, and underscores, starts with a letter, and must be unique in the project. You can’t use built-in names such as topic or status, or other reserved names such as labels, size, or first. Template keys such as sentiment belong to their templates, so install the template instead. A deleted attribute’s key becomes free once botBrains has removed its values. Deleting. You can’t delete an attribute while a scorecard, a selection, or a monitor uses it. Deleting removes its values from all conversations.

How AI Fills Attributes

The fill mode decides who sets the value and when. Prompt. Tell the AI what to decide in up to 256 characters, such as “Did the customer ask for a refund?” The AI also reads the label, the description, and the option descriptions, so describe each option clearly. Selection. Under Fill only for conversations matching, limit the attribute to a segment such as voice calls or Zendesk tickets. Leave it empty to fill every conversation. A selection can use other AI attributes that fill earlier (before every reply, then after the conversation, then on demand), but no scorecards. Test before saving. Click Run test to let the AI fill the attribute for the five most recent matching conversations. You see each value with its confidence, and botBrains stores nothing. Before every reply. The AI fills these attributes after triggers run, so triggers still see the previous values. Each fill adds a little latency. If it fails or takes longer than 4 seconds, the AI agent replies without the new value, and the AI fills it later. Voice calls get these values after the call instead. Values set by hand. The AI never overwrites a value that a person set or cleared. Only a backfill with Overwrite values set by people switched on replaces it. The AI skips hidden conversations and conversations without a customer message. Attribute editor showing the fill mode options, the prompt, the selection filter and test results with values and confidence for five recent conversations
A project can have up to 200 attributes. Together, its AI-filled attributes can ask at most 150 questions per conversation, and at most 20 before every reply. A yes/no, single select, or number attribute asks one question, and a multi select asks one per option.

Templates and Built-in Attributes

Templates add ready-made AI attributes, such as sentiment or the CX Score, with prompts that botBrains maintains. Click New attribute and pick a template. On a managed attribute, you can change the label, the fill mode, the selection, and the Use in templates switch, but not the prompt or the options. Templates fill new conversations automatically. Run a backfill to fill existing ones. Built-in attributes appear under Default and expose data every conversation already has. You can’t edit their definitions or insert them with Liquid, but scorecards can score Status, Topic, and CSAT Rating.

Backfill Existing Conversations

AI attributes fill new conversations on their own. To fill conversations from before you created the attribute, or an on-demand attribute, open it and click Backfill:
  1. Choose when the last message happened. The default is the last 30 days, with presets for 7, 30, or 90 days, or all time.
  2. Optionally narrow the scope with conversation filters.
  3. Click Check scope to see how many conversations match, then Start backfill.
The backfill skips hidden conversations and conversations outside the attribute’s selection. It works newest first, covers up to 10,000 conversations per run, and each attribute runs one backfill at a time. It re-evaluates every conversation in scope, including ones that already have an AI value. Values that people set or cleared stay unless you switch on Overwrite values set by people. You can’t backfill manual attributes. To refill a single conversation, click Re-evaluate in the Attributes section of its details panel. It keeps values set by hand.

Values on a Conversation

Open any conversation to see the Attributes and Scorecards sections in its details panel. Built-in attributes don’t appear there. Edit a value in place or clear it. Hover the icon next to a value to see where it came from: Conversation details panel with the Attributes section showing AI-filled values with confidence icons and a value set by hand, and the Scorecards section with a score pill

Where You Use Attributes

Filter by Attributes

A conversation must match every operator you set on an attribute, and any one value within an operator. neq, nin, and ncontains also match conversations without a value. The conversation list keeps the conditions as JSON in the attributes URL parameter, so you can share a filtered view:
In the query string, the conversations API accepts attributes[<key>]=<value>, which you can repeat and which means in, and attributes[<key>][<operator>]=<value>. In a JSON request body, such as an export, send the conditions under attributes. Every operator takes a list of values as text, except exists, which takes true or false:

Permissions

To create, test, backfill, or delete attributes, you need a role that can edit them, such as Project Contributor. Project Members can set values and re-evaluate conversations. See Permissions for every role.