Inspiration

Independent artists route tours on gut feel, old guarantees and whatever their streaming dashboard shows. For an emerging act that dashboard is close to empty: a few thousand monthly listeners can't tell you whether Asheville or Austin will turn out. Booking the wrong rooms in the wrong cities is how small tours lose money, and touring is how most independent musicians earn a living.

What it does

Fanroute is an agent that plans the tour around where the audience already is. You give it the artist (or a Spotify link), a few artists they sound like, the region, the number of shows, a home base and how far the band will drive in a day. It works through Qloo's taste graph and comes back with a routed tour, live on a map:

  • Where to play. Qloo destination affinity scores every market on one global scale for how strongly this taste profile gravitates there. That is blended with metro size into a demand index.
  • Which room, which block. For every stop: the neighborhoods where fans cluster (Qloo heatmaps), the music venues this audience has the most affinity for, and the record stores, bars and cafes for posters and pre-show partnerships (Qloo place insights).
  • How to drive it. Stops are picked by trading demand against extra miles, then ordered, with travel days for long drives and rest days built in.
  • Who pays. Brands the audience over-indexes on, filtered to ones small enough to sponsor an independent tour; support acts with overlapping fans in a realistic popularity band; and podcasts to pitch.
  • What to send. A booking email for the strongest stop and a sponsorship pitch, both grounded in the data, plus the risks to check before booking.

Both sides of the booking. Venue mode flips it for promoters: pick your room and its capacity, and Fanroute uses the venue itself as the Qloo taste signal to rank the touring artists your regulars already love, in a popularity band the room can hold. It adds your crowd's profile, local brands to approach as sponsors, and a one-click booking pitch for each act.

For artists Qloo barely knows, Fanroute follows the audience of the sound-alikes the artist names until their own audience is big enough to measure.

Why it only works with Qloo

A general LLM can name famous venues, but it can't know that fans of a particular bedroom-pop act over-index in Richmond and Madison rather than Dallas, which Asheville neighborhood they live in, or which regional cold-brew brand they like. Every city, venue, partner, sponsor, support act and podcast in a Fanroute plan comes from a Qloo result. The agent is instructed never to invent capacities, guarantees or contacts, and each plan says how its markets were measured.

How I built it

  • Front end: Next.js 16, TypeScript, MapLibre with OpenFreeMap tiles, and AG Grid for the market table.
  • LLM: the live demo runs gpt-oss-120b on Groq. Fanroute runs the Qloo tools in a fixed order (artists, then market ranking, audience, sponsors, support acts, promo and momentum in parallel, then the route and per-stop scouting). The model then gets a compact evidence brief and writes the plan through a schema-validated finalize_plan call: why each city, which venue and partner to pick, sponsor angles, both outreach emails and the risks. A grounding pass keeps only names that appear in Qloo results, and follow-up questions are answered from the same evidence. The timeline shows every tool call live.
  • Full agent mode: with an Anthropic key, Claude Opus 5.5 runs an open-ended streaming tool-use loop over the same tools and decides the order itself. There is also a full Groq tool loop for paid Groq tiers.
  • Market ranking: Qloo destination affinity (one country-wide call, then a city-restricted call for any market it missed), falling back to per-city heatmaps.
  • Routing: demand-weighted insertion plus 2-opt, with drive-time limits, travel and rest days, and penalties for water crossings.
  • Autopilot: a deterministic mode that runs the same tools without the LLM.
  • Qloo endpoints: /search, /entities (Spotify lookup), /v2/insights with urn:heatmap (locality and geohash boundaries), urn:entity:destination, urn:entity:place (with /v2/tags place categories), urn:entity:brand, urn:entity:artist, urn:entity:podcast and urn:demographics, and /v2/trending.

Challenges I ran into

  • One scale for every market. Per-city heatmap scores aren't comparable with each other. A single region-wide heatmap would be, but against the live API it returned about 77 MB in about 70 seconds for North America. Destination affinity turned out to be the answer: Qloo scores every city on one global scale, and a city-restricted query takes about 0.4 seconds.
  • Keeping the agent honest. The plan is a structured tool call validated against a schema, and the prompt forbids inventing anything Qloo didn't return.
  • Routing that a band can actually drive, not just a shortest path: daily drive limits, travel days and rest days.

Accomplishments I'm proud of

A brief turns into a routed, mapped tour with venues, partners, sponsors and outreach in a few minutes, and every recommendation traces back to a Qloo result.

What I learned

Taste data is most useful at the city and neighborhood level. "Where do these fans live?" turns out to be a better routing question than "where are the biggest markets?"

What's next

  • Venue capacity and calendar data.
  • Exporting holds straight into booking tools.
  • Fan pledges (PayPal holds, already working in the app) feeding back into the routing, so pledged cities rank higher before an artist books.

Built With

  • ag-grid
  • anthropic
  • claude
  • groq
  • maplibre
  • next.js
  • openfreemap
  • qloo
  • typescript
  • vercel
Share this project:

Updates

Submission history