Common Ground is an AI creative strategist and casting agent for brand and agency teams that commission creator content. You give it one brief. It uses Qloo's taste graph to find the cultural world your customers live in and turns that into three or four creative directions. It then finds real creators whose audience shares each direction's taste and writes a priced proposal for every match. Every fact it shows traces back to the Qloo request it came from.

Try it: commonground-peach.vercel.app. The "See the live demo" button opens a finished campaign in one click, with no sign-up.

Inspiration

Brands spend real money on creator content. The hardest decision comes before anyone is contacted: what world does our audience live in, why should this collaboration exist, and what is the idea? Most creator tools answer a different question: who is big in a category. So teams pick creators on gut feel and write briefs that look like everyone else's. When the client asks "why this creator?", they have no answer.

Qloo knows what people with shared tastes also love, across music, TV, film, books, podcasts, brands, places and public people. That is the missing piece. It supplies the shared cultural context that gives a brand and a creator a reason to work together.

What it does

The demo opens an example campaign for Juniper Coffee, a made-up brand launching a cold brew concentrate in the US and UK with a $12,000 budget. The brief names brands customers buy (Blue Bottle, Stumptown) and things they mentioned in interviews (Khruangbin, The Bear).

  • One brief. You enter the product, goal, budget, markets and what you know about your customers. Each audience statement is labelled as customer research, a team belief or a guess. Statements you approved in your brand profile fill it in for you.
  • The agent researches it in twelve steps you can watch, with live status and a time estimate. It reads up on the brand and market on the web and matches each name to Qloo, asking "Which did you mean?" only when a name is genuinely ambiguous. Then it reads the audience's tastes and finds what else these people love.
  • Three or four creative directions, such as The Sunday counter and City errands, iced in hand. Each direction says who it speaks to and where the product fits. It suggests scenes to shoot, a palette and a mood. It lists the insights behind it, each with the Qloo results it rests on, and what to confirm before committing.
  • Four separate checks per direction.
    • Does it hang together?
    • Does it hold up if you drop one input?
    • Does it suit the stated audience?
    • Does it fit what you already know?

In the demo, the last check flags a tension. The craft-led direction runs against interviews saying speed and price matter more than craft, and the check quotes the passage and page.

  • Real creators Qloo matched to each direction. These are public creators whose audience shares the direction's taste, such as Claire Saffitz, Rick Martínez and Brad Leone. Each one shows an Instagram handle, occupations, and the audience's age and gender lean next to your target ages. One click adds a creator to your roster.
  • Your own roster, cast the same way.
    • Import a CSV with rates, availability, notes and preferred flags.
    • Exclude anyone, with a reason.
    • Each creator is matched to Qloo by Instagram handle.
    • Casting applies hard limits first, then past work, then culture fit by rank within one Qloo lookup.
    • Creators without a rate stay in, marked "Quote required".
  • Priced proposals. Each proposal has a concept, an opening line, a shot list and a note on how the product appears. It also lists deliverables, usage and what's still to agree. Each proposal becomes a one-page brief that you can print, save as a PDF or download as Markdown.
  • Budget options built from real prices. Options include one idea with several creators, testing every direction, or the most content for the money. Enter another budget and the options recalculate instantly.
  • Precise control.
    • Edit a proposal. The edit becomes a new version and the old one is kept.
    • Ask for the same idea, simpler production.
    • Swap the creator without redoing the research.
    • Compare two or three proposals side by side.
    • Remove an input and see exactly what changed.
  • "Without Qloo?" The same brief runs again without Qloo's data. The two results appear side by side as A and B until you reveal which is which.

What makes it Qloo-powered

Qloo is where the directions, the evidence, the checks and the casting come from. The example campaign made 122 Qloo lookups and kept 151 results as evidence. It calls five endpoints, used in eleven different ways:

  • /search matches the brands, artists, shows and podcasts in the brief. A name is accepted only when there is one clear match. Otherwise the run pauses and asks.
  • /v2/tags turns interests into Qloo tags.
  • /v2/audiences turns audience descriptions into Qloo audience segments.
  • /v2/insights, filter.type=urn:tag: the lifestyles, aesthetics, emotional tones and hobbies people with these tastes share. This is the raw material for the directions.
  • /v2/insights, urn:demographics: the age and gender lean of the people who like each reference, and of each creator's audience.
  • /v2/insights, entity recommendations with feature.explainability=true: artists, podcasts, shows, films, books and brands, plus which input drove each result.
  • /v2/insights with filter.location.query: places in each market's city, for local shoots.
  • /v2/insights with filter.results.tags: scores a direction's concepts against the audience inputs (relevance) and against each other (coherence).
  • /v2/insights with filter.results.entities: ranks every creator against a direction in one request, so they are compared fairly.
  • /v2/insights, filter.type=urn:entity:person: finds real creators and the category's own talent, such as chefs for coffee or runners for running shoes. Results are filtered by occupation tags and anchored on the brief's own brands. Politicians are excluded, and so is anyone an earlier direction already used.
  • /entities?external.instagram.ids= matches imported creators to Qloo by their public handle.

The sponsor asks whether a project would work without Qloo, and the product answers that itself. In the example, the version without Qloo can only restate the brief, such as the hosting guess and The Bear. The version with Qloo cites things nobody typed in:

  • for a food-culture direction, Le Creuset, Russ & Daughters and Eater;
  • for a neighbourhood direction, High Maintenance, Frances Ha, Café Integral in New York and Prufrock in London.

Only the Qloo version can name real creators whose audience shares the taste.

One insight, traced back to Qloo

  1. Request. GET /v2/insights with filter.type=urn:entity:brand and feature.explainability=true.
    • Entities sent: Blue Bottle Coffee, Stumptown Coffee Roasters, Khruangbin and The Bear.
    • Tags sent: home cooking, hosting friends, coffee rituals and creative dessert making.
  2. Result. Maxwell House Coffee 0.87, Verve Coffee Roasters 0.86, La Colombe 0.85 and so on, with Le Creuset at #7 (0.84).
  3. The fact, written by code: "Le Creuset ranked #7 of 8 brands associated with Blue Bottle Coffee + Stumptown Coffee Roasters + Khruangbin and 5 more (affinity 0.84, this query only); the input contributing most was The Bear (0.29)."
  4. The insight, written by Claude and citing that fact: "Kitchenware, deli and food-media references such as Le Creuset, Russ & Daughters and Eater suggest food culture may be a comfortable shared language, in line with the interview mention of The Bear."

The app's How we use Qloo page shows this trace live, with the full request and every result.

How the agent works

The agent is a durable workflow built on the Vercel Workflow SDK. Each of its twelve steps is idempotent. A step that fails is retried. A run can be cancelled, resumes after a crash, and can pause for your answer and then continue. You can close the tab and it keeps going.

  1. Understand. Claude Haiku 5.5 uses Anthropic's web search tool to read up on the brand, category and market. That way words like "cold brew", "forex" or "prop firm" need no explanation. It also works out who counts as talent in this category. Web results are background only and are never shown as evidence.
  2. Read and look up. It turns the brief into a structured brief and matches each name to Qloo.
  3. Research. It runs taste analysis, demographics and cross-domain recommendations with explainability, and finds places for each market.
  4. Directions. Claude picks Qloo findings by ID and writes insights that must cite them.
  5. Checks.
    • Coherence and audience relevance, scored with filter.results.tags.
    • Input sensitivity: it researches again without each input and measures rank-biased overlap.
    • A fit check against the approved brand profile.
  6. Cast and propose.
    • Real creators come from urn:entity:person.
    • Your roster is ranked with filter.results.entities.
    • Claude writes the proposals.
    • A deterministic optimiser builds budget options from real prices.

Each model step returns structured output that is validated with Zod. When the output breaks a rule, the specific errors go back to Claude and it tries again. Effort is set per step: low for extraction and high for writing.

Why you can trust it

  • Facts come from code, not the model. Every Qloo fact is written by a template from the stored result: its rank, the query it came from and the affinity. Claude only chooses which facts matter.
  • Insights are labelled and checked. An insight must cite at least one Qloo fact. It is rejected if it contains numbers, superlatives, sales or performance predictions, or claims about individuals.
  • Scores are compared only within one lookup. Qloo normalises affinity per request, so creators are ranked against each other in a single request. Missing data is shown as "no data", never as zero.
  • Sources stay apart. Qloo data, customer research, team beliefs, past results and the AI's suggestions each carry their own label.
  • Privacy.
    • Only public names and public handles go to Qloo. Contact details, rates and notes never do.
    • Qloo describes groups of people with shared tastes. Nothing here predicts what one person will do.
    • Qloo responses are cached privately on the server and never committed to the repository.

How we built it

  • App: Next.js 16 and TypeScript, hosted on Vercel.
  • Database: Postgres through Drizzle, using Neon in production and embedded PGlite locally.
  • Durable runs: the Vercel Workflow SDK.
  • Accounts: Better Auth with organisations, and a permission check on every campaign, proposal and roster action.
  • AI: Claude Haiku 5.5 through the Anthropic SDK, with prompt caching.
  • Interface: Tailwind CSS and shadcn/ui.
  • Documents: unpdf reads uploaded research.

We wrote our own Qloo client. It has typed endpoints and trims responses. It keeps a private cache in Postgres and paces requests under Qloo's per-second limit. It logs every call with its parameters, and that log powers the evidence trail.

There are 121 unit tests, plus live contract tests against the Qloo hackathon API. The example campaign isn't hand-made: the real pipeline researches it during deployment.

Challenges we ran into

  • Names are ambiguous. A search for "Blue Bottle Coffee" also returned the Toronto Blue Jays and Blue Origin. We accept a single exact match of the right type, or a clearly dominant one, and ask about the rest.
  • The agent asked too much. Our first version asked users to explain words any marketer knows, like "forex", "day trading" or the name of a prop trading firm. We added the web-backed understand step, so the agent asks only when something is genuinely ambiguous.
  • Affinity scores can't be compared across requests. So casting ranks creators within one lookup. Each creator's best reference counts, so listing more references never helps.
  • Finding the right creators.
    • Asking only for YouTubers and TikTokers sent a running-shoe brief to explorers and self-help authors.
    • With no occupation filter at all, coffee directions went to comedians.
    • We fixed both by anchoring on the brief's own brands and adding the category's talent occupations. Coffee now finds Claire Saffitz and James Hoffmann, and running shoes find Des Linden and Scott Jurek.
  • Rate limits and time limits. A run makes over a hundred Qloo requests, and Qloo allows 10 per second. We pace requests across the whole process, honour Qloo's reset header and cache every response. Serverless time limits pushed us to durable steps.
  • Some data didn't help, so we don't use it.
    • Trends were flat for the brands we tried.
    • Taste data doesn't change by city, so differences between markets come only from local places.

Accomplishments that we're proud of

  • Every number on screen comes from a stored Qloo response and traces to the exact request.
  • The agent notices when its own idea contradicts the brand's research, and shows the passage.
  • Real, named creators from Qloo sit next to the brand's own roster, and both are ranked the same way.
  • A blind "without Qloo" comparison is part of the product.

What we learned

Qloo is most useful when the agent treats it as evidence. That means ranking within a query, keeping the request, and saying "no data" when there is none. Claude is most useful when it can't invent facts and can only interpret the ones it cites.

What's next for Common Ground

  • A commission tracker that follows each creator through shortlisted, contacted, agreed, delivered and published, with usage-rights dates.
  • A map of where each direction is strongest within a market, using Qloo heatmaps.
  • Campaign results flowing back into the brand profile, so the next brief starts from what worked.
  • A link that creators or managers can use to confirm their rate and availability.

Limitations

  • If a brief describes the audience only by age, Qloo can't tell directions apart for it. That check then says "Couldn't check".
  • Qloo can't filter people by country, so a suggested creator may work outside your market.
  • Smaller creators you import may not be in Qloo. They are still cast on their past work and price.
  • The creators on the demo roster are made up and labelled that way. The real creators Qloo suggests have not been contacted.

Try it

We built it from scratch during the hackathon. The first commit is dated 28 October 2026.

Built With

  • anthropic
  • better-auth
  • claude
  • drizzle-orm
  • neon
  • next.js
  • pglite
  • postgresql
  • qloo
  • react
  • shadcn-ui
  • tailwindcss
  • typescript
  • unpdf
  • vercel
  • vercel-workflow
  • zod
Share this project:

Updates

Submission history