The problem

Recommendation engines are trapped inside one category at a time. Your streaming app knows your films, your music app knows your songs, your food app knows your restaurants — and none of them talk to each other. Yet human taste doesn't work in silos: the person who loves Spirited Away, lo-fi jazz-hop and tonkotsu ramen has a coherent taste that should also predict their next book, their ideal Saturday café, and the neighborhood they'll love. Generic LLM chatbots can't do this — they guess from text patterns, with no real model of how cultural tastes connect.

What TasteBridge does

TasteBridge is a hosted AI agent that takes a user's favorite movies, music, and foods and builds a cross-category plan from them:

  1. Resolve — every favorite the user types is resolved to a real entity in the Qloo Taste Graph via Qloo's entity search.
  2. Cluster — the agent infers the user's taste clusters (e.g. "Japanese craft & storytelling", "jazz-soaked slow evenings") from the tags of those resolved entities.
  3. Recommend across categories — seeded by all of the user's entities at once, the agent queries Qloo Insights for books, dining, local experiences/places, and more films and music — the cross-domain jump is the whole point.
  4. Trend — it also surfaces what is trending inside the user's taste orbit right now.
  5. Explain — every single recommendation carries a "why this fits you" explanation grounded in the taste tags it shares with the user's favorites and its Qloo affinity score.

The full agent trace (search → resolve → cluster → recommend → explain) is visible in the UI, so you can watch the agent work — no black box.

What makes it Qloo-powered

TasteBridge would not work the same without Qloo — Qloo is the product:

  • Entity search turns messy free text into Taste Graph entities.
  • Taste clusters are computed from Qloo entity tags, not typed text.
  • Insights recommendations are seeded with a mixed film + music + food signal, producing non-obvious connections (a jazz-hop favorite predicting a vinyl listening café) that no single-category recommender or generic LLM can derive.
  • Explanations and ranking use shared Taste Graph tags and Qloo's affinity scores.

Features

  • Conversational planner UI: favorites in, a full cross-category plan out
  • Live agent trace showing each tool call and its result summary
  • Taste cluster visualization with the underlying tags
  • Five recommendation categories per plan, each item explained
  • Trending-in-your-orbit strip
  • Honest demo mode: without an API key the app runs on a small bundled dataset and labels itself as demo data; with a key it serves live Taste Graph results (and falls back to demo mode, clearly reported, only if the API errors)

How I built it

Python 3.12 · FastAPI · httpx · Qloo Taste Graph API (/search, /v2/insights, /v2/tags) · vanilla HTML/CSS/JS frontend (no build step) · Docker / Render hosting · pytest test suite (agent pipeline + mocked Qloo client). The agent pipeline was built test-first: the planner, cluster inference, and explanation engine are pure functions verified by unit tests, with the Qloo client isolated behind a mockable interface.

Challenges

Qloo entity resolution is forgiving of messy input but returns near-duplicates for popular titles, so resolution needed affinity-based disambiguation. Seeding Insights with mixed-category signals also needed care: too many seeds dilute the affinity signal, so the agent caps and weights seeds by cluster strength.

Try it live: https://tastebridge-jacg.onrender.com/ Code (MIT, public): https://github.com/jeis1027/tastebridge

Built With

Share this project:

Updates

Submission history