Keep live ad deals safe
Shared taxonomy. Live deals. Silent risk.
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.
Live PMP deals affected silently
Forecasting drifted
No propagation visibility
Destructive actions had no safety net
What was not allowed to change
Three calls that shaped the system
Separate governance from targeting
One unified admin surface, or two surfaces with different mental models.
Two layers: Ops thinks in system consistency, AdOps thinks in campaign delivery. One UI serving both served neither.
Two surfaces to maintain, and shared state that has to stay coherent between them.
Five lifecycle states instead of active / inactive
Keep the binary flag everyone knew, or model the states values actually pass through.
Draft, active, deprecated, blocked, and retired states made risk visible before action instead of after damage.
More state logic everywhere, and a migration that had to re-educate every existing workflow.
Move validation upstream of production
Validate on publish (fast entry), or validate on keystroke and paste (slower entry).
Format, duplicate, and conflict checks before values ever reach production. Bad data is cheapest to stop at the door.
Entry became slower, but the checks stopped bad data before it reached live systems.
The first version was too cinematic
A dashboard above the table with extra insight panels and animation.
“Where do I click?” Operators testing real tasks never left the rows.
Moved lifecycle, dependency, and propagation context into the rows themselves, at the point of action.
The governance console, up close
Switch views and select a row to see the context operators use while working.Operational Visibility
Manual Entry
Bulk Paste
CSV Mapping
Safe Deletion
Expires Sep 8, 2026
What changed, and how we measured it
Mis-targeting incidents on live PMP deals, first quarter after launch.
Taxonomy changes reach bid-stream enrichment in about 30 seconds, instead of waiting on several teams.
Deal revenue flagged by pre-publish dependency checks before a breaking change shipped.
Mis-targeting incidents on live PMP deals, first quarter after launch.
Taxonomy changes reach bid-stream enrichment in about 30 seconds, instead of waiting on several teams.
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.
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.