▶ Try it: headcount-live.lovable.app (no signup; click a scenario card or run your own offer)
Inspiration
Every week, independent promoters and venue talent buyers sign a check before a single ticket is sold: a guarantee to the band, plus the room and the marketing. In 2024, 64% of America's independent stages operated without profit (NIVA, via Pollstar), and 56% of independent operators say advance ticket sales are down (NIVA × Bandsintown, 2026). A weak night on a flat guarantee can wipe out a good night's profit.
The tools buyers have answer the wrong question. Streaming dashboards show where an artist's existing fans are. Forecasting tools look at past ticket sales, which are thinnest for exactly the regional and developing acts buyers take risks on. And if you ask a general AI, it'll often say "GO, instant sellout," because it knows the band is famous. It doesn't know whether this city loves them.
That's a taste question, and Qloo's taste graph can answer it.
What it does
Enter a band, a city, a room size and the guarantee you're about to offer. Headcount returns a plain answer:
- GO (book it as offered), RESIZE (book it smaller: here's the room and the most to pay), or PASS
- Why: where the city ranks among 105 US metros for this band's audience, what a plain AI without Qloo data would have said, and whether the agents agreed
- Ready-to-send drafts: a hold request at the recommended terms, openers this city's fans like, sponsor targets, and spots where this audience already goes for posters. Headcount drafts them; you send.
Graduated autonomy: low-risk offers are handled automatically. If the guarantee is large, demand is soft, the agents still disagree, or the arbiter had to override the AI, Headcount stops and a person makes the call.
Try the three scenario cards (recorded live runs, replayed at 2×), or run your own offer live:
- "The AI would've signed it": Khruangbin · Omaha · 1,500 seats · $25K. In this recorded run, the plain AI said GO. Qloo ranks Omaha 86th of 105 for Khruangbin's audience → RESIZE to 350 seats, max $6,000.
- "Hometown hero": Turnpike Troubadours · Tulsa → rank 1 of 105 → GO, drafts created automatically.
- "The agents disagree": Japanese Breakfast · Tulsa → the Skeptic says PASS, the Deal Agent says RESIZE → you decide.
What makes it Qloo-powered
Each offer makes 7 Qloo calls across 6 query types. Without Qloo, there's nothing to reason over:
/search: resolve the band to a Qloo entity (genres, photo)/v2/insights·urn:heatmap: thousands of taste cells across the US. Our code maps 105 metros to their cells and ranks them → city rank and a "known but not loved" signal/v2/insights·urn:entity:artist: acts with the same audience/v2/insights· artist + the band's genre tags + city: openers in this genre that the city's audience likes/v2/insights·urn:entity:place+ city: where this audience already goes (poster spots)/v2/insights·urn:entity:brand: sponsor targets/v2/insights·urn:demographics: who's in the room (age, gender)
A separate agent answers the same offer without Qloo data, on the same model, and the app shows both side by side.
How we built it
- Agents (LangGraph): Scout → Demand Analyst ∥ Comps Agent ∥ Plain-AI Baseline (run in parallel) → the math → Skeptic ⇄ Deal Agent (one rebuttal round) → Risk Gate (LangGraph
interrupt()for human approval). - The math is rules, not vibes: recommended room and max guarantee scale with the city's rank (demand factor = percentile ÷ 75, between 0.25 and 1). Missing data becomes "thin data → PASS", never a made-up number.
- Guard rails: the Deal Agent (Gemini 3.1 Pro) can move the verdict at most one step. Code clamps its numbers and strips any opener, sponsor or venue that didn't come from Qloo.
- Backend: FastAPI on Cloud Run, with Server-Sent Events streaming every step live and keys in Secret Manager. Firestore holds the audit trail (every agent step, every Qloo endpoint called with latency and the reason) and the recorded demo runs. Qloo responses stay server-side, never in the repo.
- Frontend: built with Lovable (React + TanStack Start + Tailwind), wired to the live API.
- Tests: 21 backend tests (metro math, rules, guard rails, risk gate, Qloo rate-limit retries, a full graph run with fakes) plus frontend tests. Load-tested with 6 simultaneous live runs.
Challenges
- Finding openers a city likes: adding a city to a taste query barely changed the results. Filtering by the band's two most specific genre tags plus a location signal worked much better, and sometimes surfaces real local acts (e.g. Broncho and Wilderado for Tulsa), though not always.
- Turning a heatmap into a decision: raw affinity scores bunch up near 1.0, so we rank each city against 104 others instead.
- LLM verdicts vary run to run. We made the rules own the numbers, limited how far the AI can move them, and added recorded replays so judges see consistent scenarios.
Accomplishments
- A plain AI and Headcount can disagree, and you can see why: on-screen, with the city's rank and audience.
- A real human-in-the-loop moment that pauses the agent graph and resumes it, not a fake button.
What we learned
The plain AI isn't dumb. For famous acts in obvious markets it often gets the direction right. Qloo's value shows up in the size of the deal (350 seats, not "1,000–1,500") and in the cases where fame and local taste diverge.
What's next
- Back-test against real settlement data with a partner venue (we haven't done this yet)
- Ticket-price and on-sale timing suggestions from audience demographics
- Routing: suggest which nearby cities to add to a tour
Built With
- fastapi
- firestore
- gemini
- google-cloud-run
- google-secret-manager
- langgraph
- lovable
- python
- qloo
- react
- tailwindcss
- tanstack
- typescript
Log in or sign up for Devpost to join the conversation.