Confounder-Checked Root Cause

The distributor channel looks guilty for churn until climate is held fixed; conditioned, it drops out of the top drivers. A null-control card that finds no lever ships beside it, on purpose.

Confounder-Checked Root Cause: screenshot from the SQL demo
🐘 SQL_predict_relate_recommendCross-vertical
Production anchorSix cards over a synthetic customer journey with planted mechanisms, each four SQL statements shown next to its numbers. The channel card clears the distributor channel under conditioning; the commissioning card is the null control.

The problem

A root-cause ranking that reads lift across the whole population cannot tell a cause from a passenger. In the demo's data a distributor channel sells into a hot region, hot sites churn, and so the channel looks guilty. Cutting it would cost the revenue and fix nothing.

The opposite failure is quieter. A dashboard where every analysis finds a driver is a dashboard nobody should trust, because real data contains questions with no answer.

How it works

Each card is four SQL statements run through Aito's SQL interface: predict() for the KPI, relate() for the candidate causes across the whole book, relate() again inside a conditioning view (for the channel card, hot-climate sites only), and recommend() with why for the lever. A driver whose lift survives conditioning stays a candidate cause; one that vanishes was being carried by something else.

The data is synthetic on purpose: the generator plants the mechanisms and prints what it planted, so what the engine recovers can be checked against what was buried. One planted mechanism is a null, and its card shows options that sit close together and no lever to pull.

For the full architecture, see the technology overview. For the broader narrative across multiple use cases, read The Predictive Application.

See it live

This use case runs in the 🐘 SQL demo today. Click through to the live application and inspect the queries that produce the result.

Open the live demo →