# Data Visualization
Vibe.co · 2024 · Lead Product Designer · Project
Source : https://albancarmet.com/project/data-visualization
A real-time dashboard turning CTV campaign data into actionable insights.
In one line : Opened by half of active advertisers
Team : PM, 1 engineer and me · Duration : 3 weeks, 4 days of design · AI : None

## At a glance

- Problem : Advertisers relied on raw exports to understand their campaigns, and one of our largest clients was ready to leave for lack of a dashboard.
- What I did : Designed a modular view on one grid and one interaction pattern, in four days of design, so it could ship module by module.
- Result : 48% of active advertisers opened it over three months, and 83% rate it 4 or 5 stars, above the 70% target.
- Limit : Only 29% come back the following week, against a 40% target, and the export never took off.

## The company

Vibe is a self-serve advertising platform for connected TV. Brands of every size, from fast-growing direct-to-consumer labels to large advertisers, buy ads on the major streaming channels, target their audiences — including Walmart shopper audiences — and measure the sales they drive, the way they would on search or social.
- Sector : Ad tech · connected TV
- Customers : Thousands of brands, from DTC to large advertisers
- My time there : Since Dec. 2023 · Lead Product Designer

## The product : The platform

Everything on Vibe revolves around the campaign, and three steps come up throughout this page.
- Upload creatives : A creative is a video ad. Advertisers upload theirs to the platform.
- Launch a campaign : A campaign sets a goal and is split into strategies: who to reach, with what budget.
- Measure : The dashboard and reports show spend, reach and the sales driven.

## Process

Each step fed the next. None of them used AI.
- Respond : A key account needed this view: we had to show, fast, that we could deliver it. (without AI)
- Select : The associate PM’s shortlist of visualizations per use case, on d3.js charts adapted to our brand. (without AI)
- Structure : Four days of design: one grid and one interaction pattern for every module. (without AI)
- Ship : Module by module, within the three weeks. (without AI)
- Measure : Adoption, an in-app survey and weekly return visits. (without AI)

## The problem — Advertisers had the numbers, not the story

Reporting came down to raw CSV exports and siloed data, and clients had to present their results without being analysts.
And one of our largest clients, who needed this kind of dashboard, was ready to leave.

## The approach — Rethink the structure, not the ambition

Three weeks in total, four days of them for design. So the work went into a structure: modules on a shared grid, with one interaction pattern, that could ship one at a time.

## The trade-offs — Four decisions, and what each one cost

Here is what each one gave up.

## What shipped — Insights: every module on one grid

A new view in the platform, where targeting dimensions and creative performance finally sit side by side.

## Constraints

- Attribution data that is complex by nature : TV attribution mixes reach, spend, conversions and targeting dimensions. Raw, it doesn’t tell a story.
- Readers who aren’t analysts : Clients had to present their results as-is, without reformatting or interpreting the data first.
- Three weeks, four days of design : Three weeks in total, four days of them for design. The answer was not to cut ambition, but to rethink the structure.

## Signals and research

No formal discovery. The decisions rested on these signals.
- Key account — A major client threatening to leave : One of our largest clients needed this kind of dashboard and was ready to churn. We had to show, fast, that we could respond.
- Product (APM) — A shortlist of visualizations per use case : The APM had mapped which visualizations best answered the platform’s use cases. I started from that list, using d3.js’s ready-made charts as a base and reskinning them to our branding.
- Existing product — Data already collected, never shown : Targeting dimensions and creative performance existed in the platform, but no view brought them together.

## Decisions and trade-offs

- Ship module by module rather than one complete dashboard. Decided with : My PM and the engineer. Rejected : The full reporting suite at once — Wait until every visualization is ready, and release a complete, coherent dashboard. Kept : Standalone modules, released in phases — Each visualization is an independent module on a shared grid. Modules not yet released show a “Coming soon” state. Why : A major client threatening to churn: showing we could react mattered more than shipping everything at once. Independent modules let us release them one after the other. What it cost : A complete reporting experience from day one: for a while, part of the dashboard was a promise. What makes up for it : Explicit “Coming soon” and “no data yet” states, so a missing module never reads as a bug.
- Export each module as an image rather than build a report engine. Decided with : My PM and the engineer. Rejected : A full report export — My first idea: generate a complete report assembling every module. Considered, but never designed: too long to build. Kept : One download per module — Every module has its own download button, which exports it as a ready-to-present image. Why : Development and integration time. Exporting each module as an image was far simpler, and users can drop the images into a PowerPoint. What it cost : A presentation in one gesture: users still build their deck themselves, image by image.
- One interaction pattern for every module. Decided with : My PM and the engineer. Rejected : Controls tailored to each chart — Place each module’s controls wherever its layout and width allow. Kept : Same controls, same place, whatever the width — The metric selector and the download button sit in the same spot in every module, wide or narrow. Why : Consistency builds a habit: users never have to look for how a module works. What it cost : Some layout freedom: narrow modules have to make room for the same controls as wide ones.
- Rebalance the grid around the data that matters most. Decided with : My PM and the engineer. Rejected : The first version of the grid — Module widths followed the order of the list rather than the weight of each piece of data. Kept : Widths set by importance — Wider modules for the most important data, lighter layouts for some modules, and no white space unbalancing the page. Why : Put the emphasis on the most important data, and avoid white space that would have unbalanced the page. What it cost : The simplicity of a uniform grid: each new module now needs its width decided.

## What shipped

- Data Visualization Core : problem :  Solution : 

## Results

Half of active advertisers adopted the view and rate it highly. But use stays occasional, and the export never took off.
(August → October 2026 · product data and in-app survey)
- 48% : Of active advertisers opened Insights over three months
- 83% : 4 or 5 stars in the in-app survey — target was 70%
- +60% : Weekly visits over twelve weeks
- 30% → 36% : Report readers who move on to Insights
- 29% : Come back the following week — target was 40%
What worked:
- Agencies use it in their own client reports, mostly the map and the audience breakdowns (observed by CSMs).
- One module stands out: the geographic heatmap is the most used, most requested and most commented block.
What didn't work:
- No habit yet: the median advertiser opens Insights 2 weeks out of 12, and weekly return sits at 29% against a 40% target.
- The module export stayed marginal: fewer than one Insights account in ten downloads, and it isn’t growing.
- No measurable effect on support: CSV exports didn’t drop, and nothing shows Insights replacing them.

## Still open

A view people like, not yet a habit. Most advertisers come back only now and then, and the demand concentrates on the geographic heatmap. Building the presentation also stays manual: generating one straight from campaign data is what the agentic projects later set out to do.
