spotify4 min read

Curated summary

Inside the Archive: The Tech Behind Your 2025 Wrapped Highlights | Spotify Engineering

Read original(opens in new tab)

Spotify’s 2025 Wrapped Archive identified up to five remarkable listening days for each eligible user and turned them into personalized, LLM-generated stories. A distributed pipeline, carefully designed prompts, model distillation, and massive-scale pre-generation made it possible to create roughly 1.4 billion reports before launch. The system prioritized factual grounding, creative consistency, safety, and reliable parallel storage.

Identifying Remarkable Listening Days

  • Spotify used a priority-ordered set of heuristics to evaluate each user’s full year of listening.
  • Straightforward categories included:
    • Biggest Music Listening Day
    • Biggest Podcast Listening Day
    • Biggest Discovery Day, based on first-time artists
    • Biggest Top Artist Day
    • Biggest Top Genre Day
  • More nuanced categories detected:
    • Nostalgic listening and throwback-heavy sessions
    • Unusual listening patterns that differed from a user’s typical taste
    • Contextual dates such as birthdays and New Year’s Day
  • Candidate days were ranked by narrative potential and statistical strength, reducing hundreds of millions of events to as many as five standout days per user.
  • A distributed data pipeline aggregated the results and stored listening data in object storage.
  • Messaging queues then moved each user’s data asynchronously into report generation.

Prompt Engineering for Reliable Stories

  • Spotify spent more than three months iterating on prompts and evaluating edge cases.
  • The system prompt established:
    • Traceability to real listening behavior
    • A witty, sincere, and quietly playful tone
    • Safety constraints excluding references to drugs, alcohol, sex, violence, and offensive language
  • User prompts supplied:
    • Detailed daily listening logs
    • Precomputed statistics, since LLMs are unreliable at arithmetic
    • Overall Wrapped data
    • The remarkable-day category
    • Previously generated reports to reduce repetition
    • The user’s country for appropriate spelling and vocabulary
  • Outputs were improved through prototype comparisons, LLM-based judging, human review, and feedback from creative, technical, and safety teams.

Distilling the Model for Scale

  • Larger frontier models produced strong results during prototyping but were too expensive for more than a billion generations.
  • Spotify generated high-quality reference outputs and curated them into a reviewed “gold” dataset.
  • A smaller, faster production model was fine-tuned on that dataset.
  • Direct Preference Optimization (DPO), based on curated human A/B evaluations, further aligned the smaller model with the preferred output style.
  • The resulting model achieved preference performance comparable to the larger baseline.

Generating 1.4 Billion Reports

  • Approximately 350 million users were eligible, with up to five reports each.
  • Spotify pre-generated about 1.4 billion reports before Wrapped launch.
  • The system sustained thousands of model requests per second over several days.
  • After remarkable days were computed, snapshots were published to a pub/sub queue.
  • Reports were generated sequentially per user so earlier reports could inform later ones and prevent repetition.
  • Real-time dashboards tracked throughput, reliability, errors, and projected completion time.
  • The generation engine ran continuously for four days, followed by checks for missing reports, inconsistencies, and necessary re-generation.

Designing Storage for Concurrent Writes

  • Completed reports were stored in a distributed, column-oriented key-value database optimized for high-throughput writes.
  • Each user occupied a single row, with separate columns representing completed remarkable days.
  • Instead of maintaining a serialized list—which could cause race conditions during read-modify-write operations—each date received its own column qualifier in YYYYMMDD format.
  • Independent reports could therefore be written concurrently to separate cells without locks or coordination.
  • Report content was written first, followed by lightweight metadata marking the report complete.
  • This ordering prevented the system from exposing a completion marker before the underlying report was safely stored.

Practical Conclusion

Building Wrapped Archive required treating creative AI generation as a large-scale production system: ground outputs in structured data, use smaller specialized models when volume demands it, evaluate continuously, and design storage schemas that make concurrency safe by default.

Continue with another curated summary.