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:
- Resolve — every favorite the user types is resolved to a real entity in the Qloo Taste Graph via Qloo's entity search.
- 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.
- 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.
- Trend — it also surfaces what is trending inside the user's taste orbit right now.
- 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
- docker
- fastapi
- javascript
- python
- qloo
Log in or sign up for Devpost to join the conversation.