Inspiration
Sponsorship is how most podcasters and YouTubers get paid, but mid-size creators pitch blind. They chase the same famous brands as everyone else, with no proof their audience actually fits. Qloo's taste graph knows what an audience really loves, so I built an agent that turns that data into a sponsorship pipeline.
What it does
SponsorFit finds the brands your audience already loves, proves it with data, and writes the pitch.
- Search your show, or add 1 to 5 "shows like mine" if you're too small to be in the graph.
- Watch the agent work. It reads your audience's taste tags, demographics and location heatmap from Qloo, collects the brands they over-index on, and profiles each brand's own audience. Every Qloo call streams to the screen live.
- Get a ranked shortlist with a transparent Fit Score:
Fit = 45% affinity + 25% demographic match + 20% taste overlap + 10% novelty. Filter by category, hidden gems, competitors of your current sponsors, and brand safety. - Open a brand for the evidence: score breakdown, both audiences' age profiles, shared tastes and a rate advisor.
- Draft the pitch in Casual, Professional or Bold tone, with two follow-ups and a host-read ad script.
- Publish a public media kit with the data built in and a view counter.
- Track the deal on a Pitched, Replied, Negotiating, Won, Lost board.
Every shortlist has a "Without vs. With Qloo" panel. On one side is what an LLM guesses with no data (VPNs, meal kits, mattresses). On the other are the specific brands this audience measurably over-indexes on. Remove Qloo and the app has no shortlist, no score and no evidence.
How I built it
- Agent: a fixed seven-step pipeline (Resolve, Profile, Discover, Enrich, Score, Critic, Generate) in Next.js route handlers, streaming progress as NDJSON.
- Deterministic scoring: the Fit Score is plain maths over Qloo data, not an LLM opinion, so it is reproducible and explainable.
- LLM for judgment only: Groq classifies categories, flags brand-safety issues and competitors, and writes reasons and pitches. A guardrail rejects any output containing a number I didn't provide and falls back to a data-built template.
- Production basics: Supabase Postgres with Row Level Security on every table, Supabase Auth, retries and caching for Qloo, a 40-call budget per run, a daily run limit, and a run lock against double starts.
- Frontend: Next.js 15, React 19, Tailwind, and hand-drawn SVG charts. Deployed on Vercel.
Challenges I ran into
- Smaller shows are often missing from the taste graph, so I added "shows like mine": any podcasts, artists, films or books can stand in as the audience signal.
- Keeping the LLM honest. Pitches quote real numbers, so every figure is validated against the facts passed in.
- Model and key availability changed under me, so both the Qloo and Groq clients fall back gracefully instead of failing a run.
What I learned
Putting the data first and the LLM second makes the output trustworthy: scores come from maths, and the LLM only writes around facts it was given. Streaming the agent's steps makes the product feel like an agent rather than a spinner.
What's next
Gmail sending and reply tracking, YouTube and Spotify audience imports, brand-side discovery (brands finding creators), and benchmark CPMs by category.
Built With
- groq
- nextjs
- postgresql
- qloo-api
- react
- supabase
- tailwindcss
- typescript
- vercel
Log in or sign up for Devpost to join the conversation.