Causal Inference for Product Teams: Beyond the A/B Test
Randomized experiments are the gold standard, but you cannot randomize everything. Here is how to measure causal effects when you only have observational data.
Every product team eventually hits the limits of the A/B test. Some changes cannot be randomized: you cannot randomly assign customers to a recession, you cannot ethically withhold a safety feature, and you cannot run a clean experiment on a decision that was already made last quarter. When randomization is off the table, the reflex is to fall back on correlations, and that is where teams get into trouble. Causal inference offers a rigorous alternative for these situations, and it deserves a place in every serious analytics toolkit.
Correlation, confounding, and the fundamental problem
The fundamental problem of causal inference is that we never observe both outcomes for the same unit. A customer either saw the new onboarding flow or they did not; we cannot observe what would have happened under the other condition. The difference between those two outcomes is the causal effect, and it is inherently counterfactual. Randomization solves this by making the treated and untreated groups statistically identical on average, so their observed outcomes are valid counterfactuals for each other.
Without randomization, the groups differ. Users who adopted a feature are systematically different from those who did not: they may be more engaged, more technical, or simply newer. These differences are confounders, and naive comparisons attribute their effects to the treatment. The entire discipline of observational causal inference is about removing confounding so that a comparison becomes valid.
Draw the graph first
Before touching an estimator, draw the causal graph. A directed acyclic graph forces you to state which variables cause which, and it makes your assumptions explicit and criticizable. The graph tells you which variables to adjust for and, just as importantly, which to leave alone. Controlling for the wrong variable can create bias rather than remove it. A collider, a variable caused by both treatment and outcome, opens a spurious path when you condition on it. A mediator, a variable on the causal path from treatment to outcome, absorbs the very effect you are trying to measure. No estimator can save you from an adjustment set chosen without a graph.
Propensity scores and doubly robust estimation
Once you have a valid adjustment set, propensity-score methods model the probability of receiving treatment given the covariates, then compare treated and untreated units with similar propensities. This balances the groups on the observed confounders. The weakness is that it depends entirely on getting the propensity model right.
Doubly robust estimators hedge that bet. They combine a propensity model with an outcome model, and the estimate remains consistent if either model is correctly specified, not necessarily both. This is a genuine practical advantage: you get two chances to be right. Augmented inverse-probability weighting and targeted maximum likelihood estimation are the workhorses here, and they should be the default rather than raw propensity matching.
Heterogeneous effects tell the real story
An average treatment effect can hide everything interesting. A feature might delight power users while confusing newcomers, netting out to a flat average that conceals two strong opposing effects. Causal forests estimate how the treatment effect varies across the covariate space, revealing which segments respond and which do not. For product teams this is often the most actionable output: not whether a change works, but for whom, so you can target the rollout rather than shipping to everyone or no one.
When you cannot adjust: synthetic controls
Sometimes the treatment is a single event at a single point in time: a pricing change in one market, a policy shift, a major launch. There is no untreated version of that unit to compare against. Synthetic control methods construct one by combining untreated units into a weighted composite that closely tracks the treated unit before the intervention. The divergence after the intervention estimates the effect. This method has become a standard tool in policy evaluation precisely because it makes the counterfactual explicit and visual, which helps stakeholders trust it.
Sensitivity analysis is how you earn trust
Every observational estimate rests on the assumption that you have accounted for all relevant confounders. That assumption is untestable. What you can do is quantify how fragile your conclusion is: how strong would an unmeasured confounder have to be to overturn the result? Sensitivity analysis answers this. If it would take an implausibly strong hidden variable to flip the sign of your effect, stakeholders can act with confidence. If a modest confounder could do it, you have learned that your evidence is weak, which is itself valuable to know before betting the roadmap on it.
Making it routine
The barrier to causal inference in most organizations is not the math, it is the workflow. Teams reach for correlations because the causal tooling feels like a research project. The fix is to make causal estimation a routine, governed step: standard estimators, enforced adjustment sets derived from a shared graph, automatic sensitivity analysis, and clear reporting of assumptions alongside every estimate. When causal inference is as easy to run as a group-by, product teams stop confusing correlation with cause, and the quality of their decisions improves accordingly.
A/B testing will always be the gold standard when you can run it. But the questions that matter most are often the ones you cannot randomize. Treating those questions with the same rigor, rather than retreating to correlation, is what separates a data-informed team from a data-driven one.
Dr. is part of the team building the Medovac platform, turning rigorous data science methods into governed, production-grade software.