Lab

What happens inside a clean room

Two companies, one join, and only aggregates come out. Pick an analysis and run it.
Interactive demo
A retailer and a publisher measure a campaign

You can see both datasets because this is a demo. In real life each company sees only its own side. IDs are hashed emails (shortened), and every record here is made up.

Northwind Outfitters
Brand · 40 CRM customers
Private to brand
  • d82b…£108
  • e6c2…£63
  • aaf9…no buy
  • 6ae2…£88
  • a806…£98
  • 1da2…no buy
  • 969f…£118
  • 3057…no buy
  • 5a91…no buy
  • 9f10…no buy
  • 1009…£39
  • 3992…no buy
  • bf35…no buy
  • a5e8…no buy
  • 1bb4…£152
  • da49…no buy
  • 4e09…£32
  • c631…no buy
  • ec9c…£149
  • c4b5…£184
  • b0dc…£50
  • 9723…no buy
  • 71b3…£74
  • f83e…no buy
  • 2a06…£68
  • 83e2…£86
  • 35e0…£56
  • f07d…no buy
  • 7e87…£88
  • d638…£36
  • 4e6e…no buy
  • 40f2…no buy
  • 2a23…no buy
  • db68…£174
  • f511…no buy
  • 650d…£137
  • 91ff…£35
  • c408…no buy
  • 984d…no buy
  • 7e4c…£138
The clean room
Join on hashed ID · approved queries only
Choose an analysis

Results appear here. Only aggregates ever leave the room.

Daily Ledger Media
Publisher · 50 users
Private to publisher
  • 1c25…9 imp.
  • c4b5…2 imp.
  • 4e09…no ad
  • 2a23…9 imp.
  • 22a1…2 imp.
  • 0e5c…no ad
  • f147…9 imp.
  • 5a91…no ad
  • 40f2…no ad
  • 6855…no ad
  • e229…5 imp.
  • d82b…4 imp.
  • ff53…no ad
  • 35e0…no ad
  • 0494…6 imp.
  • 7433…7 imp.
  • 2501…1 imp.
  • a806…4 imp.
  • ec9c…9 imp.
  • d638…6 imp.
  • 9723…3 imp.
  • 614e…no ad
  • 4e6e…no ad
  • 1009…3 imp.
  • 4066…6 imp.
  • 8220…no ad
  • 969f…no ad
  • 8669…4 imp.
  • 5c4f…6 imp.
  • c408…no ad
  • aa5e…no ad
  • 7e4c…4 imp.
  • 3992…no ad
  • 7d24…3 imp.
  • 6ae2…7 imp.
  • 650d…no ad
  • 71b3…1 imp.
  • a3ee…4 imp.
  • 1bb4…9 imp.
  • 91ff…no ad
  • 14c2…no ad
  • 6350…no ad
  • ebed…1 imp.
  • 164f…no ad
  • e22c…4 imp.
  • cbc8…1 imp.
  • 984d…4 imp.
  • dddc…no ad
  • 0cac…no ad
  • b0dc…9 imp.
The brand sees

Its own CRM, plus the aggregate results it asked for.

The publisher sees

Its own ad logs, plus the audit log of which queries ran.

Nobody sees

The other side's rows, or which specific people matched.

The short version
What clean rooms solve, and what they don't

A brand knows who bought. A publisher knows who saw the ad. Neither should hand the other its customer list. A clean room lets both put their data in one place, join it on a hashed ID, and run only the queries they agreed on in advance. What comes out is aggregates: counts, rates and averages over groups big enough that nobody can be singled out. Every query is logged.

That's the whole trick, and it's a genuinely useful one for campaign measurement and audience overlap. What it isn't: a data warehouse, a real-time system, or a way to make a weak measurement design strong. The lift number above is a correlation — people who saw the ad were not chosen at random. And if your question involves one company's data, you don't need a clean room at all.

Real products use far bigger thresholds (tens or hundreds of people, not 5) and more safeguards against clever query combinations. A simplified illustration — not how any specific product works.

Read the longer take: Most clean rooms pitches are lying to you →

Things to try
Poke at the privacy rules
  • Run the spend-by-category analysis, then slide k up and watch small groups vanish.
  • Push k above 10 on the exposure analysis: no lift can be published at all.
  • Ask for the matched customers. The room refuses, and the refusal is logged.
  • Turn on noise and re-run a few times. The answer wobbles, but the story holds.
  • Notice the faded IDs: customers outside the match never enter the result.