# How we prove a driver

> What "prove" means in Dimension Labs, how the agent tests whether a driver is real, and how to read the result.

Dashboards rank what's loud. Causal analysis finds what's costly.

The most-mentioned issue is not always the one that moves the metric. A complaint can be common and harmless, or rare and expensive. Proving a driver means testing whether the metric is actually different when the issue is present, after accounting for everything else that differs between those customers.

## What the agent does

1. **Defines the outcome.** A renewal, a refund, a one-star review, a predicted CSAT score. One definition, kept for the whole analysis.
2. **Compares like with like.** Customers who raised an issue are compared with similar customers who didn't, so that plan, channel, region or tenure don't masquerade as the cause.
3. **Estimates the effect** with a confidence interval and the number of records behind it.
4. **Tries to break the result.** Checks such as adding a random variable, or re-running on subsets, to see whether the finding holds.
5. **Ranks drivers by effect**, not by volume.

The methods behind this are published in our [research](https://www.dimensionlabs.io/research).


## Reading a result

| You see (example values) | What it means |
|---|---|
| An effect, such as "+12 points in one-star share" | How much the outcome changes when the driver is present |
| A range, such as "8 to 16" | The likely size of the effect. If the range crosses zero, the driver may have no effect. |
| A count, such as "n = 1,240" | How many records support it. Small groups get flagged. |
| The comparison | What it was compared with, and what was held equal |

## When it won't say "causes"

Observational data can't prove everything. The agent says "associated with" rather than "causes" when the groups are too small, when an obvious alternative explanation can't be ruled out, or when the data only covers a short window. It tells you what extra data would settle it.

## Why it needs the join

A driver can only be tested when what customers said and what they did sit in the same place. Conversation themes alone show what's common. Business data alone shows that a metric moved. The test needs both, conversation by conversation: the Dimensions extracted from each conversation, joined to the outcome for that customer. See [Join business data](/data/join-business-data).

The test is only as good as the labels it runs on. For how consistent and accurate those labels are, see [How reliable the labels are](/causal/validation).

## Ask for it

- *"Which contact reasons have the biggest effect on renewal, not just the most volume?"*
- *"Is the drop in CSAT at the Dallas store real, or noise?"*
- *"Did the change we shipped on September 1 move refund requests?"*
- *"Which themes in the open-text answers have the biggest effect on NPS score (column `nps`), controlling for channel?"* If you already have real scores, upload them as a column and use them as the outcome. The open-text answers still need Dimensions first: run a [backfill](/dimensions/backfill).
