Inspiration

Every artist writes for someone, but most of the time it's a guess. Artists know their own sound, yet very little about the people actually listening: how old they are, where they are, what they care about, what else they watch and read. That's the gap between a song an artist likes and a song their crowd connects with.

Qloo answers exactly that question. For any artist it can say where their fans' taste is strongest, which ages they lean towards, and the themes, films, books and lifestyles that crowd over-indexes on. That's a songwriter's brief, built from real data instead of a hunch.

So we built GhostQ: name an artist, and it writes an original song for their crowd. Where the artist comes from sets the voice and language; the crowd sets what the song is about. And because a song written by an AI should be explainable, every line carries a receipt pointing to the Qloo signal behind it. Then Google Lyria sings it, so you can hear whether it lands.

What it does

Name an artist. GhostQ works out who their crowd is from Qloo and writes an original song for that crowd, with a receipt on every line showing the Qloo signal behind it. Then it can sing it.

  • Two inputs. The artist (Spotify search) and, optionally, what the song is about. Everything else comes from data.
  • The voice and the crowd. Where the artist is from (MusicBrainz) sets the language, slang and images. The crowd comes from Qloo: the real city where the fans' taste is strongest, and the age bands they skew towards. That crowd sets what the song is about. Lorde, for example, is from Takapuna, New Zealand, and her fans' taste is strongest around Albert-Eden in Auckland, so the song is written in her voice, about what her fans there care about.
  • It asks when it doesn't know. If Qloo has no data on part of the crowd, the run stops and asks for just that, then carries on. No silent guesses.
  • Song sheet with receipts. Lyrics, chords, structure, melody notes and a production brief. Code checks every receipt and that no real artist, film or book is named.
  • Sing it. Google Lyria turns the sheet into a produced, sung track. Who sings, and whether they rap, starts from the artist's data: one to three voices, each with a gender. You can change it before singing.
  • A public Library. Every song is saved with the research that made it, and has a share link.
  • GhostQ vs a plain AI. /how compares the song with what a model with no Qloo data writes for the same brief.

How we built it

  • Qloo is the research. A run makes about 9 Qloo calls (37 s end to end in production):
    • search, pinned by the Spotify id;
    • urn:heatmap over the world, then zoomed into the strongest area, to find the fans' city;
    • urn:demographics for the age skew;
    • urn:tag themes and styles, urn:entity:artist, urn:entity:movie, urn:entity:book and urn:audience, filtered by the crowd's place and ages.
    • /v2/tags semantic search turns your own words into Qloo tags when Qloo doesn't know the act.
  • The agent: Claude, through the Vercel AI SDK and AI Gateway, chooses each Qloo call from what it has found so far, then picks the signals the song is built on. Every step streams to the page in plain words.
  • Other data: Spotify (artist search), MusicBrainz (where the artist is from, and the voice), OpenStreetMap Nominatim (naming the fans' city), Google Lyria 3.5 (singing).
  • Stack: Next.js 16, React 19, TypeScript, Tailwind and shadcn/ui, Zod, Vitest, Neon Postgres and Neon Object Storage, deployed on Vercel.

Challenges we ran into

  • Qloo's single "top" area is often noise. For one artist it had no activity at all; for another it was over the open ocean. GhostQ takes the most popular of the top 30 areas, zooms in, and names the spot.
  • Whose voice, whose crowd. Writing in the crowd's local slang got the artist's own voice wrong. The fix: the artist's home sets the voice, the crowd sets the subject.
  • Lyria's content filter is inconsistent. It sometimes blocks a harmless song, then passes it on a retry. GhostQ says so plainly and offers Try again, without dulling the lyrics.

What we learned

  • Taste data is most useful when it's split: who the artist is versus who is listening.
  • Receipts on every line make the AI's choices checkable, and make the song better.

What's next

  • CollabQ (Artist A feat. Artist B), RemixQ, better chords and lyrics, and a brand.
  • When an artist is on Spotify but not on Qloo, read their songs from Spotify.
  • Rate limits and spend caps for a fully public launch.

Built With

Share this project:

Updates

posted an update —

GhostQ in three short demos: Write, Sing, Library

Three short videos, one per feature, recorded on the live app at https://ghostq.xyz (Write replays a real saved run).

Write: a song for an artist's crowd. Name an artist. GhostQ reads their crowd from Qloo, where the artist is from sets the voice, and every line of the song cites the Qloo signal behind it. Video: https://youtu.be/gSR1BGT4HPA

A receipt on every line

Their voice. Their crowd.

Sing: in the artist's kind of voice. Who sings, and whether they rap, starts from the artist's data. Change it, and Google Lyria sings and produces the song. Video: https://youtu.be/5ORelPLCucQ

Sung in the artist's kind of voice

Library: every song, with its research. Search and play every song GhostQ has written, and open any one to see its crowd and the Qloo research that made it. Video: https://youtu.be/46FUbdaNFYA

Every song, with its research

All three demos: https://www.youtube.com/playlist?list=PLCNlXbIDUg2w Try it, no login: https://ghostq.xyz Code: https://github.com/T04435/ghostq

Log in or sign up for Devpost to join the conversation.

posted an update —

GhostQ v1 is live

GhostQ is live at https://ghostq.xyz. It is the first production release.

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. Then it can sing it.

Original songs for an artist's crowd

  • Two inputs. The artist (Spotify search) and, if you like, what the song is about. Everything else comes from data.
  • Their voice, their crowd. Where the artist is from sets the language, slang and images. Qloo finds the real city where their fans' taste is strongest, and the ages they skew towards. That crowd sets what the song is about.
  • It asks when it doesn't know. If Qloo has no data on part of the crowd, the run stops and asks for just that, then carries on.
  • Receipts on every line. Lyrics, chords, melody and a production brief, each line tied to the Qloo signal behind it.
  • Sing it. Google Lyria sings and produces the song. Who sings, and whether they rap, starts from the artist's data: one to three voices, each with a gender. You can change it before singing.
  • A public Library. Every song is saved with the research that made it, and has its own link.

A receipt on every line

Their voice. Their crowd.

Sung in the artist's kind of voice

Every song, with its research

Next: CollabQ (Artist A feat. Artist B), RemixQ, and acts that are on Spotify but not yet on Qloo.

App: https://ghostq.xyz Code: https://github.com/T04435/ghostq

Log in or sign up for Devpost to join the conversation.

Submission history