Finalist
Ube.ai
The Autonomous Reasoning Engine for Cross-Cultural Music Curation Ube is a next-generation "Music Strategist" built to solve the "Cold Start" problem of complex human identities.
Core trick
Constrained reasoning over a Spotify taste profile and event context selects cross-cultural tracks via the Spotify Web API.
Description
The Autonomous Reasoning Engine for Cross-Cultural Music Curation
Ube is a next-generation "Music Strategist" built to solve the "Cold Start" problem of complex human identities. Instead of simply generating a playlist based on keywords, it uses Constrained Reasoning to bridge the gap between fragmented cultural histories and specific event narratives.
README excerpt
# Ube.ai (`ube`) Cross-cultural playlist reasoning: situational context plus your Spotify taste profile, backed by the Spotify Web API and Gemini. ## Prerequisites - Node.js 20+ - Spotify app with redirect URI matching how you open the app (prefer `http://127.0.0.1:3030/api/spotify/callback` for local dev) **Local port:** `npm run dev` binds **3030** by default so this app stays off common ports used elsewhere (e.g. 3001, 8001, 8002, 8080, 8088, 2024, 6379). Override with `npx next dev -p <port>` if needed and update `SPOTIFY_REDIRECT_URI` + Spotify dashboard to match. - Optional: Supabase project for profiles and sessions; optional ElevenLabs key for the music bridge ## Setup ```bash cd Ube # Create .env.local (not committed) with the variables below. ``` Set at minimum: - `GOOGLE_GENERATIVE_AI_API_KEY` (Gemini chat **and** `gemini-embedding-001` semantic reranking) - `SPOTIFY_CLIENT_ID`, `SPOTIFY_CLIENT_SECRET`, `SPOTIFY_REDIRECT_URI` (must be a **full URL** such as `http://127.0.0.1:3030/api/spotify/callback` — **never** a repo path like `/Users/.../api/spotify/callback`) - `NEXT_PUBLIC_SUPABASE_URL`, `NEXT_PUBLIC_SUPABASE_ANON_KEY` (if using persistence) - `ELEVENLABS_API_KEY` (optional) ## Develop ```bash npm install npm run dev ``` Open the same host as `SPOTIFY_REDIRECT_URI` (e.g. `http://127.0.0.1:3030`). Mixing `localhost` and `127.0.0.1` breaks OAuth cookies. **Production build locally:** `npm run build` then `npx next start -p 3030` (or set `PORT=3030`)