🎧 Beyond the Algorithm — Personal Spotify Listening Intelligence
A full-stack data platform that transforms raw Spotify export data into an interactive analytics dashboard with AI-powered genre classification, smart artist recommendations, and a conversational chatbot that knows your listening habits.
What & Why
The Problem
You listen to music every day, but there's no readily available solution to analyze your own habits. How has your taste evolved over the past two years? What's your skip rate for a specific artist? Which genres dominate your weekday mornings? What new artists should I listen to and why?
The Solution
An end-to-end analytics platform that:
- Ingests raw Spotify streaming history and transforms it into clean, enriched datasets
- Uses an LLM to automatically classify every artist into a genre (since Spotify's export doesn't include genre data)
- Calculates behavioral metrics like skip rates and listening streaks
- Surfaces smart artist recommendations — artists you haven't played recently but historically enjoy
- Provides a fully interactive dashboard with filters, charts, artist deep-dives, and an embedded AI chatbot
- Lets you "hide" artists from analysis with a single click (for removing unwanted or awkward listens from your data)
The Impact
- Every stream I've ever played — filterable, sortable, and visualized in seconds
- Genre insights that Spotify itself doesn't surface in its export data
- Conversational access — ask "What did I listen to most in March?" and get an instant answer
How It Works
Dashboard Experience
Filter Panel (left sidebar)
Collapsible filter panel with date range picker, artist/song/genre listograms (showing top 5 with visual bars), and a skipped toggle. One-click reset button clears everything. Every filter immediately updates all metrics, charts, and tables across the dashboard.

Spotibot — Conversational AI Agent
An embedded conversational AI that has access to your full listening ontology. Toggle it open and the stream table seamlessly collapses to make room — toggle it closed and the table reappears. Ask anything: "What genre do I listen to most on Fridays?", "When did I first discover this artist?", or "How many hours did I listen in June?" — and get grounded, data-backed answers.

Metrics & Stream History
Three headline cards that update with every filter change — Total Listening Time (hours + "That's X days" context), Number of Artists, and Number of Songs — sit above the full stream history table showing date, song, album, artist, genre, and skip status.

Listening Charts
Bar chart showing play counts by artist (clickable — selecting an artist drives the detail panel). Additional time-series chart for visualizing listening patterns over time.

Artist Detail Drawer
Click any artist on the chart and a side panel slides in showing: artist genre, first/last listen dates, skip rate (last 90 days) with conditional color coding, play count evolution segmented by skipped vs. not-skipped, and a "Show/Hide Artist" action button — to remove unwanted or awkward artists from your analysis entirely (they get excluded from all metrics, charts, and recommendations).

AI Recommendations Modal
Click "Recommend Artists ✨" in the header and the LLM (Claude Sonnet 4) receives your recent stream data and returns 3 artist recommendations with concise reasoning. Runs on-demand each time — always fresh based on your latest listening.

Under the Hood
Architecture Diagram
Data Pipeline (Pipeline Builder)
A no-code pipeline that handles:
1. Parse & Clean
Extracts from raw JSON, drops nulls and irrelevant columns (IP addresses, platform info, podcast/audiobook data).
2. Enrich
Derives timestamps to dates, weekday names, year-week IDs; converts milliseconds to hours/minutes; generates unique hash keys.
3. LLM Genre Classification
Calls GPT-4o to assign a genre to each artist based on their name alone (since Spotify's export contains no genre data).
Technology Stack
| Layer | Technology | Purpose |
|---|---|---|
| Data Source | Spotify GDPR Export (JSON) | Raw streaming history |
| Data Pipeline | Pipeline Builder (no-code) | Cleaning, enrichment, feature engineering |
| AI Enrichment | GPT-4o via Pipeline Builder LLM node | Genre classification per artist |
| Storage | Foundry Datasets | Structured tabular storage with full lineage |
| Semantic Layer | Foundry Ontology | Object types (Stream, Artist) with links |
| Backend Function | TypeScript (Functions repo) | 90-day skip rate calculation |
| AI Logic | AIP Logic (no-code) | LLM-powered artist recommendations |
| AI Agent | AIP Agent (Spotibot) | Conversational data exploration |
| Frontend | Foundry Workshop | Interactive dashboard with dark mode |
| Actions | Foundry Action Types | Show/Hide artist toggle |