-
-
An act's taste fingerprint from Qloo: the acts its fans also love, its tags, its audience.
-
A new act Qloo doesn't know yet, modelled on the act it sounds like.
-
Cities ranked by Fan Match, each lit on the map.
-
TourScout: where are your next fans? Built on Qloo's taste graph.
-
Untapped cities: fans of acts like yours over-index there, but you aren't known yet.
-
Every conversation kept as a scout.
-
The shared page: every stop, its Fan Match, and the route on the map.
-
"Save it and give me a link to share": saved to your plans, with a read-only link.
-
A stop in full: venues whose crowd matches, local openers, and the neighbourhood heatmap.
-
"Plan 6 shows through those cities in March": routed and dated.
-
"Skip Washington, add Montreal and Toronto": re-routed, with the trade-off explained.
-
"Where in Barcelona do my fans live?": the city centre, by far, with the heatmap to prove it.
-
Comedians too: Boston scores 97 for Taylor Tomlinson, with the lifts behind it.
-
"Who could open for me in London?": Sports Team, a local indie rock and post-punk band, a 96 match.
Inspiration
Every night on tour is a bet that the room will fill, and independent musicians and comedians place it on gut feel and old gig history. That finds the fans they already have, not the people who would love them but haven't heard of them yet. An empty room costs a small act money it doesn't have. Taste is the missing signal, and Qloo has it.
What it does
TourScout is an agent you talk to, with a map that follows. Name your act, or who you sound like, and it:
- Reads your taste fingerprint from Qloo: the acts your fans also love, your tags, and who your audience is ("fans peak at 18–24 · 45% women").
- Ranks cities by Fan Match (0–100), each with the evidence behind its score: "Fans of Fontaines D.C. over-index here ×1.2".
- Finds the untapped cities: where fans of acts like yours over-index, but you aren't known yet.
- Models a new act that Qloo doesn't know yet on up to three acts it sounds like, and tells you who it chose.
- Plans a routed, dated tour, with travel time between shows.
- Opens any stop: venues whose crowd matches yours (live music venues or comedy clubs), local openers, partners to promote with (record shops, bars, cafés, a brand, a podcast), and a heatmap of the neighbourhoods where your fans live.
- Changes anything by conversation: "Skip Washington, add Montreal and Toronto" re-routes the tour and says what the change costs ("Toronto (76) and Montreal (63) score lower, but Sam Morril fans still over-index in both").
- Works for comedians too: comedy clubs as venues, comedians as openers.
- Keeps every conversation as a scout to pick up later, and saves or shares a tour as a read-only link after Google sign-in.
What makes it Qloo-powered
Without Qloo, an agent could only guess where an act's fans are. Every city, venue, opener and partner in TourScout is Qloo's taste data, scored by plain, tested code:
| Feature | Qloo |
|---|---|
| Find the act | /search for artists, and for people kept only if they're comedians |
| Taste fingerprint | /v2/insights for comparable artists (or comedians) and urn:demographics for audience skew |
| City ranking | Heatmaps (where the act's taste concentrates in each region) blended 60/40 with destination affinity (how strongly its fans lean toward each city); I measured both on known acts before choosing the blend |
| The evidence | Destination-affinity lifts of comparable acts' fans |
| Neighbourhoods | urn:heatmap within 15 km of the city |
| Venues | urn:entity:place within 12 km, kept to Qloo's live-music-venue and concert-hall categories, or comedy clubs |
| Openers | Artists (or comedians) with the city as a location signal, below the headliner's own popularity; "local" only when their own description or tags name the city or country |
| Partners | Record shops, bars and cafés nearby, plus a brand and a podcast, capped below household-name popularity so they suit this act |
The agent chooses tools and explains their results; it never invents a city, venue or number.
How I built it
Next.js and TypeScript, MapLibre maps, Firebase Auth and Firestore, on Google Cloud Run. The agent works only through server-side tools: find_act, look_up_act (a web search for acts the taste data doesn't know), open_act, build_taste_profile, rank_cities, city_detail, city_heatmap, find_venues, find_support_acts, find_partners, plan_route, save_tour and share_tour. Scoring and routing are deterministic code with 390 unit tests, and browser tests run every journey on desktop and phone.
The Qloo client paces requests under 10 a second, keeps a private server-side cache, and trips a breaker if the key is rejected, so cached answers keep flowing. Qloo's data never leaves the server: a pipeline check fails if a Qloo response ever reaches the repository.
Challenges I ran into
- Qloo has no hometown field, and its location signal only weights results, so a national star could come back as a "local" opener. TourScout calls an opener local only when its own description or tags name the city, and a comedian's openers must be comedians from the city or country.
- Heatmap scores are percentiles within each region, while destination affinity compares across regions but misses some home markets. Measuring both on known acts led to the 60/40 blend.
- Keeping Qloo's data private while still being fast: a server-side cache with no public copies, and heatmaps reduced to per-city sums or a capped set of points.
Accomplishments that I'm proud of
- Every recommendation is explainable: each score comes with the lift that earned it.
- It works for musicians and comedians, for famous acts and for brand-new ones.
- It's a complete product: chat, map and full views, saved scouts, sharing, a printable tour sheet, and a phone layout.
What I learned
Taste beats demographics for touring decisions: "people like your fans live here" says far more than "people your fans' age live here". Qloo's place categories and audience lifts turn that into venues and openers a booking agent would recognise.
What's next for TourScout
Holds with venues straight from a stop, a promoter's view (which acts would fill my room?), and merging an act's own streaming and ticketing data with Qloo's taste data.
Built With
- cloud-firestore
- firebase
- gitlab-ci
- google-cloud-run
- maplibre
- next.js
- playwright
- qloo
- react
- tailwind-css
- typescript
- vitest

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