# Creative Library
Vibe.co · 2025 · Lead Product Designer · Project
Source : https://albancarmet.com/project/creative-library
A library that centralizes video creatives, organized by advertiser and by labels.
In one line : Library uploads ×4 in eight months
Team : EM, 1 engineer, PM and me · Duration : 1.5 months · AI : None

## At a glance

- Problem : Advertisers uploaded the same videos again for every campaign, with nowhere to find what already existed.
- What I did : Designed a library tied to each advertiser that feeds campaign creation, with labels rather than folders and a single list view.
- Result : In eight months, the library’s share of all uploads rose from 8% to 22%, and monthly uploads through it were multiplied by 4.
- Limit : The library shows its full value beyond a few dozen creatives, a threshold only a small minority of accounts reach.

## 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.
- Benchmark : Competing ad platforms, then Google Drive, Box, Dropbox and Proton Drive as a source of patterns. (without AI)
- Frame : Every creative tied to an advertiser, and a library that feeds campaign creation. (without AI)
- Design : Labels, one list view, bulk upload and bulk actions. (without AI)
- Ship : With one engineer, in a month and a half from design to development. (without AI)
- Measure : Uploads, sessions and creatives blocked at review, over eight months. (without AI)

## The problem — The same videos uploaded again and again, with nowhere to find them

Creatives lived inside each campaign. Engineers kept finding identical files stored as “(1) Creative name”, “(2) Creative name”: the problem wasn’t storage, it was having nowhere to find what already existed.
Competing ad platforms already offered a library. The point wasn’t to prove the need, but to close the gap.

## The approach — A library that feeds campaign creation, not a standalone destination

File storage tools were a source of patterns, not a model: their flat storage ignores the notion of advertiser. Every option was weighed by what it would cost in campaign creation.

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

With one engineer and six weeks, every feature had to earn its place.

## What shipped — Upload once, reuse everywhere

Bulk upload with labels, existing creatives deployed straight into new campaigns, and bulk actions to keep the library clean.

## Constraints

- A creative always belongs to an advertiser : On the technical side, every creative had to be tied to an advertiser — and a single account often manages several of them.
- Campaign creation filters by advertiser : Manual campaign creation starts by picking an advertiser, then only shows that advertiser’s creatives. The library had to respect that partition.
- One engineer, six weeks : With a single engineer and a month and a half from design to development, every feature had to earn its place.

## Signals and research

No formal discovery: the need was established — other ad platforms already offered this kind of feature. The decisions rested on these signals.
- Market — A gap to close : Competing ad platforms already offered a creative library. The point wasn’t to prove the need, but to close the gap.
- Engineering — Duplicates nobody could see : Engineers kept finding identical creatives stored under different names — “(1) Creative name”, “(2) Creative name”… — that only their metadata gave away. The problem wasn’t storage: it was having nowhere to find what already existed.
- Benchmark — Google Drive, Box, Dropbox, Proton Drive : File storage tools face the same organization problems at scale. They served as a source of patterns, not a model: their flat storage ignores the notion of advertiser entirely.
- Existing product — The campaign creation flow : The library wasn’t a standalone destination: it had to feed campaign creation. Every option was weighed by what it would cost there.

## Decisions and trade-offs

- Assign each creative to an advertiser at upload, not later. Decided with : My PM and the lead PM. Rejected : Assign later, whenever — Free drag-and-drop upload, no advertiser required. Assignment happened afterwards: on the fly during campaign creation — where unassigned creatives showed up and were attached to the campaign’s advertiser once selected — or from the library. Kept : Assign during upload — The advertiser is picked inside the upload flow, once for the whole batch. A creative never exists without an advertiser. Why : The rejected option was the most comfortable at upload, but it moved the complexity into manual campaign creation: unassigned creatives had to be displayed there, attached on the fly, and explained. Forcing assignment at upload kept that flow simple — and took far less time to build. What it cost : One-gesture upload. Users now have to pick an advertiser before dropping their files, even when they only want to store them. What makes up for it : Assignment happens once per batch, on the same screen as labels: the added friction comes down to a single dropdown.
- Labels instead of folders. Decided with : The product team. Rejected : A folder tree — The first iteration organized the library like a drive: folders, subfolders, breadcrumb. Flexible and precise. Kept : Color-coded labels — Each creative carries one or more labels, filterable from the left column. One level, no tree to maintain. Why : Development time, and proportion: a folder tree is built for thousands of files. Against the number of creatives a client actually manages, it would have been oversized. What it cost : The precision of hierarchical filing, and a mental model everyone already knows. In hindsight : Usage data proved the call right: most libraries hold only a handful of creatives. Folders would have had nothing to organize.
- One view only: the list. Decided with : My PM and the lead engineer. Rejected : A thumbnail view — A list / thumbnail toggle, to recognize a creative by its image. Why : Development time, but above all a product call: a thumbnail only fits a few pieces of metadata, while a list can line up as many as needed — and every field added later would have needed a place in both views. What it cost : Visual recognition: you find a video ad faster by its image than by its name. What makes up for it : Every row keeps a thumbnail and a one-click video preview.
- Postpone usage tracking. Decided with : My PM and the lead engineer. Rejected : Know where a creative runs — A “Creative usage” column showed how many campaigns used each creative, and a panel listed them, with direct access to each one. Why : Development time only. The idea wasn’t judged wrong — it was postponed. What it cost : An answer to “can I edit or delete this creative without breaking a live campaign?” — which the library still can’t give. What makes up for it : The designs are ready: the feature can come back without starting from scratch.

## What shipped

- Bulk Upload & creatives labeling (Multi-upload experience combined with advertiser assignment and label organization) : problem : Managing creatives across multiple campaigns resulted in scattered files, inconsistent naming conventions, and missing tracking metadata. Advertisers lacked an efficient way to tag and categorize assets at scale. Solution : We created a single ingestion hub where users can drag-and-drop batches of assets. We introduced a mandatory contextual tagging step right within the upload sequence, enforcing metadata capture before upload completion.
- Multi-campaign creative attribution (Select and rapidly deploy existing assets directly into new active campaigns.) : problem : Advertisers were forced to re-upload identical creatives for every new campaign, leading to redundant data storage, versioning nightmares, and significantly slower campaign launch times. Solution : We integrated a 'Library Picker' component directly into the campaign setup wizard. Instead of uploading new files, users can search their governed library, select proven assets, and inject them into ad sets with one click.
- Bulk actions and deletion (Acting on several creatives at once, with a safeguard before anything irreversible.) : problem : As libraries grew, cleaning them up one creative at a time became tedious — and deleting a file is irreversible. Solution : We added multi-selection with grouped actions — label, edit, delete — and an explicit confirmation before any irreversible deletion.

## Results

In eight months, the library went from a marginal channel to the main driver of upload growth at Vibe.
(February → September · product data)
- ×4 : Monthly uploads through the library
- 8% → 22% : Library share of all uploads
- ×14 : Upload sessions
- ×13 : Actions in the library
- 8.2% → 3.2% : Creatives blocked at review — now level with campaign creation (3.1%)
People don’t just drop files, they maintain them — Share of active users who…
- 63 % : preview
- 48 % : upload
- 29 % : rename
- 18 % : label
September is the first month in which uploads across the whole platform broke out of a six-month plateau (about +16%). Over the same period, uploads from campaign creation grew only 21%, against ×4 for the library: the growth came from there.

## Still open

The bottleneck is no longer adoption — it’s library size. The tool shows its full value beyond a few dozen creatives — a threshold only a small minority of accounts reach.
