Inspiration
Live music festivals are a multi-billion-dollar cultural engine, yet sponsorship matching and on-site activation design are still driven by guesswork. When festival organizers pitch $500k+ stage partnerships across a multi-stage weekend lineup, they run into two practical problems:
- Generic LLMs are culturally blind: Ask an ungrounded LLM to pair sponsors with an Indie Rock stage, an Electronic stage, and a Hip-Hop stage, and it falls back on surface-level genre stereotypes, missing the real audience overlap between specific artists, brands, films, books, and subcultures.
- Sponsorship deals have commercial & physical guardrails: A brand cannot sponsor two stages at once; an apparel partner often requires festival-wide category exclusivity; an intimate tent has a smaller physical footprint than a main headliner arena; and when a sponsor drops out late, re-assigning one stage can trigger a domino effect across the other stages.
We built SetFluence to bridge both sides: an autonomous Cultural AI Festival Sponsorship Studio that grounds brand discovery, stage matching, and cross-domain fan activations in Qloo’s 250M+ taste graph, while keeping commercial rules in clean, deterministic TypeScript guardrails.
What It Does
SetFluence turns a 3-stage festival brief into an evidence-backed, conflict-free sponsorship allocation and on-site activation blueprint:
- Full-Lineup Stage Brand Discovery (
/v2/insights+/v2/tags): Alongside the organizer's 5 target sponsors, the agent queries Qloo/v2/insightsusing all performing artists on each stage jointly (signal.interests.entities=artist1,artist2,artist3) to discover 3 high-affinity new brands per stage and maps their Qloo category tags. - Direct Artist-by-Artist Qloo Affinity Proof: Every stage evaluates its 8-brand shortlist (5 organizer targets + 3 Qloo stage discoveries) using direct Qloo artist-to-brand affinity scores (
0.000–1.000) and per-artist rankings (#1/8). Organizers can click any runner-up brand on the stage leaderboard to inspect a head-to-head affinity breakdown against the stage winner, or lock a preferred challenger to the stage in one click. - Commercial Rule Guardrails & Cross-Stage Routing: Instead of asking an LLM to enforce contracts in prompt text, SetFluence routes sponsors across stages in TypeScript, enforcing Unique Brand Placement, Festival-Wide Category Exclusivity, Stage/Festival Category Restrictions, Locked Placements, and Stage Footprint Compliance, while pre-computing a conflict-free standby backup (
alternativeSponsor) for every stage. - Cross-Domain On-Site Activation Specs (Music → Film / Books / Culture → Brand): For each winning stage-brand pairing, SetFluence queries Qloo across
urn:entity:movie,urn:entity:book, and/v2/tagsto ground 3 concrete on-site fan immersion options in the shared cultural touchstones of that stage's fanbase. - Autonomous Drop-Out & Rule Recovery (
investigateUnfilledStage): Simulate a sponsor drop-out or a sudden category restriction with one click. If existing candidates are blocked by cross-stage exclusivity, the agent detects the unfilled stage, autonomously queries Qloo for compliant replacement brands, re-scores the stage shortlist, and repairs the plan. - Controlled LLM vs. Qloo Benchmark: Built-in side-by-side experiment comparing Condition A (Ungrounded LLM + Commercial Rules) against Condition B (SetFluence + Qloo + Commercial Rules) on the exact same lineup and candidate pool, showing where real audience data diverges from genre stereotypes.
How We Built It
SetFluence is built as a TypeScript monorepo (@setfluence/shared, @setfluence/backend, @setfluence/frontend) running on Node.js 22, Fastify, React 19, Vite, Zod, and Google Gemini (@google/genai):
QlooService(backend/src/services/qloo.service.ts):- Entity Resolution (
GET /search): Resolves artist lineups (urn:entity:artist) and organizer brands (urn:entity:brand) into canonical Qloo URNs with match-confidence classification. - Joint Stage Brand Discovery (
GET /v2/insights): Queriesfilter.type=urn:entity:brandconditioned on all resolved artist IDs on a stage (signal.interests.entities) and normalizes native Qloo entity tags into sponsor categories. - Stage Shortlist Evaluation (
GET /v2/insightswithfilter.results.entities): Evaluates each stage's shortlisted brands per artist to record direct Qloo affinity scores and shortlist ranks (#1..#8). - Cross-Domain Touchstones (
GET /v2/insights&GET /v2/tags): Extracts high-affinity movies, books, and lifestyle tags for each stage's lineup to ground creative activations.
- Entity Resolution (
- Commercial Rule Router (
backend/src/solver/planner.ts):- Evaluates commercial and physical rules deterministically, selects conflict-free primary and standby allocations across all 3 stages, and generates structured
PlanDiffEntrylogs across plan revisions (v1 → v2 → v3).
- Evaluates commercial and physical rules deterministically, selects conflict-free primary and standby allocations across all 3 stages, and generates structured
- Bounded Agent Orchestrator (
backend/src/agent/orchestrator.ts):- Orchestrates
resolveLineup,discoverBrands,evaluateShortlistFit,runPlanner, and reactive recovery viainvestigateUnfilledStagewith a full step-by-step audit trail (AgentTimeline).
- Orchestrates
Challenges We Ran Into & What We Learned
1. Comparing Brand Fit Within vs. Across Stages
When we first inspected Qloo /v2/insights brand affinities across different artists, we noticed that mainstream US hip-hop/pop artists naturally have higher baseline brand affinity numbers (e.g., 0.85–0.96) than UK indie rock bands (e.g., 0.68–0.81) due to commercial brand density in the fanbase data. Initially, we worried that different artist baselines would skew cross-stage comparisons and tried normalizing scores with a custom rank curve, which ended up hiding Qloo's real affinity spread.
We then realized two key insights:
- Within a stage, every brand is evaluated against the exact same performing artists, so direct Qloo affinity scores are 100% comparable head-to-head.
- Across stages, when two stages compete for the same sponsor (e.g., Nike), maximizing total festival affinity compares how much each stage drops from its own
#1brand to its own#2fallback: $$\Delta_s = \text{Fit}(s, b_1) - \text{Fit}(s, b_2)$$ Because each stage's baseline cancels out in the difference, using Qloo's direct raw affinity scores works cleanly both within each stage and across stages, without any artificial score curve.
2. Separating Cultural Intelligence from Commercial Guardrails
Asking an LLM to simultaneously brainstorm creative activations and track cross-stage category exclusivity leads to broken rules during revisions. Separating Qloo cultural signal retrieval, deterministic commercial rule routing, and cross-domain creative synthesis keeps every revision compliant while grounding every activation idea in verifiable Qloo entities.
Built With
- fastify
- google-gemini
- html5
- node.js
- qloo
- react
- typescript
- vite
- zod
Log in or sign up for Devpost to join the conversation.