Skip to content
← All work

iHeartRadio · Highlights & Clips

In progress

Teaching an app what a clip is about.

Defining the content taxonomy and personalization strategy for short-form clips across iHeartRadio. AI as a working partner, and me in charge of the decisions.

Client
iHeartRadio, via Code & Theory
My role
Product Designer: led taxonomy & personalization strategy
Worked with
Product, Engineering, Data, Legal and our clips partner
Timeline
2026 · ongoing
Tools
Figma · Google Sheets · Claude
Clips across iHeartRadio surfaces: Home carousel, station page and search, on phone screens

The problem

iHeart was adding video clips across the app, with no shared way to describe them. No description, no personalization.

What I did

Defined a taxonomy that tags most of each clip automatically, mapped where clips live, and turned it into personalization rules.

How

With AI as my drafting partner: faster first versions, my decisions.

Status

Taxonomy done and shared with the clips partner. Personalization in progress.

01How I worked with AI

I led the direction. AI drafted.

I used Claude as a working partner across the whole project. The loop was simple: I set the direction, it proposed a first version, I pushed back, and we simplified until it was right. That freed my time for the part that matters: decisions and conversations with the team.

  1. Me

    Set the direction

  2. AI

    Drafts a first version

  3. Me

    Push back

  4. Together

    Simplify until it’s clear

Back to the start

Turning points: where my judgment changed the work

Simplifying the taxonomy.

The deeper versions were confusing, so we cut layers until it clicked. “YES! now is way more clear.”

Who matches clips to listeners.

I realized the clips partner wouldn’t personalize, they’d only hand us tagged clips. That changed how we framed the whole strategy. “I don’t think they’ll be doing the matching. I think they only give us the clips with the tags.”

Time of day.

People might want something from the previous day. So time of day became a way to know which show someone hears, not a switch for content. “What if they want to catch up on yesterday’s show?”

Segments.

They weren’t ready. We moved them later and rewrote the questions in plain words. “The segments still need work, we didn’t do deep work on that.”

The right format for each audience

For Engineering and Data

Spreadsheets

They’re not designers, so dropdowns and yes/no answers get faster replies.

For design reviews

Plain Figma boards

Visual, simple, easy to comment on.

For quick alignment

Short Slack drafts

One question, one decision, no meeting needed.

Where AI helped, and where I was needed

AI helped with

  • Checking facts against iHeart’s public data: real genres, markets and categories instead of guessed ones.
  • First drafts of tables, boards, decks and messages in minutes.
  • Turning a broad ticket into clear steps, and messy questions into yes/no ones.
  • Keeping files in sync when I changed wording.
  • Spotting gaps, like rules that depend on data clips don’t carry yet.

I was needed for

  • The key insights: who does the matching, catch-up listening, the legal constraint. They came from me and my team.
  • Simplifying. First versions were always too complex.
  • Checking things live in the product and in tools AI couldn’t reach.
  • Every decision, and every conversation with stakeholders.

02Context

Clips everywhere, but no idea what they were about.

iHeartRadio started bringing short video clips (highlights from radio shows and podcasts) into the app: on Home, in Search, and on the Radio and Podcasts tabs. Clips arrive from an external partner platform. The goal was to show each listener the clips they’d actually care about. The catch: personalization only works if you know what each clip is about, and we didn’t have a shared way to describe that.

For listeners

The same generic clips for everyone, no matter what they listen to.

For iHeart

No common language to tag clips, so no way to personalize, measure or scale them.

The reframe

Personalization depends on taxonomy. Before deciding what to show anyone, we had to agree on how to describe every clip.

03Research

How do others decide which clip you see?

I looked at how clip and short-video experiences organize and personalize content. Three very different models came up, and each told us something about where iHeart should sit.

Apple Podcasts

  • How it’s organized: Homepage split into categories; “New” and “Popular” modules sit outside the tag system.
  • How it personalizes: Editorial + popularity, not user-specific.
  • For iHeart: Categories help browsing, but alone they don’t feel personal.

YouTube Shorts

  • How it’s organized: A separate vertical feed; tapping a Short drops you into a chain of related clips.
  • How it personalizes: Two layers: explicit (subscriptions) to enter, algorithmic once inside.
  • For iHeart: Mix what people tell you with what they do.

Instagram Reels

  • How it’s organized: No visible taxonomy at all, just a pure “For You” feed.
  • How it personalizes: Fully implicit: watch-through and behavior.
  • For iHeart: Powerful, but needs data iHeart clips didn’t have yet.

So we defined three ways to personalize, and what each one needs

Required

Based on behavior

What you do in the app

Plays, skips, replays and long-term topic affinity. The system infers it, no action needed.

Optional

Based on your choices

What you tell the app

Thumbs up or down, and picking categories you want more of.

Optional

Based on everyone

What all listeners do

What’s being played most right now, and what’s newest.

All three depend on the same thing: every clip needs good tags.

04Taxonomy

Most tags can come from the show.

An earlier taxonomy proposal described content through many lenses: mood, activity, time of day. It was rich, but too broad to apply to thousands of clips. I simplified it around one idea: a clip inherits most of what it is from the show it was cut from. Only a few things need to be read from the clip itself.

  1. 01

    The show it came from

    Known when the clip is made

    e.g. The Breakfast Club, Z100

  2. 02

    Copied from the show

    Automatic once set up

    Source

    Category or genre

    Location

    Explicit

    Language

  3. 03

    Read from the clip

    AI suggests, a person confirms

    Topic

    Local / national / global

    Evergreen or timely

Only level 3 needs work per clip, and even there AI does the first pass.

  • Morning-show hosts talk about the Super Bowl halftime show

    Category (from the show): Live Radio · Hip Hop

    Topic (from the clip): Music · National · Timely

    Keyword: Power 105.1 · The Breakfast Club

  • Morning traffic update

    Category (from the show): Live Radio · Pop

    Topic (from the clip): News · Local · Timely

    Keyword: Z100 · New York, NY

  • Comedy podcast hosts debate the Grammys

    Category (from the show): Podcast · Comedy

    Topic (from the clip): Entertainment · National · Timely

    Keyword: Las Culturistas · Grammys

  • Hosts explain how a famous historical event happened

    Category (from the show): Podcast · Society & Culture

    Topic (from the clip): History · Global · Evergreen

    Keyword: Stuff You Should Know

Category describes the show; topic describes the clip. A comedy podcast can talk about the Grammys, so its topic is Entertainment.

05Placement

Different surfaces, different jobs.

With the taxonomy in place, I connected it to where clips live. Each surface uses a different mix of tags and personalization: Home leans on behavior, Search on what’s popular and what you search for, Radio on stations and location, Podcasts on the show you’re listening to.

1. **Home** · Highlights carousel · Low lift · Live radio first · Tags

Source, Radio genre, Podcast category, Topic, GeographyYour listening behavior, plus optional thumbs up/down.

2. **Radio** · Station highlights shelf · Medium lift · Live radio · Tags

Source, Radio genre, Topic, GeographyClips from that station, ranked by topic. Geography keeps them local.

3. **Podcasts** · Episode clips shelf · Medium lift · Podcasts · Tags

Source, Podcast category, TopicClips from that show, matched to the episodes you’ve heard.

4. **Search** · Clips discovery row · Low lift · Podcasts + radio · Tags

Source, Radio genre, Podcast category, TopicWhat’s popular and new, browsable by topic. Driven by your search.

I started with the low-lift placements, Home and Search, so we could launch clips without new screens. Radio and Podcasts shelves come next.

06Personalization · in progress

From signals to clips, one question at a time.

Phase two turns the taxonomy into rules: for every signal iHeart has about a listener, which clips we show, which tags make it work, and what happens when there aren’t enough clips. We agreed on a work order before building anything, so each step answers what the next one needs.

  1. 01

    Done

    User data checklist

    23 signals in 6 groups, with dropdowns so Engineering and Data can answer fast.

  2. 02

    Done

    What we show

    For each signal: the clips we’d show, the tags that make it work, and the fallback.

  3. 03

    Next

    Placements

    Which rule runs on which surface.

  4. 04

    Later

    Personas

    Listener segments, once the basics are proven.

23
signals about a listener

Everything iHeart could know about someone. For each one: do we have it, and can we use it to pick clips?

  • Account & context
  • User choices
  • Listening behavior
  • Station data
  • Highlights behavior
  • Segments & targeting
  • Location / market
  • Logged in or guest
  • Age, ZIP
  • Time of day, device
  • Genres picked at sign-up
  • Presets
  • Followed stations
  • Followed podcasts
  • Saved playlists
  • Thumbs up / down
  • Recently played
  • Listening time per station
  • Time of day per station
  • Episode completion
  • Searches
  • Station show schedules
  • Clips watched, replays
  • Clips skipped
  • Tap to full show
  • Trending / popular / new
  • Listener segment
  • Segments for guests
  • A/B test group
  • Presets + time of day per station

    What we show: Clips from the shows on your preset stations

    Tags it uses: Station name · Show name

    If there aren’t enough clips: The station’s most popular clips, then same genre

  • Time of day per station + show schedules

    What we show: Clips from the show you actually hear, even on stations that aren’t presets

    Tags it uses: Show name

    If there aren’t enough clips: Clips from the station

  • Location / market

    What we show: Clips from your city’s stations

    Tags it uses: City · Local topic

    If there aren’t enough clips: National clips

  • Clips skipped

    What we show: Less of that topic or show

    Tags it uses: Topic · Show name

    If there aren’t enough clips: Not needed

A sample of the signal-by-signal rules. The second row comes straight from the time-of-day insight: it tells us which show someone hears, not what mood they’re in.

Designed with Legal, not around it

When the team flagged existing legal restrictions on user data, I split every rule into two versions, “low legal risk” and “every option”, with a Legal column. The conversation became a yes or no per row instead of a blocker.

07What I learned

AI made me faster at everything around a decision. The decisions still came from people.

Phase one, the taxonomy, is done and shared with the clips partner. Personalization is in progress.

Answers come only from my case studies. Written by me, no live AI. Still a work in progress: I'm not as smart as Claude (yet).