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 —

Meet GhostQ: a song for the crowd that loves an artist

GhostQ is live at https://ghostq.xyz, no login needed.

Name an artist, and GhostQ writes an original song for the crowd that really loves them, from taste data from the Qloo API, with a receipt on every line. Then it sings it.

Video: https://youtu.be/xNCSCSWfhNo

The Ghost writes the song. GhostQ's writer reads the crowd: the city where the fans are strongest, their ages, the themes they care about, their lifestyles and the films they love. It says what it's doing as it goes, and every step shows its source. Then it writes the sheet: lyrics, chords, melody and a production brief, with the Qloo signals behind every line. Tap a receipt to see where a line came from.

Bailo en la Cocina, written by GhostQ for Bad Bunny's crowd in Santiago, Chile

CollabQ: one song, two crowds. Add a "feat." artist. Verse 1 is written for the first artist's crowd and verse 2 for the second's, each in its artist's language, and the chorus is built on what both crowds share. The Ghost suggests pairs, or pick your own: here, Prateek Kuhad feat. Rauw Alejandro, in Hindi and Spanish.

Ek Chhatri, Dos Corazones, written by GhostQ for Prateek Kuhad feat. Rauw Alejandro

RemixQ: the same song, another crowd. Pick a new city, new ages, or both, and GhostQ reads the new crowd and rewrites the lines it calls for. The title, key, hook and structure stay, and every changed line is marked next to the original. The Ghost suggests songs to remix for cities where the artist's fans are strong: here, Lorde's "Last Tram Home" for Wellington, 15 of 22 lines rewritten.

Last Tram Home, remixed by GhostQ for Lorde's crowd in Wellington

Hear it, and sing along. Sung songs play in the QPlayer across the whole site. Open it full screen and Sing Along follows the recording word by word, with the receipts behind the line you hear.

Every song is public in the Songbook, with its crowd and its research, and labelled as an AI-generated GhostQ draft, not affiliated with the artist it was written for. How it works, and the Ghost behind every draft, are on the home page.

Try it: https://ghostq.xyz Code (MIT): https://github.com/T04435/ghostq

posted an update —

GhostQ v1.5.0: RemixQ, the same song for another crowd

GhostQ v1.5.0 is live at https://ghostq.xyz.

Any song GhostQ writes can now be remixed for another crowd.

  • Pick the new crowd. A city, ages, or both. Or one click: GhostQ offers the artist's next-strongest fan cities from Qloo's heatmap.
  • Same song, rewritten for them. GhostQ reads the new crowd from Qloo and rewrites the verses and bridge around what it cares about, keeping the title, structure and hook.
  • Side by side, with receipts. The original and the remix sit next to each other, the changed lines are marked, and every line still shows the Qloo signal behind it.

Example: Lorde's "Last Light on the Shore Road", first written for her Auckland fans, remixed for under-25s in Lisbon: https://ghostq.xyz/song/pici8w2tif

Video: https://youtu.be/U70pDT9VWZs

App: https://ghostq.xyz Release notes: https://github.com/T04435/ghostq/releases/tag/v1.5.0

posted an update —

GhostQ v1.4.0: CollabQ, one song for two crowds

GhostQ v1.4.0 is live at https://ghostq.xyz.

Pick a second artist in the new feat. field and GhostQ writes "A feat. B": one song for two crowds.

  • Two crowds, read from Qloo. GhostQ reads each artist's crowd, then asks Qloo's compare what the two crowds share.
  • A verse per crowd, a chorus for both. Verse 1 is for A's crowd in A's voice, verse 2 for B's crowd in B's voice, and the chorus is built on what they share, sung by both. When the artists' languages differ, each verse is in its artist's language and the chorus mixes both.
  • Receipts that say whose. Every Qloo signal behind a line shows whether it came from A's crowd, B's, or both.

Example: "Other Side of the Light", Lorde feat. Troye Sivan: https://ghostq.xyz/song/11zzay870y

Video: https://youtu.be/r3n72G3iDMU

App: https://ghostq.xyz Release notes: https://github.com/T04435/ghostq/releases/tag/v1.4.0

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

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

Submission history