Playlistify AI avatar
Playlistify AI

Pricing

from $0.01 / 1,000 results

Go to Apify Store
Playlistify AI

Playlistify AI

An AI-powered playlist curator just for your moods

Pricing

from $0.01 / 1,000 results

Rating

0.0

(0)

Developer

Avanish Kasar

Avanish Kasar

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

14 days ago

Last modified

Categories

Share

Playlistify AI ๐ŸŽต

Most playlist tools react. Playlistify learns.

Live Demo Apify Actor LICENSE TypeScript Node.js Spotify

Playlistify AI is not a playlist generator. It's a personal music agent that learns your emotional patterns and intent over time, then proactively creates and evolves Spotify playlists to support focus, mood, and daily routines.

๐Ÿ”— Live Application: playlistify.up.railway.app

๐Ÿš€ Pro Version (Apify): apify.com/viverun/playlistfy


๐Ÿง  What Makes Playlistify AI Different

Traditional Playlist GeneratorsPlaylistify AI
Enter mood โ†’ get playlistUnderstands emotional intent behind your words
Forgets you after each useRemembers your preferences and evolves
Waits for commandsProactively suggests based on patterns
Dumps raw tracksExplains why it chose each track
Static outputPlaylists that evolve based on feedback

"This week you've been stressed. I kept energy low and vocals minimal."


๐Ÿ† Built for Hack This Fall 2025

The Vision

Music is not trivial. Music is memory, emotion, routine, identity.

We built Playlistify AI to be emotionally intelligent โ€” a system that doesn't just respond to "play happy music," but understands:

  • "I need something to survive a 2am debugging session"
  • "Music that feels like quiet confidence before a presentation"
  • "Background vibes that won't distract me while I write"

Core Pillars

PillarDescription
๐ŸŽฏ Intent > MoodWe parse emotional context, not just keywords
๐Ÿง  Agent MemoryLearns what you like at different times and adapts
โšก Agentic BehaviorSuggests playlists without being asked
๐Ÿ’ฌ ExplainabilityEvery playlist comes with reasoning
๐Ÿ”„ EvolutionPlaylists improve based on your feedback
๐Ÿ”’ Privacy-FirstWe store derived preferences, never raw data

๐Ÿ‘ฅ Team DDoxer

Team MemberRoleConnect
Avanish KasarLead DeveloperX LinkedIn
JamilCo-Developer

โœจ Features in Detail

1. ๐ŸŽฏ Natural Language Intent Understanding

Not just "happy music" โ€” we understand context:

Input: "Late night coding session, low stress"
Parsed Intent:
โ”œโ”€โ”€ Emotional State: focused, calm
โ”œโ”€โ”€ Activity: coding
โ”œโ”€โ”€ Time Context: late-night
โ”œโ”€โ”€ Target Energy: medium
โ”œโ”€โ”€ BPM Range: 100-130
โ”œโ”€โ”€ Vocal Preference: instrumental
โ””โ”€โ”€ Suggested Genres: electronic, lo-fi, ambient

2. ๐Ÿง  Agent Memory System

Playlistify AI remembers you:

  • What worked: Tracks you liked, playlists you loved
  • What didn't: Songs you skipped, vibes that missed
  • When you listen: Morning vs. late-night preferences
  • How you evolve: Your taste fingerprint develops over time
// Every interaction teaches the agent
"Last time you liked lo-fi + low BPM at night. I kept that energy."

3. โšก Proactive Suggestions

The agent acts without being asked:

"You usually listen around this time. Want a fresh focus playlist?"

Based on:

  • Habitual listening times
  • Day-of-week patterns
  • Recent mood trends

4. ๐Ÿ’ฌ Explainability Layer

Every playlist explains why:

"I picked tracks that match your 'focused' mood for coding, at late-night. I kept the energy medium and chose low-vocal tracks based on your past preferences."

5. ๐Ÿ”„ Playlist Evolution

Playlists are systems, not outputs:

  • Like/Skip buttons on every track
  • Feedback influences future generations
  • Weekly refresh suggestions
  • One-click modifications ("more energy", "less vocals")

6. ๐Ÿ”’ Privacy-First Design

  • We store only derived preferences, never raw listening history
  • Local JSON storage (no external DB required)
  • One-click data export (GDPR compliance)
  • Clear all data anytime

๐Ÿ“ธ Screenshots


๐ŸŽฅ Video Demo


๐Ÿ› ๏ธ Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ PLAYLISTIFY AI โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ โ”‚
โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
โ”‚ โ”‚ Frontend โ”‚โ”€โ”€โ”€โ–ถโ”‚ Express.js โ”‚โ”€โ”€โ”€โ–ถโ”‚ Agentic Engine โ”‚ โ”‚
โ”‚ โ”‚ (Liquid UI) โ”‚ โ”‚ API โ”‚ โ”‚ (Brain of the app) โ”‚ โ”‚
โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
โ”‚ โ”‚ โ”‚ โ”‚
โ”‚ โ–ผ โ–ผ โ”‚
โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
โ”‚ โ”‚ Spotify โ”‚ โ”‚ Intent Engine โ”‚ โ”‚
โ”‚ โ”‚ Handler โ”‚ โ”‚ (NLP Understanding) โ”‚ โ”‚
โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
โ”‚ โ”‚ โ”‚ โ”‚
โ”‚ โ–ผ โ–ผ โ”‚
โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
โ”‚ โ”‚ Spotify โ”‚ โ”‚ Agent Memory โ”‚ โ”‚
โ”‚ โ”‚ Web API โ”‚ โ”‚ (Learning System) โ”‚ โ”‚
โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
โ”‚ โ”‚ โ”‚
โ”‚ โ–ผ โ”‚
โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
โ”‚ โ”‚ Local JSON Store โ”‚ โ”‚
โ”‚ โ”‚ (Privacy-First) โ”‚ โ”‚
โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
โ”‚ โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Key Components

ComponentFilePurpose
Agent Memorysrc/agentMemory.tsPersistent learning system
Intent Enginesrc/intentEngine.tsNatural language understanding
Agentic Enginesrc/agenticEngine.tsProactive behavior & orchestration
Spotify Handlersrc/spotifyHandler.tsSpotify API integration
Main APIsrc/main.tsExpress server & endpoints

๐Ÿ› ๏ธ Tech Stack

CategoryTechnology
RuntimeNode.js 20+
LanguageTypeScript
BackendExpress.js
FrontendVanilla HTML/CSS/JS with iOS Liquid Glass Theme
API IntegrationSpotify Web API
NLPCustom intent engine with 50+ emotional concepts
MemoryJSON-based persistent storage
ContainerizationDocker
HostingRailway
Pro VersionApify Actor with MCP Tools

๐ŸŽฏ How It Works

  1. Input: Describe your ideal playlist in natural language
  2. Analysis: NLP engine extracts mood, genre, tempo, and era
  3. Search: Dual-strategy approach finds the perfect tracks
  4. Curation: Smart filtering removes duplicates and optimizes flow
  5. Output: Get a polished playlist ready to enjoy

๐Ÿš€ Quick Start

Try It Now

Visit playlistify.up.railway.app and start creating playlists instantly!

Run Locally

  1. Clone the repository:

    git clone https://github.com/avanishkasar/Playlistify-AI.git
    cd Playlistify-AI
  2. Install dependencies:

    $npm install
  3. Configure environment (optional for testing):

    The app includes default credentials for quick testing. For production, create a .env file:

    SPOTIFY_CLIENT_ID=your_client_id
    SPOTIFY_CLIENT_SECRET=your_client_secret
    SPOTIFY_REFRESH_TOKEN=your_refresh_token
    PORT=3001
  4. Start the development server:

    $npm run dev

    Open http://localhost:3001 in your browser.


๐Ÿ”Œ API Reference

๐Ÿง  Agentic Endpoints (New!)

Generate Playlist (Agentic)

Endpoint: POST /api/generate-playlist

The brain of the operation. Parses intent, generates recommendations, creates playlist, explains choices, and updates memory.

Request:

{
"prompt": "I need focus music for a late night coding session",
"userId": "user-123"
}

Response:

{
"playlist": {
"id": "...",
"name": "Late Night Coding Focus",
"uri": "spotify:playlist:..."
},
"tracks": [...],
"explanation": {
"summary": "I picked tracks that match your 'focused' mood for coding...",
"factors": [
{ "factor": "Emotional State", "value": "focused, calm", "reasoning": "..." }
],
"personalizations": ["Based on your preference for lo-fi at night..."]
},
"modifications": [
{ "action": "increase_energy", "label": "More energy" },
{ "action": "decrease_vocals", "label": "Less vocals" }
],
"memoryId": "playlist-uuid"
}

Proactive Suggestion

Endpoint: GET /api/proactive-suggestion?userId=user-123

Check if the agent has a proactive suggestion based on user patterns.

Response:

{
"hasSuggestion": true,
"suggestion": {
"type": "habitual_time",
"message": "You usually listen around this time. Want a fresh focus playlist?",
"suggestedPrompt": "focus music",
"confidence": 0.85
}
}

Parse Intent (Preview)

Endpoint: POST /api/parse-intent

Preview how the system understands your input before generating.

Request:

{
"prompt": "melancholic indie for a rainy evening",
"userId": "user-123"
}

Response:

{
"emotionalState": {
"primary": "melancholic",
"secondary": ["nostalgic", "reflective"],
"intensity": 0.7
},
"audioParams": {
"energy": 0.4,
"bpmRange": [70, 100],
"preferredGenres": ["indie", "folk"],
"vocalPreference": "soft-vocals"
},
"reasoning": [...]
}

Track Feedback

Endpoint: POST /api/feedback/track

Record like/skip actions on individual tracks.

Request:

{
"userId": "user-123",
"memoryId": "playlist-uuid",
"trackId": "spotify:track:...",
"action": "like"
}

Playlist Rating

Endpoint: POST /api/feedback/playlist

Rate an entire playlist (1-5 stars).

Request:

{
"userId": "user-123",
"memoryId": "playlist-uuid",
"rating": 4,
"keepFavorites": ["track1", "track2"]
}

Get Taste Profile

Endpoint: GET /api/taste-profile?userId=user-123

Get the user's learned taste fingerprint.

Response:

{
"profile": {
"dominantMoods": ["focused", "calm", "energetic"],
"genreAffinities": {
"lo-fi": 0.8,
"electronic": 0.6,
"indie": 0.5
},
"timePreferences": {
"morning": { "mood": "energetic", "genre": "pop" },
"night": { "mood": "calm", "genre": "lo-fi" }
}
}
}

Evolve Playlist

Endpoint: POST /api/evolve-playlist

Refresh/evolve a playlist based on feedback and new preferences.

Request:

{
"userId": "user-123",
"memoryId": "playlist-uuid",
"keepFavorites": true,
"direction": "more_energy"
}

Clear Memory (Privacy)

Endpoint: DELETE /api/memory?userId=user-123

Delete all stored preferences for a user.

Export Data (GDPR)

Endpoint: GET /api/export-data?userId=user-123

Export all user data in JSON format.


๐ŸŽต Legacy Endpoints

Generate Playlist (Simple)

Endpoint: POST /mcp

Request:

{
"prompt": "Upbeat jazz for cooking"
}

Response:

{
"tracks": [
{
"name": "Track Name",
"artist": "Artist Name",
"uri": "spotify:track:..."
}
]
}

๐ŸŒ Deployment

Deploy Your Own Instance

This project is optimized for Railway deployment:

  1. Fork this repository
  2. Sign up at Railway
  3. Create New Project โ†’ Deploy from GitHub
  4. Select your forked repo
  5. Railway auto-detects the Dockerfile and deploys

Railway provides:

  • โœ… Automatic HTTPS
  • โœ… Environment variable management
  • โœ… Auto-deploy on git push
  • โœ… Free tier available

๐Ÿ“ Example Prompts

Emotional Context (What Sets Us Apart)

The agent understands intent, not just keywords:

What You SayWhat We Understand
"I need to survive a 2am debugging session"Late-night + focus + low energy + instrumental
"Music that feels like quiet confidence"Calm assertiveness + medium tempo + minimal lyrics
"Background vibes that won't distract me"Ambient + low vocals + steady rhythm
"Getting pumped for my presentation"Pre-performance energy + motivational + building intensity

Traditional Prompts (Still Work Great)

  • "Energetic workout songs from the 2000s"
  • "Relaxing acoustic guitar for Sunday morning"
  • "Dark electronic music for late night coding"
  • "Happy pop songs for a road trip"
  • "Melancholic indie rock for introspection"

Multi-Language Support

  • "เค–เฅเคถ เค—เคพเคจเฅ‡ เคธเฅเคฌเคน เค•เฅ‡ เคฒเคฟเค" (Happy songs for morning - Hindi)
  • "เฎ‡เฎฐเฎตเฏ เฎจเฏ‡เฎฐเฎคเฏเฎคเฎฟเฎฑเฏเฎ•เฎพเฎฉ เฎฎเฏ†เฎคเฏเฎตเฎพเฎฉ เฎชเฎพเฎŸเฎฒเฏเฎ•เฎณเฏ" (Slow songs for night - Tamil)
  • "เฐจเฐพ เฐœเฐฟเฐฎเฑ เฐตเฐฐเฑเฐ•เฑŒเฐŸเฑ เฐ•เฑ‹เฐธเฐ‚ เฐŽเฐจเฐฐเฑเฐœเฑ†เฐŸเฐฟเฐ•เฑ เฐชเฐพเฐŸเฐฒเฑ" (Energetic songs for gym - Telugu)

๐Ÿง  How the Agent Learns

The Feedback Loop

1. You generate a playlist
โ†“
2. Agent stores the intent + characteristics
โ†“
3. You interact (like/skip tracks, rate playlist)
โ†“
4. Agent updates your taste profile
โ†“
5. Next time: more personalized recommendations

What Gets Stored (Privacy-First)

โœ… We store:

  • Derived preferences (e.g., "prefers lo-fi at night")
  • Aggregated feedback patterns
  • Time-based listening tendencies

โŒ We never store:

  • Raw listening history
  • Personal information
  • Track-by-track logs

Your Taste Fingerprint

Over time, the agent builds a profile like:

{
"dominantMoods": ["focused", "calm"],
"genreAffinities": { "lo-fi": 0.8, "electronic": 0.6 },
"timePreferences": {
"night": { "mood": "calm", "genre": "ambient" },
"morning": { "mood": "energetic", "genre": "pop" }
},
"avoidPatterns": ["heavy-metal", "aggressive-vocals"]
}

๐Ÿš€ Pro Version (Apify)

For developers and power users, we offer a Pro version on Apify with MCP (Model Context Protocol) tools:

Try on Apify

MCP Tools Available:

  • search-track - Search Spotify tracks by query
  • recommend - Get AI-powered track recommendations
  • create-playlist - Create playlists directly on Spotify

Pricing: Pay per event (API call) - perfect for automation and integrations!


๐Ÿค Contributing

Contributions are welcome! Feel free to:

  • ๐Ÿ› Report bugs
  • ๐Ÿ’ก Suggest new features
  • ๐Ÿ”ง Submit pull requests

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


๐Ÿ™ Acknowledgments

  • Built with Spotify Web API
  • Deployed on Railway
  • Pro Version on Apify
  • Powered by TypeScript and Node.js
  • Built for Hack This Fall 2025 ๐Ÿ†

๐Ÿ† Why Playlistify AI Should Win

"Most AI tools react. This one learns. This one remembers. This one feels human."

CriteriaOur Answer
InnovationFirst playlist tool that combines agent memory + emotional intent + proactive behavior
Technical Depth3 new cognitive modules, 50+ emotional concepts, persistent learning
User ImpactMusic that matches your emotional state, not just keywords
PrivacyDerived preferences only, full data export, one-click deletion
ScalabilityJSON storage = no DB required, works anywhere