Smart Pricing for Ad Inventory

Hulu's ad pricing lived in spreadsheets, every rate change required an engineering ticket and weeks of wait time. I designed a self-serve tool that let the pricing team create and manage rate cards on their own.

Ad Tech Internal Tool

Timeline

5 months

My Role

Sole Product Designer

The Team

1 PM

Sales Team

External Dev Team

Ad Sales Team

Impact

Weeks → Min
Pricing Change Implementation
Zero
Dev dependency

Background

Hulu Ad Manager (now Disney Campaign Manager) launched in March 2020, giving advertisers a self-serve way to create and manage streaming campaigns.

At launch, the platform ran on a single fixed CPM (Cost per 1,000 impressions). Every advertiser paid the same rate, regardless of targeting sophistication, deal type, or seasonal demand.

Inventory Needle
The inventory panel exposed one CPM to all advertisers.

One CPM made sense when the platform only served SMBs. But as it grew, having a flat pricing structure led to issues:

No premium pricing

Couldn't charge more for advanced targeting like geography, demographics, or interests.

No custom rates

No way to offer promotional rates for agencies, repeat customers, new advertisers, or large accounts.

No seasonal flexibility

No way to adjust pricing based on seasonal inventory/demand.

Beyond the missed revenue opportunities, there was an additional problem. Pricing had to make an engineering ticket and wait a few weeks to update the CPM. Additionally, the pricing team manually tracked advertisers and rates via spreadsheets:

Spreadsheet Example
The pricing team maintained separate spreadsheets to track custom CPMs per advertiser. Advertiser names and rates have been blurred.

Requirements

The idea was obvious: give the pricing team a self-serve tool to create and manage multiple rate cards without engineering support.

The core design challenge wasn't just building a CRUD interface for rate cards. It was building a complex system that felt simple and manageable for non-technical users. Rate cards needed flexible logic: start and end dates, pricing add-ons for targeting, priority ordering when multiple rates applied, and a way to assign advertisers to a rate card.

Flexible rate cards

Ability to adjust dates and premium pricing add-ons such as targeting, geolocation.

Rate card classification

Identify different rate cards for distinct pricing models — e.g., "political" or "standard".

Priority Rankings

Higher-priority cards override lower-priority ones when multiple cards apply to the same advertiser (or which has the lower rate).

Advertiser group management

Let users create and manage advertiser groups, enabling them to bulk apply pricing to one group rather than each individual advertiser.

Design Challenge
How do I make a system with complexity (rate logic, prioritization, bulk assignments) feel simple enough for a non-technical team to manage on their own?

Discovery & Designs

With a compressed timeline (about 5 months) I focused discovery on the people who would use this tool every day. Through interviews with the pricing team, I learned how they tracked rates, and how they made decisions about which advertisers got which CPMs.

The biggest insight wasn't about features, it was how they worked. They thought about their work in terms of rate cards as objects you manage in a list, not forms you fill out one at a time. That informed the core layout.

Research

Learning from Internal Precedents

External competitive research wasn't possible for this internal tool. Instead, I audited two existing tools in our ad suite with comparable complexity:

What to follow

Deal package management tool

Used a table + side panel pattern the pricing team already knew, reducing the learning curve for a new tool.

What to avoid

Legacy linear TV rate card system

Too much information on a single screen, no clear separation between viewing and editing states.

Pricing Research 1
Pricing Research 2
The legacy TV rate card system (top) and package tool (bottom).
Design Exploration

Initial Design Explorations

The final interface uses a table view with an expandable side panel for editing.

Pricing Wireframe 1
Pricing Wireframe 2
Pricing Wireframe 3
Early wireframes testing the two approaches: table (left) vs. accordion rows. The table approach won because it matched how the pricing team already managed their rate cards.
Design Decision

Key Design Decision: Table + Side Panel

The final interface uses a table view with an expandable side panel for editing — a deliberate choice over a full-page edit flow.

  • List stays visible — the pricing team could compare cards, check active dates, and understand priority order without losing context.
  • Consistent pattern — select a row, edit in the panel. I carried this into advertiser groups so the whole tool felt like one system.
  • Quick Iterations — Created regular working sessions with the pricing team in place of formal testing.
Rate Card View 1
Rate Card View 2 Rate Card View 3
The rate card table gives a quick overview of all active cards and priority. Selecting a row opens the side panel for editing without losing list context.

Advertiser group management uses the same table-and-panel structure.

The consistency was intentional: once a user understood how to work with rate cards, advertiser groups should feel immediately familiar. It also reduced the cognitive overhead of learning two different interaction models in the same tool.

Advertiser Groups 1 Advertiser Groups 2
Advertiser groups let the pricing team bundle related accounts and assign them to rate cards in bulk.

Final Design

The walkthrough below shows full user flow editing rate cards and advertiser groups.

Takeaway

Pricing tool launched in early 2023 and had replaced a process that previously required engineering tickets and weeks of wait time. Here are a few things I took away from this project:

Learnings

This platform has been able to scale. With the side panel, the team has been able to add more pricing add-ons such as length of commercial, day parting, and type of content (i.e. sports).

Seeing the pricing tool as it is now a few years after I worked on it, I would want to do more designs or even a redesign because I think the content could be laid out in a better way.

Reflection

I wasn't familiar with pricing logic before this project and soon learned about the complexities of pricing ad buys, and how to lay all that information out.

Initially I didn't want to make another data table, but realized the team was used to spreadsheets and didn't want to overcomplicate the layout. Seeing the tool now, I'd want to explore a redesign. I think the content could be laid out in a better way.