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 identifierconversation.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.
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:- Choose when the last message happened. The default is the last 30 days, with presets for 7, 30, or 90 days, or all time.
- Optionally narrow the scope with conversation filters.
- Click Check scope to see how many conversations match, then Start backfill.
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:
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:
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: