Skip to content
04

Dimensions

What a Dimension is

Dimensions are the typed fields Dimension Labs extracts from every conversation. What they are, the types, and how to read them.

  1. 01What a Dimension is
  2. 02Standard Dimensions
  3. 03When enrichment runs
  4. 04Backfill
  5. 05Going further

A Dimension is a structured field extracted from a conversation. Sentiment is one question you can ask of text. Dimensions let you ask many: why did this customer get in touch, did they mention a competitor, how much effort did it take, what would they rate it, what exactly did they say about the delivery.

enrichment · one record
Raw text

We're running a 60-day parallel evaluation of another vendor before we sign the renewal. Honestly, we were promised SSO in Q2 and it still isn't here, and this ticket has been open for three weeks.

Support ticket · enterprise account · ARR joined
Dimensions written to the record
  • Competitor Mentionedyes · evaluation underway
  • Churn & Cancellation Riskhigh
  • Lifecycle Stagerenewal
  • Urgency & Deadline60 days
  • Expectation Gaproadmap promise missed
  • Feature RequestSSO
  • Resolution Statusopen · 3 weeks

Each colour links a phrase in the raw text to the Dimensions extracted from it. Hover either side.

You probably know sentiment analysis, which sorts text into positive, negative and neutral. Think of it as one simple research question asked of every conversation:

  • Question: What is the tone of the conversation?
  • Answer: positive, negative or neutral

Asked across thousands of conversations, the answers add up to a share, which is how sentiment is usually reported. For example, a finding could read “X% of support conversations in March had a negative tone.”

A Dimension works the same way, but the question can be anything the text can answer. Because a language model reads the conversation, you classify with a prompt instead of training a machine learning model.

  • Question: What was the outcome of the conversation?
  • Answer: complete, escalated or abandoned

Across thousands of support conversations, the share of escalations becomes clear. For example: “X% of live chat support conversations in June were escalated to a manager.”

Sentiment tells you the tone of an interaction. Dimensions can also tell you what happened, why it happened, and what to do about it.

KindExample DimensionThe question it asksWhat it’s good for
AnnotationProductsWhich products were mentioned?Finding the products, services or features behind the most contacts
ScoringPredicted RatingHow would the customer rate this interaction from 1 to 10?A satisfaction signal on every conversation, without a survey. See Predicted scores.
SummarizationPredicted FeedbackHow would the customer describe this conversation?Seeing the service from the customer’s side, and the gap between your metrics and their experience
RecommendationPredicted SolutionWhat could be done to resolve this issue next time?A running list of fixes drawn from real conversations

Keyword searches, trained models and fixed segmentations all decide the categories in advance. A Dimension doesn’t have to. It can generate a label from what the conversation says, so themes you didn’t plan for still show up.

  • Reason: what is the reason the customer reached out to support?
  • Category: what is the overall theme of the conversation?

Labels written this way are called dynamic labels, for example order tracking inquiry or refund request.

Some Dimensions come in pairs: a detailed answer and a cluster that groups similar answers. Reason and Category work like this, and so do Predicted Solution and Solution Cluster:

  • Predicted Solution: what is the potential resolution to the customer’s issue?
  • Solution Cluster: what are the themes across those resolutions?

The pair gives you two levels of analysis: the cluster to count, the detailed answer to read. You can also ask the agent to group dynamic labels into themes for you.

  1. A prompt defines a set of Dimensions: a name, instructions, and for each Dimension its type and allowed values.
  2. Enrichment reads each conversation in full (all the messages that share a sessionId; see Sessions and conversations) and fills in every Dimension of the prompt.
  3. The results land in a table named after the prompt, one row per conversation, one column per Dimension.
Prompt support_reasons
  • reasoncategorybilling, delivery, product_quality, none_detected
  • competitorfree texta name, or none_detected
  • effortinteger1 to 5
  • refund_askedbooleantrue, false
Table: support_reasons
sessionreasoncompetitoreffortrefund_asked conv-1001deliverynone_detected4true conv-1002billingnone_detected2false conv-1003product_qualityAcme Beans3false
One row per session, one column per Dimension. Names and values are examples.

Dimensions are read from the conversation’s text only. The model doesn’t see your extra columns (rating, region, plan). Those are already structured, so you join them in afterwards.

For the ideas behind this, see How enrichment works.

There are two kinds, and the platform uses its own names for each:

Standard DimensionsCustom Dimensions
Called in the platformSystem PromptsCustom Prompts, or Prompts
Where to find themThe Prompts tabThe Prompts tab, once saved
Who defines themDimension LabsYou, or Dimension Labs with you
CoversGeneral questions that work on most text: Reason, Category, Predicted Rating, Summary and moreThe signals specific to your business, in your own terms
When they runEvery day only if Dimension Labs turns on daily enrichment for your workspace; otherwise by backfillEvery day on live integrations they’re applied to; by backfill on uploads and history
Level of analysisSession and sectionSession
PageStandard DimensionsDesign custom Dimensions

Start with the standard set for a baseline, then add custom prompts to go deeper where it matters.

Every Dimension has one of five output types. The same names are used on every page; the JSON for each is on the config reference.

Output typeUse forExample values
Fixed categoryClassifying into a list you definebilling, delivery, product_quality, none_detected
Dynamic labelShort labels the model writes from the text, with no listorder tracking inquiry
Verbatim quoteThe customer’s exact words on a topic"the app logged me out twice"
ScoreA whole number on a defined scale1 to 5
BooleanPresent or nottrue, false

Decimal numbers aren’t supported. Use a whole-number scale instead.

  • none_detected means the model read the conversation and found nothing for that Dimension. It’s an answer: “this customer didn’t mention a competitor”.
  • An empty value means nothing came back for that conversation. For a score, an empty value is the right answer when there isn’t enough signal: see Predicted scores.

Count them separately. A Dimension that is mostly none_detected isn’t broken: a signal that appears in 5% of conversations can be the most important one you have.

  • Everything is stored as text, including scores and booleans. Ask the agent to treat a score as a number when you want an average.
  • The model can occasionally return a value outside the list you defined, or a spelling variant (none detected with a space). The agent can group these, and a cluster of unexpected values is sometimes a real signal worth a look.