Inspiration

  • Most brand collabs start with a gut feeling. A café teams up with a record shop because they "feel" alike.
  • Nobody checks if the people who like one place would actually like the other.
  • Qloo has that data. We wanted an agent that uses it the way a partnerships person would.
  • So it picks the crowd, searches the right cities and categories, scores the overlap both ways, and gives you a pitch you can send.
  • We called it Venn.

What it does

You give Venn a business, a city, and up to six things your customers love. You can swipe through a deck of brands, artists, places and topics, or just type them.

  • A "Yes" is a Qloo ID, resolved before the search starts. It isn't a keyword.
  • The search runs in the open, in seven streamed steps:
    • resolve your tastes
    • choose partner types
    • find candidates
    • score them
    • attach shared tastes
    • widen the search if the shortlist is thin
    • build the map
  • Pick one partner and every chart follows it. Pull a shared taste and the whole dashboard re-weights around it.
  • Proof puts Venn's picks next to a popular-baseline pick from the same Qloo ranking, in a single response, so the comparison is fair.
  • Each partner can get a one-page brief and an outreach email.
  • Ask Venn answers only from the search you ran.

How the match score works

  • It's mutual. We take how strongly your anchors' fans rate the partner, and how strongly the partner's fans rate your anchors.
  • The two numbers are combined with a harmonic mean, so one weak side drags the score down.
  • A taste counts as shared only if Qloo tags it on both crowds, at a strength Qloo actually scored.
  • No personal customer data is used. Every score describes groups, not people.

How we built it

  • One TypeScript app: React + Vite on the client, Fastify on the server, SQLite for finished searches.
  • All taste reads go through a single provider on the server. The browser never calls Qloo, and the hackathon key never leaves the backend.
  • Live calls only go to hackathon.api.qloo.com.
  • The swipe deck starts from Qloo-verified IDs. After your third Yes, it refills based on what you picked.
  • Typed names are searched as an entity first, then as a topic. Anything under a 0.6 similarity score is dropped.
  • If a phrase is too broad, we check the suggested rewrite on Qloo before showing it as a suggestion.
  • The built-in examples replay saved Qloo results, so anyone can open a full run without using up the monthly quota.
  • The live demo runs on Render.

Challenges we ran into

The hardest part was not showing any number Qloo hadn't given us.

  • Topics alone rank poorly. A word like "jazz" has to be mapped to real entities first. Otherwise the map just shows whatever is popular nearby. If there's no named taste to start from, the run stops and says so.
  • Shared tastes looked better than they were. Early charts borrowed tags from the partner alone, which isn't overlap. We removed them. Now a bar shows up only if Qloo scored that tag for the partner's own crowd.
  • Proof needed one call, not two. Two separate searches give scores you can't compare. One ranking call per type does. If a type was never searched, the screen says that instead of guessing.
  • The hackathon key needed guardrails: a rate limit, a circuit breaker, and a quota floor that blocks new live runs when it gets low. The saved examples stay on disk, so the demo still opens when the key runs dry.

What we learned

  • "Brands like yours" is a weak brief. Overlap is better, but only if you can point to the exact call behind every line on the chart.
  • We spent more time on that trail than on the visuals.
  • The charts only started to mean something once we let the numbers be incomplete.

What's next

  • More categories and cities
  • Saved searches and team sharing
  • [add one more real next step if you have one]

Built With

Share this project:

Updates

Submission history