Case Study · Nexxen SSP · 2024

Keep live ad deals safe

Shared taxonomy. Live deals. Silent risk.

RoleLead Product Designer
ScopeEnd-to-end UX
Year2024
↓92%Trust
Mis-targeting incidents on live PMP deals, first quarter after launch.
~30sSpeed
Taxonomy changes reach bid-stream enrichment in about 30 seconds, instead of waiting on several teams.
$847KScale
Deal revenue flagged by pre-publish dependency checks before a breaking change shipped.
Interactive PrototypeLive
01The Problem

A key-value pair is one row in a table. One edit could reprice a quarter.

KVP metadata feeds targeting, forecasting, and bid-stream enrichment across the SSP. Edits looked like harmless admin work, but they landed on live PMP deals with no warning, no propagation trail, and no way back.

01

Live PMP deals affected silently

02

Forecasting drifted

03

No propagation visibility

04

Destructive actions had no safety net

02Constraints

What was not allowed to change

Data modelExisting taxonomy structures stayed in place
UptimeLive deals could not be interrupted
Two audiencesOps governs shared metadata; AdOps ships campaigns daily
TeamPM, FE/BE engineers, data team · 2-week cycles
03Decisions

Three calls that shaped the system

Decision 01

Separate governance from targeting

The fork

One unified admin surface, or two surfaces with different mental models.

The call

Two layers: Ops thinks in system consistency, AdOps thinks in campaign delivery. One UI serving both served neither.

The cost

Two surfaces to maintain, and shared state that has to stay coherent between them.

Decision 02

Five lifecycle states instead of active / inactive

The fork

Keep the binary flag everyone knew, or model the states values actually pass through.

The call

Draft, active, deprecated, blocked, and retired states made risk visible before action instead of after damage.

The cost

More state logic everywhere, and a migration that had to re-educate every existing workflow.

Decision 03

Move validation upstream of production

The fork

Validate on publish (fast entry), or validate on keystroke and paste (slower entry).

The call

Format, duplicate, and conflict checks before values ever reach production. Bad data is cheapest to stop at the door.

The cost

Entry became slower, but the checks stopped bad data before it reached live systems.

The targeting layer, after the split
04What Failed First

The first version was too cinematic

Tried

A dashboard above the table with extra insight panels and animation.

Signal

“Where do I click?” Operators testing real tasks never left the rows.

Correction

Moved lifecycle, dependency, and propagation context into the rows themselves, at the point of action.

The surface: explore the console

The governance console, up close

Switch views and select a row to see the context operators use while working.
KVP Governance Console
KeyStatus
Feature 01

Operational Visibility

Lifecycle statesDependency risk
Interactive
Try it
Interactive
Try it
DraftSaved by an editor but not yet published. No bid requests reference it. No risk.
slot_positionPMP — Disney CTVPMP — Magnite VideoPMP — PubMatic DisplayPMP — Index EUPMP — OpenX MXForecast templates · 7Audience segments · 34BI / Reporting
Blast radius
128 deals
$847K monthly revenue
Feature 02

Manual Entry

Format validationDuplicate check
Interactive
Try it
Add value · live validation
Page Position
Interactive
Try it
Add values · Page Position
Value * lowercase, _
Display Name *
Already exists in Page Position · 32 deals
Validation rules
  • Lowercase letters, numbers, and underscores only
  • Max 64 characters · must be unique within key
  • Changes propagate to bid request enrichment in ~30s
2 will be saved
Feature 03

Bulk Paste

CSV importPaste mode
Interactive
Try it
Interactive
Try it
CSV Import
Drop CSV file here
or browse files · max 1,000 rows · 2 columns
Expected format
value,display_name
abovefold,Above the Fold
belowfold,Below the Fold
✓ Sample CSV ready · 52 rows
Paste one value per line tab-separated for value + display
+ 4 new~ 3 dup! 1 invalidLive preview
NEWoverlay_uOverlay (Upper)
NEWsticky_bottomSticky Bottom
DUPabovefoldAbove the Fold · already exists
DUPbreakrollBreak-roll · already exists
DUPhomepageheroHomepage Hero · already exists
INVALIDpip_corner→ pip_corner · auto-normalize?
NEWinline_nativeInline Native
NEWsplashSplash Screen
4 will be saved
Feature 04

CSV Mapping

Schema mappingData quality
Interactive
Try it
Import · CSV mapping
0/3
Interactive
Try it
CSV header
→ Schema field
slot_key
str · 52 rows
···
value
required · snake_case
human_label
str · 52 non-null
···
display_name
required · human-readable
notes
str · 6 non-null
···
notes
optional
Awaiting upload…
Feature 05

Safe Deletion

Revenue at riskRollback safety
Interactive
Try it
Delete · rollback window
preview
Rollback safety net

Expires Sep 8, 2026

Interactive
Try it

Cannot delete · abovefold

This value has 18 active dependencies
Removing it will affect targeting on 12 PMP deals, 4 audience segments, and 2 forecasting templates.
$847K
Revenue at risk · 30d
PMP deals (12)$612,400
Audience extensions (4)$184,200
Forecast bookings (2)$50,800
Based on trailing 30d delivered revenue from deals targeting pos=abovefold
Active PMP Deals12
UMB-TD-FBC4-5A4F438Paramount-CTV-CBS-Sports
UMB-DV-A12C-1188901Disney-CTV-Hulu-Bundle
UMB-AM-7A3F-9023115Roku-Open-OTT-Music
Rollback safety net
7d window · expires Jun 14, 2026
Type abovefold to confirm force-delete
05Outcomes

What changed, and how we measured it

Trust↓92%

Mis-targeting incidents on live PMP deals, first quarter after launch.

Speed~30s

Taxonomy changes reach bid-stream enrichment in about 30 seconds, instead of waiting on several teams.

Scale$847K

Deal revenue flagged by pre-publish dependency checks before a breaking change shipped.

Interactive
Try it
Outcomes · after launch
Trust0%

Mis-targeting incidents on live PMP deals, first quarter after launch.

Speed~0s

Taxonomy changes reach bid-stream enrichment in about 30 seconds, instead of waiting on several teams.

Scale$0K

Deal revenue flagged by pre-publish dependency checks before a breaking change shipped.

Measured through incident reports, deal-impact flags, and behavioral analytics (GA + Hotjar), compared quarter over quarter after rollout.

ObservabilityOperational trustDependency intelligencePropagation awarenessScalable taxonomy workflows
06Reflection

What I would change next

I would bring dependency intelligence into the API layer earlier. We designed it into the UI first, and teams integrating programmatically got the safety net a quarter later than they should have.

Next was taxonomy ownership: named owners per key, review cadences, and change budgets. That would make governance part of the workflow, not just a surface.