Headliner: Route the tour your fans already want

Inspiration

Planning a tour is a high-stakes guessing game, especially for independent musicians and comedians.

The obvious cities are not always the right cities. A large follower count does not tell a booker where an act culturally resonates, which smaller market might outperform expectations, which supporting artist can strengthen the bill, or what message will actually connect with local fans. A generic AI can produce a confident-looking itinerary, but confidence is not evidence.

That led me to a question:

What if an agent could plan a tour the way a great booker thinks—balancing cultural affinity, audience fit, room size, and the realities of the road?

I built Headliner, a tour-routing agent powered by Qloo's taste graph. Instead of asking an LLM to guess where an artist should perform, Headliner gives the agent cultural evidence. It finds the markets where an act over-indexes, turns thousands of geographic taste signals into a ranked set of touring markets, routes a practical run of shows, sizes each room, recommends supporting acts by audience fit, and drafts a locally relevant booking pitch for every stop.

Without Qloo, Headliner could still draw a line between cities. It could not know why those cities, those openers, or those local angles belong on the tour.

What it does

A user enters the name of a musician or comedian, chooses the approximate number of cities, and can optionally choose a starting city. Headliner then:

  1. Resolves the act to the correct Qloo entity.
  2. Reads Qloo's geographic affinity heatmap and aggregates it into touring markets.
  3. Builds an audience profile from Qloo demographic signals.
  4. Selects culturally strong markets while considering the shape of the route.
  5. Calculates the route, road mileage, travel days, and show days deterministically.
  6. Sizes the room using the act's overall scale and relative strength in each market.
  7. Finds candidate venues through Ticketmaster.
  8. Uses Qloo's local taste signals to create a city-specific promotional angle.
  9. Compares similar acts by taste affinity, shared audience geography, and the new reach they add.
  10. Produces a complete tour plan with a venue pitch for every stop.

The result is presented as a live, self-drawing tour map and a set-list-style itinerary. Each stop explains its market rank, route position, room tier, local taste, marketing angle, and booking pitch. The interface also shows the agent's work as it happens, so the plan never appears from a mysterious black box.

Why Qloo changes the answer

Qloo is not a decorative lookup in Headliner. It is the evidence layer behind the agent's most important decisions.

The heatmap reveals where an act culturally over-indexes. Similar-entity results seed potential support acts. Demographic insights help describe the audience. Location-scoped taste tags reveal how the same fan base differs from city to city.

For market scoring, nearby heatmap cells are grouped into metropolitan areas. Each market receives a popularity-weighted affinity score:

[ S_m = \frac{\sum_{i \in m} a_i(0.25 + p_i)}{\sum_{i \in m}(0.25 + p_i)} ]

where (a_i) is a cell's affinity and (p_i) is its popularity. Scores are normalized against the act's strongest market and presented to users as clear rankings rather than opaque decimals.

For supporting acts, Headliner goes beyond “these artists sound alike.” It compares their geographic audience vectors. One score captures how much of the headliner's market strength an opener shares; another captures the reach that opener adds in markets where the headliner is weaker. That lets the agent make an actual booking trade-off: reinforce the existing audience or expand it.

How I built it

Headliner is a single Next.js application with a streaming agent endpoint and an interactive React interface.

The backend uses the OpenAI Responses API in a function-calling loop. The model can call a focused set of tools for artist lookup, fan markets, demographics, local taste, opener candidates, venues, route planning, and final submission. Each run has a session that stores every piece of evidence gathered along the way.

I deliberately separated judgment from computation:

The model chooses; code computes.

The agent can decide which markets make strategic sense, but it cannot invent mileage, show days, market strength, or venue results. A deterministic nearest-neighbor route followed by a 2-opt improvement calculates the itinerary. Code assigns travel days and rest days. The final submission is validated against the markets, venues, route, and taste data already collected.

The Qloo client handles artist search, heatmaps, demographics, similar artists, local taste, and scale data. Responses are cached in memory and on disk to protect API quotas and keep repeated demonstrations consistent. Ticketmaster supplies venue candidates, while a conservative classifier rejects arenas and flags venue sizes that cannot be verified from available data.

On the frontend, the API streams newline-delimited JSON events. The interface progressively renders Qloo's heatmap, the calculated route, tool activity, and finally the complete plan. MapLibre powers the map and animated route. The visual direction borrows from tour posters, printed set lists, and road books rather than traditional SaaS dashboards.

Every external source also has a deterministic mock implementation. With no API keys, the entire product still runs end to end and clearly labels the result as mocked. With keys configured, the same agent tools and UI operate on live sources.

Challenges I faced

Turning heatmap data into bookable markets

Raw geographic cells are useful to a machine but not to a tour manager. I had to map them to recognizable metropolitan areas, ignore distant cells, combine affinity and popularity without letting one noisy point dominate, and normalize the result without pretending it was a ticket-sales forecast.

Keeping the agent grounded

An LLM is excellent at strategy and language, but tour plans contain facts that should never be improvised. Early architectural decisions were therefore less about prompting and more about boundaries. The agent receives typed tools, strict schemas, bounded inputs, computed routes, and a final validation step. Reader-facing copy is even checked to prevent raw internal scores from leaking into the plan.

Finding what is locally distinctive

Location-scoped taste results often contain tags that appear in many cities. Repeating the same marketing angle at every stop would look personalized without actually being useful. Headliner compares tags across the entire routed run, filters the common ones, and prioritizes what makes each city's audience different.

Matching venues without capacity data

Ticketmaster's venue search does not provide dependable capacities. Rather than fabricate them, I classify conservative room types from venue names, prioritize exact matches, label unknown matches as unverified, and exclude arenas from smaller-room recommendations.

Making a live agent demo dependable

The full workflow touches multiple APIs and can involve many tool calls. I added bounded retries, timeouts, caching, per-visitor rate limits, cancellation, explicit live/mock indicators, and a scripted planner that exercises the same tools when an OpenAI key is unavailable. This made the application demonstrable without hiding which sources were real.

What I learned

The biggest lesson was that a useful agent needs more than intelligence. It needs evidence, constraints, and honest uncertainty.

Qloo gave the agent something an LLM could not manufacture: a structured view of cultural relationships. But the best results came from combining that cultural intelligence with deterministic systems. Qloo helps answer where and why. Routing code answers in what order. Scale logic answers what size room. Validation ensures the final story matches the evidence.

I also learned that personalization is not the same as inserting a city name into a template. A useful local recommendation must be comparative: what is meaningfully different about this audience here? That insight led to the cross-city taste filtering and made the marketing output far more actionable.

Finally, building mock and live modes together forced me to make provenance visible. Headliner always says whether Qloo, venues, and the planner are live or simulated. Cultural intelligence is only valuable when the user can understand where the recommendation came from.

Accomplishments I am proud of

  • Built a genuine multi-step agent rather than a one-shot generated itinerary.
  • Made Qloo central to market selection, audience understanding, opener matching, and local promotion.
  • Created an opener-ranking model based on both shared audience and incremental reach.
  • Kept route mileage, show days, room sizing, and market rankings outside the LLM.
  • Built a transparent streaming interface that exposes the agent's progress and data provenance.
  • Made the complete experience work with live services or deterministic mocks.
  • Added automated tests covering routing, demand aggregation, artist matching, venue sizing, taste filtering, rate limiting, start-city behavior, and model-cost calculation.

What's next

Headliner currently produces a culturally grounded booking hypothesis. The next step is to turn it into a full tour-finance workspace by adding guarantees, ticket-price scenarios, fuel and hotel costs, venue availability, historical sales, and editable routing constraints.

I would also expand beyond music and comedy. Qloo's cross-domain graph could help an agent choose brand partners, after-show venues, local press angles, and neighborhood experiences that fit the audience in each city. A tour would stop being a repeated show in different locations and become a culturally coherent experience designed for every market.

Headliner started with a simple belief: the best tour is not the one an AI can make sound plausible. It is the one supported by evidence about what people actually love.

Built With

Share this project:

Updates

Submission history