20% more data revenue from the same data, once the selling had clean books.
A real revenue line, run on memory and goodwill.
The group had sold consented, anonymized customer data across its brands for years. What never existed was books on the selling: no single view of what was for sale, who was buying which feed, what each contract earned, or whether every delivery had been invoiced. The pipelines behind the feeds were half dbt and SQL, half Python jobs in AWS, with no alerting on any of it, so when a feed broke or shipped dirty records, the buyer usually noticed first.
| Data feed | Buyer | Brand | Rate | Last delivery | Invoiced |
|---|---|---|---|---|---|
| Purchase events, monthly | Retail media platform | Brand A | $0.40 / record | On time | Yes |
| Audience segments | Ad platform | Brand B | Inherited, unknown | On time | Yes |
| Category signals | Market research firm | Brand C | $0.08 / record | Failed 11 days ago | n/a |
| Enriched profiles | CPG partner | Brand A | Flat fee, 2019 contract | On time | Disputed |
| Life-stage segments | Media agency | Brand D | Same rate as Brand C | 4 days late | Missing |
| Purchase events, weekly | Retail media platform | Brand B | $0.40 / record | On time | Yes |
Clean books on the selling, and a rate card to price from.
One governed catalog across the group: every feed with its contract, rate, delivery log, and invoice joined, so revenue per feed, per buyer, per brand is one view instead of an archaeology project. The pipeline estate was consolidated onto tested models with alerting, so a break surfaces internally before a short file reaches a buyer. And what is sold, and what never will be, became as explicit as the catalog itself.
The same data, sold with the lights on.
The ~20% came from selling the same catalog better, not from selling more data or new kinds of it. Each lever below was invisible before the books existed.
| Measure | Before | With clean books |
|---|---|---|
| Data revenue, same catalog | Baseline | Up ~20% |
| Pricing basis | One blanket rate | Per-brand rate card |
| Feeds with known unit economics | Almost none | All of them |
| Feed breaks found by | The buyer | Alerting, internally |
| Unbilled deliveries | Unknown | ~$150k found and recovered |
What held, what needed work.
The rate card survived its first renewal cycles: repriced deals renewed without losing a buyer, which was the fear that had kept the blanket rate alive.
One brand's records were dirty enough that cleanup had to come before repricing. Duplicates and malformed fields were quietly suppressing what the feed could honestly charge.
New feeds now launch with unit economics and consent rules attached from day one, and the margin-per-feed view became part of the monthly close.
Get in touch.
Tell us what you are trying to figure out. If we can help, we will say how. If we are not the right fit, we will say that too, and point you somewhere better.