Repository navigation
GhostQ v1.0.0
GhostQ's first full release. Live at https://ghostq.xyz. Built for the Qloo Agentic Hackathon 2026.
Name an artist. GhostQ reads who their crowd is from Qloo and writes an original song for that crowd, with a Qloo receipt on every line. It can also sing it.
What's in v1.0.0
- Two inputs. The artist (Spotify search, run when you press Enter) and an optional "what's it about". Everything else comes from Qloo.
- The crowd, from Qloo. Inside the run, GhostQ reads the fans' top area from Qloo's world heatmap, up to three age bands the fans skew towards, and the language. The crowd card shows each value and where it came from.
- It asks when Qloo doesn't know. If Qloo has no data on the artist or their fans, the run stops and asks for just the missing fields (the sound, a city, ages), then carries on.
- The agent. Claude, through the AI SDK and Vercel AI Gateway, picks each Qloo call from what it has found so far: genres, artists that sound alike, crowd themes and styles, the local scene, the films, books and audiences the fans love.
- Song sheet with receipts. Lyrics, chords, structure, melody notes and a production brief. Every line cites the Qloo signal behind it. Code checks the receipts and that no real artist, film or book is named, with one repair pass.
- Sing it. Google Lyria 3.5 turns the sheet into a produced, sung MP3 (SynthID-watermarked). The voice matches the artist from MusicBrainz: a person's gender, or a band's members. If MusicBrainz doesn't know, you pick.
- Library and share links. Every song is saved with its research and audio. /song/[id] replays the research. /library lists every song, with search, filters and play in place.
- GhostQ vs a plain AI. /how compares the song with what a model with no Qloo data writes for the same brief.
How GhostQ uses Qloo
/searchfinds the artist, pinned by Spotify id when picked from search./v2/insightswithurn:heatmapover the world finds where the fans are;urn:demographicsgives the age skew./v2/insightswithurn:tag(themes, styles, genres),urn:entity:artist,urn:entity:movie,urn:entity:bookandurn:audience, filtered by the crowd's place and ages, gives the song's subjects, sound and imagery./v2/tagssemantic search turns your own words into Qloo tags when Qloo doesn't know the act.
Known limits
- Lyria sometimes blocks a song for its content policy, even a harmless one, and a retry can pass.
- If an artist is on Spotify but not on Qloo, GhostQ asks for their sound instead of reading their songs (roadmap F2).
- No rate limits or spend caps yet (roadmap item 1).
- Since this tag,
mainhas added Neon storage, the production deploy, "Write another", real cities from Qloo and OpenStreetMap, and the artist's home as the voice. ghostq.xyz runs that newer code.
Setup
Run instructions and keys are in the README. What's next is in ROADMAP.md.
Licence: MIT.