-
-
Laugh Track Live (Cedric the Entertainer, Steve Harvey, D.L. Hughley, Kevin Hart): E! News, Victoria's Secret, Beats
-
Portfolio heat grid across four real-performer crowds
-
Add your event: a comedy night brief
-
The agent run with Qloo tool badges
-
The comedy crowd's fingerprint across domains and its one-paragraph summary
-
LLM-only vs Qloo-grounded: they agree on 0 of 10
-
Brand drawer: Overlap disc, shared tastes and the score breakdown for Victoria's Secret
-
Dodgers watch party: inbound offers (Modelo, Liquid Death, Coors Light) compared side by side
-
Dodgers watch party: Official beverage partner ranked head-to-head with qloo_rank (Gatorade vs BodyArmor, Coca-Cola, Pepsi…)
-
Landing: "Stop guessing who sponsors your event." with the comedy night's "Now showing" board
Inspiration
Every concert, festival, comedy tour and college fest needs sponsors, and almost every host picks brands the same way: copy whoever sponsored a similar event, or ask around. Meanwhile, brands increasingly want proof that an event's audience fits them.
We kept coming back to one sentence. Incumbents ask "who sponsored events like yours?" We wanted to ask "what does your crowd actually love?" That second question is exactly what Qloo's cross-domain taste graph can answer, and almost nothing else can. If Marquee worked the same without Qloo, it wouldn't exist.
Sponsorship is serious money: Live Nation — the world's leading live entertainment company and the owner of Ticketmaster — reported about $1.3 billion in sponsorship and advertising revenue for 2025. It has an entire division to sell it. Our users are the hosts who don't: indie festivals, college fests, comedy nights, community runs, club nights and meetups.
Our demo crowds are built from real performers, teams and brands people know: a comedy night with Cedric the Entertainer, Steve Harvey, D.L. Hughley and Kevin Hart as taste signals; a Los Angeles Dodgers supporters' watch party (the Dodgers, Shohei Ohtani, Clayton Kershaw); an indie festival in Austin (Khruangbin, Japanese Breakfast, Mac DeMarco, Alvvays, Beach House); and a Latin-pop arena tour (Bad Bunny, Karol G, Peso Pluma, Rauw Alejandro, Shakira) — the promoter-scale case. The events are fictional and unaffiliated; every brand and number comes from Qloo.
And for the biggest players, the hardest objection is "Brands come to us anyway — and every brand fits a big show." Marquee answers it three ways:
- Fit is not equal. Marquee shows how unequal it really is.
- Pick the right inbound brand. Three beverage brands want exclusivity? Rank them head-to-head for this crowd.
- Find the next sale. Hidden gems and under-sold categories are revenue that inbound demand never surfaces.
What it does
A host drops in whatever they already have — a sponsor deck PDF, a poster, a website or a lineup. Marquee's agent then:
- Understands the event. A Groq vision model reads PDF pages and posters, and every prefilled field shows its source ("from deck p.2"). Sponsor logos on the materials become Existing sponsors, so we never pitch them as new.
- Matches the lineup in Qloo with
qloo_describe. Ambiguous names (Alvvays the band vs the album) show candidates instead of a guess. - Reads the crowd's taste with
qloo_recommendacross music, TV, film, podcasts, books, games, places and brands, plusqloo_audience_demographics. - Discovers brands with a bounded Groq tool-calling agent that seeds Qloo brand recommendations from the crowd's other tastes — that's where the hidden gems come from.
- Quantifies every brand with four Qloo numbers:
- Taste match: rank among all candidates (
qloo_rank) - Audience overlap: how many of the crowd's top 20 tastes the brand's fans share (
qloo_recommend→qloo_compare_audiences) - Local strength: the brand's standing in the event city (
qloo_where_popular) - Momentum (
qloo_trends)
- Taste match: rank among all candidates (
- Checks the web for cited 2025–26 sponsorship activity.
- Delivers a ranked, explained, exportable shortlist on three shelves — Natural fits, Hidden gems, Local heroes — under a split-flap "Now showing" board.
Then the host can work it like a seller:
- Sponsor slots: one winner per category, ranked head-to-head by
qloo_rankamong discovered and inbound brands, with "Why #1 over #2" in numbers and an honest "Too close to call" under 5 points. - Check a brand: a Strong / Good / Weak verdict for any inbound brand, with offers lined up side by side.
- Ranking lenses (Most loved, Strong in our city, Rising, Proven sponsors) re-weight stored Qloo components instantly, with no new API calls.
- Portfolio: properties × brands heat grid, the best property for each brand, and under-sold categories.
- Compare vs LLM-only: the same brief to a plain LLM, shown next to Marquee's evidence.
- Export: CSV and a print-ready PDF shortlist.
Every number traces to a Qloo response or a cited web source. Qloo data and Marquee's interpretation are kept visibly separate with source chips on every claim.
How we built it
- Qloo, the core: a FastAPI backend holds one long-lived
qloo mcpstdio session (official@qloo/qloo-harness), started in the app lifespan with the key passed only through the environment. Every call goes through a gateway with bounded concurrency, retries only whenerror.retryable, automatic session restart and aqloo execfallback. Every envelope is cached bysha256(tool + args)in Postgres. We use 8 of the 9 workflows (describe,recommend,rank,compare_audiences,where_popular,trends,audience_demographics,find_tags) plusqloo api entityfor batch tags. - Agent pipeline: eight explicit stages streamed over Server-Sent Events, each event persisted so finished runs replay exactly. Stage 4 is a bounded Groq tool-calling loop (
gpt-oss-120b) that may only submit brands that actually appeared in Qloo results. - Deterministic scoring: $$\text{Fit} = 100 \cdot \frac{\sum_i w_i c_i}{\sum_{i \in \text{available}} w_i}$$ with weights taste 40, overlap 30, local 15, momentum 10, sponsor 5. Missing components are re-weighted and shown as "n/a". The LLM never produces a score. The same formula runs in Python and TypeScript, checked against shared test vectors.
- Writing with guardrails: the writer (
qwen3.8-27b) gets only the metrics JSON. Every "why" bullet must contain a real number and a valid evidence id, validated in code, regenerated once, then replaced with a deterministic number-backed template if needed. - Front end: Next.js (App Router, TypeScript), Tailwind v4, Radix primitives, Motion, Recharts and d3-hierarchy, plus custom SVG for the Overlap disc and a split-flap board. The design language is "backstage pass meets departure board".
- Data: Supabase Postgres via SQLModel. Hosted on Vercel and Render's native Python runtime — no Docker.
Challenges we ran into
- Reality vs the API we imagined.
compare_audiencesreturns tag profiles, and a crowd of artists shares no tags with a brand. Our fix: compare the crowd with the brand fans' favourite artists, which gives a clean, explainable metric — "Urban Outfitters' fans share 8 of your crowd's top 20 tastes; Pepsi's share 4." - Geohashes, not cities.
where_popularreturns heatmap cells, so we turned them into "Top X% of areas in Austin" and labelled national hotspots by nearest city. - Honest momentum. The hackathon trend series were flat, so we show "Flat" and leave momentum out of the score rather than pretend.
- Rate limits. Groq's free tier allows about 8K tokens per minute per model. We built a per-model rolling token budget, model fallbacks, a prompt cache, per-brand web-research caching and deterministic fallbacks, so the product never shows invented text even when throttled.
- Ambiguity. Qloo returns
needs_inputfor many names. We surface candidates to the user instead of guessing.
Accomplishments that we're proud of
- A real agent, not a wrapper: every badge in the live "Soundcheck" view is an actual Qloo tool call.
- Explanations a non-technical promoter can paste straight into a sponsor email ("Copy talking points").
- An honest product: n/a instead of guesses, "Too close to call" instead of fake winners, citations instead of claims.
- The LLM-only comparison makes Qloo's value obvious in five seconds.
What we learned
- Taste data is most powerful across domains: the brands a crowd loves are best found through the TV shows, podcasts and places it loves.
- Deterministic scores plus LLM narration is the right split: users trust numbers they can trace.
- Designing for limits (memory, rate limits, cold starts) early made the product sturdier.
What's next
- Direct integration with ticketing data (aggregate only) for live audience signals.
- Brand-side view: "which events should my brand sponsor?" (the mirror question).
- Pricing guidance per slot from fit and local strength.
- Team workspaces and shared shortlists for partnerships teams.
Built With
- d3.js
- fastapi
- gpt-oss
- groq
- model-context-protocol
- motion
- next.js
- node.js
- pillow
- postgresql
- pymupdf
- python
- qloo
- qloo-taste-ai
- qwen
- radix-ui
- react
- recharts
- server-sent-events
- sqlmodel
- supabase
- tailwindcss
- trafilatura
- typescript
- vercel


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