Inspiration
Big brands pay agencies thousands to learn who their customers are culturally. Everyone else guesses. I kept meeting founders who knew what they sold but had no idea what their buyers actually listen to, watch or read, which is usually where you'd reach them. Qloo's Taste AI has that data. What was missing was something that could dig through it the way an analyst would, so I built it and made it show its work.
What it does
You type in a brand and watch an AI agent investigate its audience live. It finds the brand in Qloo, decides which cultural domains are worth checking (music, film, TV, books, podcasts, places, games), pulls the data, reads it, and keeps going until it has enough. Every Qloo call appears in a reasoning trace as it fires.
The result is an audience playbook: a cultural persona, the things this audience is unusually into (high affinity but still low fame, so you can own them), one surprising cross-domain "blind spot" a competitor would never link to the brand, and concrete collaborations, content and channels.
For an agent hackathon the point that matters is that the agent picks the sequence of calls, not a script. Different brands send it down different paths, it scans a different number of domains, and it stops at different moments. When a brand is too small to be in Qloo, it falls back to a few comparable brands and says so in the trace instead of failing. The sequence of calls is the product, and you can watch it happen.
How I built it
It's a ReAct loop on Groq (gpt-oss-120b, OpenAI-style function calling) with two tools: one resolves a brand to a Qloo entity, the other scans a domain for affinities. The backend is FastAPI with async httpx, streaming every event to the browser over Server-Sent Events. The front end is React and TypeScript.
I used Qloo's /search and /v2/insights across eight entity types, and ranked everything in code from Qloo's own numbers: affinity times (1 minus popularity), which surfaces what's loved but not yet obvious.
One rule I set early was to never fake a statistic. Qloo doesn't give a population baseline, so I refused to print the "3x more likely than average" multipliers these tools usually invent. The app shows only Qloo's two real signals, affinity and popularity, and keeps a hard line between what a Qloo call grounded this run and what the model is only suggesting. The agent can name entities only if they actually came back from Qloo; anything it invents gets dropped before it reaches the page.
Challenges I ran into
The honesty rule took more work than the agent did. Letting the model write a slick insight is easy. Templating those lines in code so it can't quietly embellish is not.
gpt-oss is a reasoning model, and early on it kept returning nothing because the thinking used up the whole token budget. Tuning the reasoning effort and the output size fixed that. The free tier also caps at 8,000 tokens a minute, so I pool a few keys with automatic failover to keep live runs around 15 to 20 seconds under load.
Keeping the agent real mattered too. The easy shortcut is to hard-code the call order and let the model narrate over it. I kept the real decision with the model, which meant handling messier, less predictable runs.
What's next
More domains, deeper multi-turn digs per brand, saved audiences, brand-versus-brand comparison, and a one-click export to a shareable brief. The people who need this most are small brands and solo marketers with no research budget, so the natural model is a few dollars per run or a monthly seat, with the instant examples staying free as the way in.
Built With
- fastapi
- gpt-oss
- groq
- httpx
- nginx
- pydantic
- python
- qloo
- react
- server-sent-events
- tailwindcss
- taste-ai
- typescript
- uvicorn
- vite
Log in or sign up for Devpost to join the conversation.