The funnel is a chain of conditional-probability filters. Starting from ad impressions I (from spend ÷ CPM × 1000), each stage keeps only a fraction of the traffic:
Clicks = I × CTR
Leads = Clicks × LeadRate
Customers = Leads × CloseRate
Overall CVR = CTR × LeadRate × CloseRate
CAC = Spend / Customers
ROAS = (Customers × AOV) / Spend (AOV = $150 fixed)
The 3D funnel narrows at each boundary in proportion to √(retained share) — area, not radius, scales with the surviving traffic, so the taper reads like a real funnel/stage chart. Particles are spawned continuously as impressions; each one privately "rolls the dice" against the current CTR / lead / close rates the instant it spawns, then visibly drops out (fades, drifts outward) at whichever stage it failed, or shoots all the way through as a gold customer particle.
The A/B test is the same two-proportion z-test used to decide real ad-campaign winners. It simulates n = 2,000 independent visitors per variant using each variant's own overall CVR as a Bernoulli probability, then compares the two observed proportions:
p̂1, p̂2 = observed conversion rate, A and B
p̂_pool = (conversions_A + conversions_B) / (2n)
SE = sqrt( p̂_pool × (1 − p̂_pool) × 2/n )
z = (p̂1 − p̂2) / SE
p-value = 2 × (1 − Φ(|z|))
|z| > 1.96 (p < 0.05) is the conventional bar for "statistically significant at 95% confidence" — below it, the observed gap between A and B could plausibly be random noise, exactly the trap that leads real marketing teams to declare a winner too early on too little traffic.