Spotify

Time Machine

A one-week conversation design study: a voice flow that rebuilds a remembered listening era from a 7,000-song library through recognition instead of recall, with three fully written dialogue cases.

Jump to deliverable
RoleConversation Designer / Product Designer
TeamSolo
Running timeA week
ToolsFigma, Talk to Spotify (beta)
SkillsConversation Design, Voice UI, Multimodal Design, Dialog Writing
Spotify Time Machine prototype on an iPhone XS Max: the Confident conversation after five verdicts, four yes and one no, session ended and era kept

PROLOGUE

PROLOGUE

I love music. Maybe too much for my own good.

The proof is my playlist with over 7,000 songs in it. A decade of taps. I’d be lying if I said I remembered the names and lyrics of every single one, but what I actually remember are the moments in my life when I listened to them. The songs I had on repeat driving home from work last summer. My after-school rotation from sophomore year of high school. My shoegaze phase, freshman fall of college. I can see those pockets of my library perfectly. I can feel exactly what they sounded like. I just can’t name a single track inside them.

So, What’s the Problem?

So, What’s the Problem?

Talk to Spotify beta: the request
Talk to Spotify beta: the generated list

The beta auto-generates a list of songs based on my input. It doesn’t build it with me.

The library only works in one direction.

Saving and finding are wildly asymmetric. Liking a song costs one tap. Getting back the era those songs belonged to has never been possible at all. Human memory doesn’t file music by title or even by song, but rather it files by chapter: a school year, a phase, an after-school hour, a specific summer. Search accepts none of that as input.

Spotify's existing AI features generate to a vibe, while a personal listening era is a real historical set whose members you can recognize as right or wrong even when you can't recall them. The pitch is a conversation that rebuilds that era through recognition rather than recall: guesses arrive as five-second hooks, rejections prune the set and prompts to keep going widen it, producing something that sits alongside.

The library only works in one direction.

Saving and finding are wildly asymmetric. Liking a song costs one tap. Getting back the era those songs belonged to has never been possible at all. Human memory doesn’t file music by title or even by song, but rather it files by chapter: a school year, a phase, an after-school hour, a specific summer. Search accepts none of that as input.

Spotify’s existing AI features generate to a vibe, while a personal listening era is a real historical set whose members you can recognize as right or wrong even when you can’t recall them. The pitch is a conversation that rebuilds that era through recognition rather than recall: guesses arrive as five-second hooks, rejections prune the set and prompts to keep going widen it, producing something that sits alongside.

THE DESIGN QUESTION

How might we design a conversation that turns a remembered era into a living playlist, getting sharper with every “keep,” every “not that one,” and every “you’re missing some”?

How might we design a conversation that turns a remembered era into a living playlist, getting sharper with every “keep,” every “not that one,” and every “you’re missing some”?

PERSONAS

PERSONAS

Who’s Talking

Who’s Talking

Two characters share every turn of this conversation: the listener, who holds the member list but can’t recite it, and the assistant, which can play anything but can’t know which songs belong. Designing the dialog meant writing both of them down first.

Daniel

“The Era Collector”

Ten years and 7,000 liked songs deep. Remembers every era of his library by feel, and almost none of it by name.

Goals:

  • Get an era back by describing it the way he remembers it

  • Keep the songs he rebuilds somewhere findable

Pain Points:

  • Scroll collapses around row 300; search demands titles

  • Prompted playlists guess a vibe and can’t be told they’re wrong

Spotify Time Machine

“The Friend Who Was There”

Rebuilds a remembered era one five-second clip at a time, and treats every yes, no, and skip as data.

Behaviors:

  • Plays a clip instead of asking a question

  • Spends at most one question per turn

Limits:

  • Names the edge of the data instead of faking it

  • Adds nothing without a yes; saves nothing without an offer

THE DECISION TREE

THE DECISION TREE

Decision Tree

Decision Tree

One decision governs every turn: play when confident, ask one question at a time when torn, admit the edge when lost — and treat every verdict that follows as data.

Dialogue tree: three confidence trunks converge on a hooks-playing state; verdict branches loop back as repairs

Early decision tree

At a high level:

User introduces era to rebuild

AI narrows it down

AI plays 5 second clips

A collection of songs curated by user

Through conversation, user guides direction of search

User introduces era to rebuild

AI narrows it down

AI plays 5 second clips

Through conversation, user guides direction of search

A collection of songs curated by user

User introduces era to rebuild

AI narrows it down

AI plays 5 second clips

Through conversation, user guides direction of search

A collection of songs curated by user

I build decision trees that inform the AI model on how to walk with the user through their music discovery process, considering various different cases. Three key factors I stuck with were:

01

Confidence Intervals Informing Decision-Making

Before it says a word, the assistant reads how well the request matches the listening history. A tight cluster means play five clips and ask nothing. Two live readings mean spend a question, one per turn, until it lands. Thin history means admit the edge and look sideways.

02

All or Nothing — No Half-Guessing

The assistant never hedges. When it guesses, it commits: five seconds of chorus, then it listens. When it can’t see the era, it says so out loud instead of faking a set. A wrong guess costs exactly one “no.”

03

Make It an Iterative Process

Every verdict is data. Yes adds one song; no leaves it out and steers the next clips away from its neighbors; skip sets it aside; a named gap widens the search; one remembered song re-centers what comes next. Nothing enters the era without a yes, and a correction never restarts the conversation.

THE USER FLOWS

THE USER FLOWS

Three Conversations, Turn by Turn

Three Conversations, Turn by Turn

Each sample conversation, drawn turn by turn in the whiteboard vocabulary: blue is what you say, green is what Spotify says and shows, diamonds are what the queue does after every verdict. Switch cases with the tabs, and tap a flow to read it at full size.

Case A - five clipshover to zoom · tap to enlarge
Case A - Confident

The cues line up, so it just plays

  • “Play the songs I was into during my shoegaze phase, freshman year of college.” The cues corroborate one tight cluster in the history, so no question is asked.
  • Five clips play and a verdict after each: yes, yes, yes, “Not that one,” yes.
  • Four out of five in. Spotify offers to keep the era as a playlist, and it becomes Shoegaze Phase.
  • Saved to user's library as a playlist. It grows one yes at a time, curated by user.

Act 3: Final Prototype

Act 3: Final Prototype

Spotify Time Machine

A conversation that rebuilds a remembered era, one membership judgment at a time.

The Happy Path

Genre plus era is the strongest cue. When the candidates cluster in time and sound, the system proposes a five-hook seed set and gets out of the way.

Five-second hooks, chorus first — recognition over recall

Every yes adds one song; saving is an offer, not a step

Talk to Spotify▶ hooks
Seed set · 5 hooks
a tight cluster from that fall · five hooks, chorus first
Oct
Nov
Nov
Dec
Jan

Sculpting

Every verdict is data. “Not that one” drops the song and steers the next clips away from its neighbors; “you’re missing some” widens the search along the dimension you named.

Precision repair: prune the song, keep a tappable trail chip

Recall repair: new candidates arrive with evidence badges

Talk to Spotify▶ hooks
Widening · 3 hooks
widened along session context · three more
Jul 12–28
✓
Jul 20–Aug 9
✓
Aug 1–18
Aug 4–22
Aug 10–24
Aug 15–30
evening plays
evenings
evening plays
evenings
evening plays
evenings
Not this era ×1 — tap to restore

The Graceful Failure

When history runs out, the system names the boundary, rebuilds from what you still return to, and files a thin era in Made For You that grows only when you say yes.

The edge is named, never faked

One anchor song outweighs every signal in the account

A seedling era grows one yes at a time — no pings

Talk to Spotify● live
Era saved
Made For You · system-kept eraAfter School5 songs · grows one yes at a time
On RepeatdaylistAfter School
a thin set is a seedling, not a failure · grows one yes at a time · no pings

The Happy Path

Genre plus era is the strongest cue. When the candidates cluster in time and sound, the system proposes a five-hook seed set and gets out of the way.

Five-second hooks, chorus first — recognition over recall

Every yes adds one song; saving is an offer, not a step

Talk to Spotify▶ hooks
Seed set · 5 hooks
a tight cluster from that fall · five hooks, chorus first
Oct
Nov
Nov
Dec
Jan

Sculpting

Every verdict is data. “Not that one” drops the song and steers the next clips away from its neighbors; “you’re missing some” widens the search along the dimension you named.

Precision repair: prune the song, keep a tappable trail chip

Recall repair: new candidates arrive with evidence badges

Talk to Spotify▶ hooks
Widening · 3 hooks
widened along session context · three more
Jul 12–28
✓
Jul 20–Aug 9
✓
Aug 1–18
Aug 4–22
Aug 10–24
Aug 15–30
evening plays
evenings
evening plays
evenings
evening plays
evenings
Not this era ×1 — tap to restore

The Graceful Failure

When history runs out, the system names the boundary, rebuilds from what you still return to, and files a thin era in Made For You that grows only when you say yes.

The edge is named, never faked

One anchor song outweighs every signal in the account

A seedling era grows one yes at a time — no pings

Talk to Spotify● live
Era saved
Made For You · system-kept eraAfter School5 songs · grows one yes at a time
On RepeatdaylistAfter School
a thin set is a seedling, not a failure · grows one yes at a time · no pings
Three Conversations · Voice Prototype01 / 03
Talk to SpotifyVoice
You

Play the songs I was into during my shoegaze phase, freshman year of college.

gate · confident — propose, don’t interrogate
Spotify

Freshman year, got it. There’s a tight cluster from that fall. Here’s a taste of five — yes or no after each.

5 clips · chorus first
Oct
Nov
Nov
Dec
Jan
Spotify

Four in. I’ll keep them coming, one at a time. Want me to keep this era around as we go, like your Daylist?

4 in · 1 out · more from that fall queued
▶Playing · 4 in · clip 6 up next
You

Yeah. Call it Shoegaze Phase.

Spotify

Done. It’ll be in your Made For You whenever you want that fall back.

Saved to Made For You Shoegaze Phase 4 songs · freshman fall · grows one yes at a time
Made For You
On Repeat
Daylist
Shoegaze PhaseNew
era kept · findable, renamable, grows one yes at a time
▶
01 · five clips

Confident

Cues corroborate, so the system plays its guess and just listens.

Talk to SpotifyVoice
You

Play the songs I listened to a lot at the end of my junior year summer.

gate · torn — one question per turn, each where it splits the space
Spotify

Quick check. Junior year of high school, or college?

Say one, or tap
High schoolCollege
You

College.

Spotify

Okay. And when was that, roughly?

Say a year, or tap
202520242023
You

Last year.

Spotify

That puts us in late summer last year. Your heavy rotation looked like this — yes or no after each.

6 candidates · most-played first
Jul 12
Jul 20
Aug 1
Aug 4
Aug 10
Aug 15
Spotify

Got it. That one’s out, and I’ll leave the one you skipped aside. Anything missing so far?

Set so far · 4 in · 1 out · 1 skipped
1 out · Undo
You

Yeah. You’re missing the stuff I played driving home from my internship. More of that.

verdict · widen → along the direction the user named
Spotify

Okay, leaning into your evening listening from those weeks. Three more.

3 more · from your evening plays, Aug
evening plays
Aug
evening plays
Aug
evening plays
Aug
Spotify

Then that’s the center. Seven in, and everything I bring next comes from around it. Keep it as an era?

The song of that summer
Anchor · what’s next re-centers on it
★
▶Playing · 7 in · next clips from around it
You

Yeah. End of Junior Summer.

Spotify

Kept. It’s with your other mixes, and it’ll sharpen as you correct it.

Saved to Made For You End of Junior Summer 7 songs · sharpens as you correct it
Made For You
On Repeat
Daylist
End of Junior SummerNew
era kept · corrections persist after the session
▶
02 · nine clips

Torn

One cue, two timelines, no calendar. The system converses with the user to scuplt the set one verdict at a time.

Talk to SpotifyVoice
You

Play the songs I’d listen to after school in sophomore year of high school.

gate · lost — name the boundary, never fake it
Spotify

Honest answer: your history here only goes back to senior year, so I can’t see those afternoons directly. But I can look sideways — songs from that era you’ve saved or replayed since. Want me to try?

Your listening history starts senior year
sophomore yrsenior yr → account startsnow
You

Sure.

Spotify

Here’s what you’ve kept coming back to from around then — yes or no after each.

Saved or replayed since · from around then
replayed ’23
from ’16–17
saved ’24
from ’17
replayed ’23
from ’16
saved ’24
from ’17–18
You

Some of these, yeah. But the real ones aren’t here.

inference ran dry → ask for one seed
Spotify

Then anchor me. Name one song you know was in that rotation, and I’ll build outward from its era and sound.

Anchor me
Name one song from that rotation.
One song is enough to start
You

Location, by Khalid.

verdict · anchor → build outward from era + sound
Spotify

Good anchor. Building the after-school set around it. Tell me what belongs as they play.

Location — Khalid
Anchor · era + sound
★
4 from its era and sound
similar · ’16
similar · ’17
similar · ’16
similar · ’17
Spotify

Kept two more — that’s five. This one’s going to build slowly. Want me to keep After School in your Made For You, with a few more to check whenever you’re back?

5 in · 2 skipped · nothing added on its own
You

Yeah, do that.

Spotify

It’s there now. No pings. When you’re back, I’ll have a few more clips ready.

Saved to Made For You After School 5 songs · grows one yes at a time · no notifications
Made For You
On Repeat
Daylist
After SchoolNew
era kept · a thin set is a seedling — the edge of the data becomes a reason to return
▶
03 · eight clips

Lost

The request cannot be fulfilled with the data available. One remembered song becomes the center.