> For the complete documentation index, see [llms.txt](https://docs.rootcause.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.rootcause.ai/user-guide/causal-graph.md).

# Build Causal Graph

When you build a Digital Twin with the **Discover & train** action, RootCause runs causal discovery across all the variables in your 360 Table. The output is a **causal graph** — a directed map of cause and effect relationships in your data.

The graph answers a different question from standard analytics. Correlation tells you which variables move together. The causal graph tells you which ones *drive* others, which direction influence flows, and where the real leverage points are.

For the technical background on how discovery works, see [Causal Discovery](/core-technologies/causal-discovery.md).

***

## Starting discovery

Discovery runs as part of building a Digital Twin, and there are two ways into the same builder:

* **From the Ontology page** — **Datasets you can make**, under **Suggestions**, proposes analysis-ready views; **Create & build twin** saves one as a dataset and opens the twin builder with it pre-selected.
* **From the Digital Twins list** — click **New Digital Twin** and pick your Dataset in the builder's data step.

Either way, keep the default **Discover from data** method and click **Discover & train** in the final step. RootCause discovers the causal structure and trains the model in one run, which takes a few minutes depending on dataset size. When it completes, click **Graph explorer** on the twin's home panel to review the discovered graph. [Step 5: Build Digital Twin](/user-guide/creating-digital-twin.md) walks through the builder itself.

***

## Reading the graph

<figure><img src="https://1662811113-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBXg3gZLR0e2Q8SzeQmql%2Fuploads%2Fgit-blob-21c1b90aebbc32ea1462389d61ba34472ce2099d%2Frc-digital-twin-relationships.png?alt=media" alt="The Relationships view: the discovered causal graph on the left and the relationships table on the right"><figcaption><p>The Relationships view: the causal graph beside the relationships table — 31 relationships here, with a further 140 candidate connections tested and ruled out. Clicking any node reveals what drives it and how much each driver contributes.</p></figcaption></figure>

The graph has two elements:

* **Nodes** — each node is a variable from your Dataset
* **Edges** — lines between nodes represent causal relationships

**Edge types:**

| Edge                | Meaning    |
| ------------------- | ---------- |
| A → B (solid arrow) | A causes B |

Every edge in the graph is directed: discovery either orients a relationship or drops it, so there are no undirected or bidirectional edges. A suspected unobserved common cause appears instead as its own dashed **Unknown Influence** node, feeding the variables it affects.

Nodes are color-coded by data type. Clicking any node replaces the canvas with that variable's detail view, headed by its name. It shows how well the variable is explained, its learned distribution, and a **Causal subgraph** of its drivers and effects, where ribbon thickness carries each driver's contribution share and a toggle switches between incoming and outgoing. **Expand** on the distribution chart opens the full-screen view. It always has **Path Analysis** and **Model Probabilities**; a non-static twin adds a time-based tab — **Seasonal Trends** for a variable, **Time Lags** for a relationship — and a multi-environment twin adds **Environment Analysis** when a relationship is selected.

***

## Reviewing the graph

The graph opens as a flowchart of draggable nodes on a pannable canvas. Clicking a node opens that variable's detail view in place of the canvas; use the panel's back button to return. To dim everything but a node's immediate neighbours, use the path-filter toggle in the graph toolbar. To navigate:

* **Canvas controls** — zoom in and out, fit the graph to the window, and lock the canvas against accidental dragging, in the bottom-left corner. **Recompute layout**, which redraws the arrangement after you have moved nodes around, is in the toolbar at the top of the page. None of these change the model itself.
* **Search variables** — find a node by name in a large graph.
* **Path Analysis** — a tab of the full-screen chart opened with **Expand** on a variable's distribution. Sankey diagrams show how causal influence flows into a target variable (inbound) or out of a source variable (outbound); the width of each flow indicates contribution weight.

Start with your key outcome variable (churn, revenue, conversion rate). Click it to see what drives it directly and what the major inbound paths are. Then expand outward.

***

## Refining with domain knowledge

The discovered graph is a statistical starting point. You can incorporate what you already know:

**Known relationships** — if you're certain a causal link exists (from an experiment, physical law, or domain expertise), declare it. RootCause will respect the constraint when re-running discovery.

**Blocked relationships** — if a relationship is impossible (for example, customer age cannot be caused by purchase behavior), block it. The algorithm will exclude that edge.

**Ordering** — a direction hint, saying A must come before B without asserting that the link exists.

To add constraints, open the twin's **Config** tab and click **Modify model**. The builder's **Add domain knowledge** step has two views of the same priors: on the **Graph** the link kinds are drawn as **Required**, **Forbidden** and **Ordering**, and the **Table** lists them under **Prior Knowledge** as **Known Relationships** and **Blocked Relationships**. Add yours, then choose **Re-discover & train**. The graph updates to reflect both the statistical evidence and your domain rules.

Every discovered edge is oriented, so nothing is left for you to resolve. If you know a direction is wrong, correct it with a Required link (or an Ordering constraint) and re-run discovery.

***

## Evaluating model quality

The **Evaluation** tab shows how well each variable is predicted by its causes in the graph:

* **Categorical variables:** Accuracy, AUC
* **Numeric variables:** MSE, MAE, R²

Variables with weak metrics may need more data, additional drivers, or a refinement pass on the graph structure.

***

## Next step

With the causal graph reviewed and refined, you're ready to fit it into a runnable model.

Next step: [Step 5: Build Digital Twin](/user-guide/creating-digital-twin.md)
