Inspiration

Picking a gift or a date night is hard when someone’s taste stretches across movies, music, books, and food. Generic chatbots guess; Qloo already knows how those tastes connect. GiftGenie turns a few favorites into a concrete plan backed by Qloo affinities, not vibes.

What it does

You enter movies, artists, optional books, food preferences, a city, and a budget. GiftGenie:

  1. Resolves each title to a Qloo entity via /search
  2. Maps food words to restaurant genre tags via /v2/tags
  3. Calls /v2/insights with those entities as the taste signal to rank restaurants (location + cuisine), films, artists, books, and brands
  4. Builds an evening timeline and a gift shortlist, each with a why and Qloo affinity
  5. Shows a full “How Qloo powered this plan” trace of every request

Every recommendation and score comes from Qloo. The optional LLM step is off by default so the narrative stays deterministic and Qloo-grounded.

How we built it

Zero-dependency Node HTTP server + vanilla HTML/CSS/JS. Live Qloo client (X-Api-Key) with in-memory caching, one bounded 429 retry, and per-IP rate limits. Mock fixtures let us build before the hackathon key arrived; production uses https://hackathon.api.qloo.com. Deployed on Render free tier.

Demo: https://giftgenie-7mxq.onrender.com
Source: https://github.com/a781345/giftgenie

Challenges we ran into

Waiting on the hackathon API key (mock mode first), making sure the base URL is the hackathon host (hackathon keys return 401 on production), and keeping entity resolution honest when titles are ambiguous (UI shows the matched chips).

Accomplishments that we're proud of

A working public demo on real Qloo data, clear provenance in the UI, and a small readable MIT-licensed codebase with no dependency bloat.

What we learned

Cross-domain taste signals beat prompt-only guessing; /search → tags → /v2/insights is the reliable loop; empty results often mean wrong parameters for filter.type, not a dead API.

What's next

Tighter place filters, better ambiguity handling for search matches, optional LLM polish still constrained to Qloo picks, and sharing a plan as a link.

Built With

Share this project:

Updates

Submission history