Case studiesData monetization

20% more data revenue from the same data, once the selling had clean books.

Consumer brand group, multiple brandsClient unnamed by requestData sold to partners for yearsBuilt in their stack
The situation

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.

The feed catalog, reconstructed as foundWhere it stood
Data feedBuyerBrandRateLast deliveryInvoiced
Purchase events, monthlyRetail media platformBrand A$0.40 / recordOn timeYes
Audience segmentsAd platformBrand BInherited, unknownOn timeYes
Category signalsMarket research firmBrand C$0.08 / recordFailed 11 days agon/a
Enriched profilesCPG partnerBrand AFlat fee, 2019 contractOn timeDisputed
Life-stage segmentsMedia agencyBrand DSame rate as Brand C4 days lateMissing
Purchase events, weeklyRetail media platformBrand B$0.40 / recordOn timeYes
Rebuilt with illustrative rows; the column set mirrors the real catalog. Several buyers, mostly one blanket rate, and nobody could say which brand's records earned it.
The revenue was real. The books on it did not exist.
What we built

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 catalog
Every feed, contract, and rate in one place, joined to delivery logs and invoices
Value per record, per brand
Records priced by the purchase journey they signal, not one blanket rate across the group
Tested pipelines, alerted
The dbt / SQL / Python estate consolidated and tested. Breaks page the team, not the buyer
Consent, explicit
Consented, anonymized feeds only, with exclusions defined per contract
What a record is worth, by brandThe rate card
Modeled value per record, by the purchase journey the data signals
Brand ALong life-stage journey ahead
~$0.55 / record
Brand BReplenishment cycle
~$0.30 / record
Brand CSeasonal purchase
~$0.12 / record
Brand DMostly one-off purchase
~$0.08 / record
A ~7x spread that one blanket rate had been averaging away. The sales team now walks into every renewal knowing what the records across brands are worth, and why.
Values are illustrative drafts; the cross-brand spread is the point, not the levels. This view is what changed the selling conversation.
What it changed

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.

Contract pricing
With value per record visible by brand, renewals were repriced deal by deal. The largest gap was a legacy contract paying the lowest-value brand's rate for records from the highest-value one.
Unbilled deliveries
Joining delivery logs to invoices surfaced feeds that had shipped for months without being billed. Invoiced and recovered.
Pipeline failures
Alerting now catches a break before a short or dirty file reaches a buyer. Credits and make-goods dropped, and renewal conversations stopped opening with an apology.
Where the effort goes
With margin per feed visible, sales pushed the feeds that actually earn, and one high-maintenance, low-margin feed was retired at renewal instead of quietly rolled over.
Before and afterDraft figures
MeasureBeforeWith clean books
Data revenue, same catalogBaselineUp ~20%
Pricing basisOne blanket ratePer-brand rate card
Feeds with known unit economicsAlmost noneAll of them
Feed breaks found byThe buyerAlerting, internally
Unbilled deliveriesUnknown~$150k found and recovered
Draft figures to confirm before publish. The ~20% compares revenue on the same catalog, not new feeds.
Since then

What held, what needed work.

Held

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.

Needed work

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.

Where it went next

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.

01
Free work first
We start by doing a real piece of work on your data, free, so the first thing you judge is output, not a pitch.
02
First build, fixed scope
A trusted core metric layer in weeks, not quarters, at a fixed price. Small enough to be safe, real enough to matter.
03
Scale when it earns it
Month to month from there, from a few thousand a month. You own every model, dashboard and definition.