ABOUT THE ORACLE
SYSTEM VERSION: 1.4.1 | STATUS: OPERATIONAL
> SYSTEM_OVERVIEW
The Oracle is a semantic music search and discovery system that transforms how you explore a personal music library. Unlike traditional search engines that rely on exact keyword matches, The Oracle understands the meaning and feeling behind your queries.
Search for “foggy morning in the city — something calm and electronic but not cold” and watch as The Oracle surfaces albums that capture that exact vibe, even if those words never appear in their metadata. It's like having a deeply knowledgeable music curator who understands context.
> ORIGIN_STORY
The Oracle emerged from a simple frustration: as a music collection grows into thousands of albums, the traditional ways of organizing music — by genre, artist, or alphabetically — break down.
How do you find that album you know exists somewhere in your library, the one that feels like “Sunday morning sunlight through dusty windows”? How do you discover music that exists in the space between two albums you love? Traditional search can't help you here.
The Oracle was built to solve this problem using modern AI embeddings — transforming albums and tracks into high-dimensional vectors that capture their sonic essence. When you search, your query is transformed into the same vector space, allowing The Oracle to find music based on semantic similarity rather than keyword matching.
> TECHNICAL_ARCHITECTURE
The system works in three main stages: data normalization, embedding generation, and semantic search.
[1] Data Collection & Normalization
The foundation is high-quality, consistent metadata. I have a personal music library with thousands of albums, and for each album I scraped genre, secondary genre, and mood/descriptor data from Rate Your Music (RYM). This includes both high-level genres and more nuanced descriptors (e.g. “nocturnal,” “bluesy,” “technical,” etc.).
I then wrote scripts that run continuously against Plex/NaviPlex to rewrite the album metadata directly in the music files. These scripts populate genre and mood fields exclusively with RYM-derived data and strip out any pre-existing or conflicting metadata.
The result is a fully normalized library where every album is described using the same controlled vocabulary — RYM genres and descriptors only.
[2] Genre & Album Embeddings
Next, I created embeddings for every individual RYM genre and descriptor. For each genre or descriptor, I wrote a short natural-language description capturing both musical characteristics and listening context.
For example, a genre like smooth jazz might be described in terms of tempo, instrumentation, mood, and typical listening scenarios. These descriptions are then embedded using Voyage AI's voyage-3-large model, producing a vector representation for each genre/descriptor in semantic space.
Using those building blocks, I generate a single embedding for each album:
- [—] Take the embeddings for all of an album's genres and descriptors
- [—] Compute a weighted average (primary genres weighted more heavily than secondary genres or mood descriptors)
- [—] This produces a single vector that semantically represents the album as a whole
For example, Kind of Blue ends up with an embedding shaped by its primary genres (hard bop, cool jazz) and its descriptors (nocturnal, bluesy, smooth, technical, etc.).
[3] Natural Language Search
The frontend is a simple search interface. When a user types a query and presses enter:
- [—] The input string is embedded using the same Voyage embedding model
- [—] That query vector is compared against all album vectors
- [—] The system returns the nearest albums in vector space
Because the search is purely semantic, longer and more descriptive queries work better. The more context the user provides, the more accurately the query vector aligns with existing genre and mood embeddings, resulting in better matches.
[4] Vector Interpolation (Blending)
The Blender feature takes two albums and finds the mathematical midpoint between their embeddings. This reveals albums that exist in the musical space between them — perfect for discovering transitional music that bridges different styles.
> FEATURE_MATRIX
Album Search
Natural language queries return albums that match your vibe. “Music for cooking with the windows open on Sunday” → albums that capture that exact feeling.
Playlist Creator
Generate playlists from semantic queries. The Oracle searches at the track level, creating cohesive playlists that can be saved directly to Plex for immediate playback.
Album Blender
Input two albums and discover what exists in the space between them. Perfect for finding music that bridges genres or eras you love.
Similar Albums
Find albums with similar sonic characteristics. Great for “more like this” discovery when you've found something you love.
> DESIGN_PHILOSOPHY
The Oracle's retro CRT terminal aesthetic isn't just decoration — it's a deliberate choice that frames music discovery as accessing something mystical and powerful.
The green phosphor glow, scanlines, and command-line interface evoke early computing — when interacting with a computer felt like consulting an oracle. This aesthetic transforms a search engine into something that feels more like divination: you ask The Oracle a question about music, and it reveals hidden connections in your library.
Every interaction — from the blinking cursor to the animated prompts to the glowing text — reinforces this sense of accessing knowledge that lies beneath the surface of your music collection.
> FUTURE_DEVELOPMENTS
The Oracle is continuously evolving. Future enhancements under consideration include:
- [—] Multi-album blending (finding music between 3+ albums)
- [—] Path-finding between distant albums (discover stepping stones)
- [—] Visualization of the album embedding space
- [—] Time-based discovery (“music from this era in that style”)
- [—] Genre and mood exploration modes
- [—] Historical search tracking and favorites management
- [—] Advanced filtering by year, rating, play count
> READY TO EXPLORE?