Qlooful Host

Try it: https://qlooful-host.vercel.app ยท Code: https://github.com/himanshumantri/qloo-hackathon

Inspiration

Hosting a great party is harder than it looks. And a good host is nothing short of anxious feelings in making sure his/her guests are taken care of. What do I serve? What do I play? Are the guests actually enjoying it?

That is where Qloo comes to reduce that anxiety feelings. What it does have is a taste graph: it knows that people who love one thing across music, food, brands and TV tend to love certain other things. That is far more interesting. I stopped asking Qloo for facts it doesn't have and used it for what it is great at, to plan a whole night.

What it does

A host picks an occasion (kids' outing, beer party, binge night, poker night, or their own), the guest count and mix, and any special needs such as allergies, volume or kids. They can also name things their guests love. Qlooful Host then returns:

  • Food and drink, music and movies or TV, each rated against the guests' taste
  • A 10-song starter playlist and a checklist that is saved on the device
  • A party page for the day itself: check how close a last-minute guest request is to what's planned, and get one personal pick per guest from a note like "Kathy is a big Coldplay fan and likes her beer"

How I built it

The key rule is Qloo first, AI second. A plain-code pipeline asks Qloo to resolve favourites, tags and audiences, then chains the results: food and drink seed the music search ("people who like Heineken also love Fatboy Slim"), and music and brands seed the shows. Genres act as hard filters, and taste ranks within them. Qloo's /search, /v2/tags, /v2/audiences and /v2/insights endpoints do all of it.

A Claude Haiku 5.5 agent then reads Qloo's candidates, can call Qloo tools to fill gaps or fix a misspelled favourite, and writes the plan, the checklist and the explanations. A validator drops any pick whose Qloo entity ID wasn't returned in that request. The AI cannot invent a recommendation.

Qloo's affinity score is shown as a word, never a raw number:

$$ \text{rating}(a)=\begin{cases} \text{HIGH} & a \ge 0.95\ \text{CLOSE} & 0.85 \le a < 0.95\ \text{WORTH A TRY} & 0.70 \le a < 0.85\ \text{hidden} & a < 0.70 \end{cases} $$

where \( a \) is Qloo's affinity for the pick. Every pick carries its Qloo ID, a "Matched on" signal, and a panel lists the roughly 10 live Qloo requests behind each plan, so the results can be checked. A plan takes about 20 to 30 seconds and costs about 0.002 USD.

The stack is React and Vite on Vercel and Node and Express on Render, with no database. The song titles come from Apple's public iTunes Search API, because Qloo has artists but no songs.

Challenges

  • Rate limits. Qloo returns HTTP 429 on bursts, so every request now runs through a strict one-at-a-time queue with retries and a short cache.
  • Noisy signals. Mixing a genre filter with brand seeds gave obscure artists (a poker night suggested a "cafe music channel"). Separating genre queries from brand-affinity queries fixed it.
  • Fuzzy search. A misspelled "Hienken" matched a billiards club, so names now pass a plausibility check and are reported as not found if they don't fit.
  • Keeping the AI honest. Qloo has no allergen data, so allergy claims are stripped from AI text and replaced with a "check the labels" warning. I also tested fake IDs and hostile notes.
  • Reading free text. Qloo can't parse a sentence, so for personal picks the AI first extracts only the names and interests the host wrote. It recommends nothing, and the screen discloses that step.
  • Deployment surprises. Free hosting sleeps when idle, and a stale backend build and a new domain's cross-origin settings each caused confusing failures.

What I learned

  • Use each tool for its strength. Qloo supplies taste, the AI supplies planning and language, and neither is asked to do the other's job.
  • Grounding by entity ID beats grounding by prompt. A validator makes "no invented picks" true by construction.
  • Show your evidence. Real request logs and IDs build more trust than any claim.
  • Test the data early. My original idea failed within minutes of checking what Qloo could actually return, and that led to the better product.

What's next

More categories such as books and podcasts, one-tap playlist export, and calendar reminders for the checklist.

Built with: React, Vite, Node.js, Express, Qloo API, Anthropic Claude Haiku 5.5, Apple iTunes Search API, Vercel, Render

Built With

Share this project:

Updates

Submission history