MUSIC LIBRARY ANALYSIS MODULE
loading Music_Library.xlsx...
3,500 songs · 57 genres · parsing...
playlist engine ready
SYSTEM READY
WAZIRIGARUBA.COM · MUSIC SYSTEM LOG
3,500 tracks · 57 genres
Library: Music_Library.xlsx
STATUS · ANALYZED
Waziri Garuba · May 2026 · Austin, TX

3,500 Songs.
One Weekend.
Zero Time.

How I turned a decade of music into three perfect playlists
for a backyard party — the night before it happened.

Scroll to read the story
Act I

I Had Too Much Music
and No Music at All.

The party was Saturday. Steaks, Cakes & Lemonade — forty people, backyard and cul-de-sac, a full six hours of hosting. Somewhere in the planning doc it said: "music finalized by May 26." It was May 27.

I had a music library. 3,500 songs. A decade of buying, downloading, and syncing music across every platform I'd touched since iTunes was the entire world. Songs from Nigeria and Atlanta, from New York slow-jam sets and post-workout Spotify queues, from road trips and Sunday mornings and a phase in 2019 where I listened exclusively to movie soundtracks for reasons I've since forgotten.

All of it was in a single Excel file. 3,500 rows. No ratings worth trusting. No play counts that meant anything. No playlists. Just a list of songs and the weight of every moment I'd thought "I should organize this someday."

"Someday was now. The party was tomorrow. And I had a terminal open."
Act II

What Was Actually
Inside the Library.

The first thing Claude Code did was open the file. Not with a spreadsheet app. With Python — reading the XML underneath the Excel format directly, parsing shared strings, decoding cell values, reconstructing the data row by row. Two sheets. Two different worlds.

Total Tracks
3,500
Genres
57 distinct
Rated Tracks
92 (of 3,500)
Play Count Data
208 tracks, max: 2
Dominant Genre
Hip-Hop/Rap — 739
Second Biggest
Soundtrack — 597

The data told a story before a single playlist was built. The two signals you'd normally use to rank music — ratings and play counts — were nearly useless. Play counts maxed out at 2, most songs had zero. Star ratings covered less than 3% of the library. This was not a curated collection. It was an archive.

There was also a hidden encoding problem. Excel had stored every song duration as a fraction of a day — but in the wrong format. "Take On Me" showed up as 0.159. Multiplied out, that looked like 229 minutes. The real song is 3 minutes 49 seconds.

The fix: Excel had read MM:SS as HH:MM, inflating every duration by 60x. One conversion formula. All 3,500 songs corrected. The kind of error that would have broken any manual approach silently.

# Decode song duration from Excel format
raw_value = 0.15902777
total_seconds = raw_value × 24 × 60
# → 229.0 ... but that's seconds
mins = int(229 // 60) # → 3
secs = int(229 % 60) # → 49
→ "Take On Me" → 3:49 ✓
Act III

The Game Plan.
Three Vibes. Six Hours.

The event plan already had the answer. Buried in the party planning doc I'd written weeks before was a music section — three playlists, three time windows, each with a named vibe and a list of artists. I hadn't connected the two problems. Claude did.

If the event plan named the artists and the library held the songs, the job was matching. Not taste — precision. Lower-casing every artist field. Checking for substring matches. Building an exclude list to knock out false positives (John Williams kept showing up in the Beyoncé search. He was not invited).

Act IV

Pulling the Songs.
Cleaning the Signal.

Raw matching produces noise. "H.E.R." matched Heather, Christopher, and an entire Sound of Music cast album. "Michelle Williams" brought up Destiny's Child — and Pharrell's collaborator — and a different Michelle Williams entirely. The artist field in a personal music library is not a controlled vocabulary. It's a decade of different import formats, collaborator naming conventions, and iTunes metadata inconsistencies.

# The Heat — initial artist match
include: ['outkast', 'beyoncé', 'kendrick', 'wizkid'...]
exclude: ['john williams', 'linkin park', 'odesza'...]

# Raw: 131 songs · Curated: 34 songs
Duration check: 34 songs = 140 min
Target window: 150 min → ✓ fits

# Wind Down — J. Cole raw match: 28 songs
# Removing skits + interludes...
After filter: 11 party-ready cuts

The curation layer was editorial. Knowing which Kendrick tracks hit at a party versus which ones are a listening exercise. Knowing that Mint Condition belongs in the Wind Down, not the Heat. Knowing that "Jaiye Jaiye (feat. Femi Kuti)" is exactly the right Wizkid pick for a mixed crowd in Austin at 6 PM.

That knowledge didn't come from the data. It came from having been to the party before. The system found the candidates. The judgment made the list.

"3,500 rows in. 75 songs out. Every one of them earned its spot."
75
Act V — The Playlists

Three Lists.
322 Minutes.
One Party.

Playlist 1 · 3:00 – 4:30 PM
"The Warm-Up"
61 min · 12 songs
Neo-soul and old school R&B. Background music as guests arrive and the grill heats up. Grown-folks energy from the first note.
3 D'Angelo cuts
3 Stevie tracks
2 Marvin Gaye
Playlist 2 · 4:30 – 7:00 PM
"The Heat"
140 min · 34 songs
90s/2000s Hip-Hop and R&B anchoring the first half. Afrobeats and current energy closing it out. Built to carry the food, the dancing, and the birthday moment.
7 Wizkid tracks
5 Kendrick cuts
5 USHER picks
Playlist 3 · 7:00 – 9:00 PM
"The Wind Down"
121 min · 29 songs
Golden hour into evening. Slow jams and Afrobeats carrying the core crew through the end. Intimate, soulful, and steady.
7 Mint Condition
6 Davido tracks
4 Luther cuts

The artists who made it across all three playlists represented something real — the range of a library built across a life. Stevie Wonder. Davido. J. Cole. Wizkid. Mint Condition. OutKast. Luther Vandross. A room in 1975 and a room in 2024 and a backyard in Austin on a Saturday in May.

OutKast Beyoncé Wizkid Kendrick Lamar Mint Condition D'Angelo Marvin Gaye Sade Maxwell Stevie Wonder USHER Bruno Mars Lauryn Hill Jay-Z Davido Fireboy DML Burna Boy J. Cole Luther Vandross Pharrell Justin Timberlake Alicia Keys Adekunle Gold
Act VI

Getting the Songs
Into the Speaker.

Three CSV files. 75 songs. Ready. The next question was obvious and slightly annoying: how do you turn a spreadsheet into something you can actually play at a party?

Spotify doesn't have a CSV import. Apple Music doesn't either. The gap between "I have a list" and "I have a playlist" is real, and it's the kind of gap that has killed more good plans than most people would admit.

The answer: Soundiiz. A cross-platform music transfer tool that reads a CSV, maps the columns to track metadata, searches streaming catalogs, and creates playlists automatically. Upload the file. Match the columns. Let it run.

It also surfaces every song it can't find — which became the gap report. The 13 artists named in the event plan who weren't in the library (Erykah Badu, Anita Baker, Rema, Missy Elliott, among others) got flagged and added manually. One tool to bridge the gap between what the system built and what Spotify would play.

Soundiiz · CSV Import

SCL_P1_Warm_Up.csv
→ 12/12 songs matched ✓

SCL_P2_The_Heat.csv
→ 33/34 matched ✓
→ 1 not found (manual add)

SCL_P3_Wind_Down.csv
→ 29/29 songs matched ✓

+ 13 gap artists added manually
Epilogue

This Is What
"AI as Infrastructure"
Actually Looks Like.

People hear "AI" and they picture a chatbot. Something you type questions into. A smarter Google search. That's one version — and it's fine.

This is the other version. A 3,500-row Excel file opened at the binary level. Duration data decoded from an Excel format bug. Artist fields matched with custom exclude lists. 92 songs of raw matches narrowed to 75 tracks of curated playlists, timed to the minute against a party schedule pulled from a PDF.

No one built a product for this exact problem. No app had a "backyard party playlist from a decade-old iTunes export" button. The system that solved it was assembled — from a terminal, from an Excel file, from a planning doc, from a set of questions asked and answered in real time — in one evening.

"That's the difference between using AI and building with it. One is a feature. The other is a capability."

The party was Saturday. The playlists were ready Friday night. Steaks, Cakes & Lemonade went exactly the way it was supposed to go.

Waziri Garuba · wazirigaruba.com
3,500 songs · 75 curated · Party: Success