The Trafficking tool's filter system was built incrementally: each filter added ad hoc, with no shared interaction model and no way to save or reuse work. For a data-heavy tool where users filter across thousands of campaign records to make trafficking decisions, it wasn't close to meeting their needs.
I redesigned the filter system from the ground up: a categorized side panel with standardized filter components, boolean logic, saveable custom filters, and a favoriting system to surface the right filters fast.
Ad Tech Internal Tool
5 months
User testing validated the approach. The categorized side panel with search and saveable custom filters consistently outperformed the existing experience on task speed, filter discoverability, and user confidence.
Mission Control is Disney's internal platform for managing ad campaigns across streaming platforms and distribution partners. Its primary users are non-technical operators (Account Managers and Sales Planners) who rely on it daily to set up, monitor, and troubleshoot campaigns at scale.
The Trafficking section of Mission Control is used primarily to:
The Trafficking table is inherently dense: campaigns span multiple advertisers, contractual agreements, legal requirements, and content/region-specific targeting rules. That complexity is reflected directly in the data, making it a significant challenge for users to surface what's relevant to their current task.
Filtering is the primary mechanism for narrowing this data down to what's actionable. But through user conversations and direct observation, it was clear the existing filter system was failing on multiple fronts:
Key pain points:
Compounding the usability problems, filters had been added incrementally with no consistent interaction pattern; each one implemented differently as new fields were introduced. There was no shared component model, making the system increasingly brittle as the platform grew.
Core Problem
Filters were not meeting user needs, difficult to use and difficult to scale.
Before designing anything, I audited every filter in the Trafficking tool, mapping each one to its corresponding data column and categorizing by input type. This surfaced the full scope of the existing system and made the inconsistencies concrete. Filter types in use:
Mission Control spans a wide range of tools with significant UI variation. I audited how filtering was handled elsewhere in the ecosystem and found a consistent pattern: most tools used a fixed side panel rather than an inline dropdown. This established a layout direction that would align with existing platform conventions.
The internal audit established a layout direction, but didn't answer the harder design question: how to support custom filter creation, persistence, and boolean logic in a way that was intuitive at scale.
Drawing from discovery and the PRD, I defined four design goals to guide the redesign:
Moving filters to a side panel solved the accessibility problem: users could filter without leaving the table context. But the more complex requirements (custom filter creation, AND/OR logic, saving and naming filters) needed dedicated space. My initial concept introduced a separate "Advanced Filters" page for this purpose.
The "Advanced Filters" page surfaced all filters by default, which immediately created a density problem. The goal was custom filter creation, but the page was dominated by navigation rather than the setup task itself. To test an alternative quickly, I built an interactive prototype using Cursor.
User testing on the "Advanced Filters" concept revealed the core issue: CONTAINS/DOES NOT CONTAIN and IS/IS NOT operators, combined with per-section AND/OR logic, introduced cognitive overhead that slowed users down. More critically, the design hadn't solved the scalability problem. It was effectively a long scrolling dropdown with a different visual treatment.
The revised approach consolidated both filter browsing and custom filter creation into a single side panel, consistent with how other Mission Control tools handled filtering, but extended to cover the full requirements. Rather than a flat list, filters were organized into logical categories with a search field for direct access. AND/OR logic was scoped to the applied filters area, keeping the browsing experience uncluttered.
This approach tested significantly better. Users found filters faster through the category groupings and search, and the drag-to-reorder behavior for applied filters was immediately intuitive. The AND/OR toggle addressed the power-user requirement without exposing that complexity to everyone.
The existing "quick filter" chips above the table (used for common fields like date range and account executive) were replaced with a "Custom Filters" dropdown. This let users apply a saved filter set in one click, without opening the full panel for routine tasks.
Within the panel, users could build a filter combination, assign it a name, and save it as a custom filter for future reuse, directly addressing one of the core requirements from the PRD.
Filter sharing was a stated requirement but fell outside engineering's scope for this release. The proposed workaround of surfacing all custom filters created by any user technically gave everyone access to others' filters, but created a new problem: the "Custom Filters" dropdown could quickly become unmanageable with hundreds of entries from across the team.
Rather than accept a broken workaround, I reframed the quick-access dropdown as "Favorited Filters", showing only filters a user had explicitly starred. This kept the dropdown lean while still enabling the sharing intent through visibility. I also added creator attribution to each filter, so users could distinguish between similarly-named filters from different teammates.
The feature is currently in development. User testing across both concepts validated the direction: the categorized side panel with search, saveable custom filters, and the Favorited Filters shortcut consistently outperformed the existing experience on task speed, filter discoverability, and user confidence.