Inspiration

Agents today are culturally blind and recommenders are black boxes. Qloo's taste graph knows what sits next to what; nobody shows the user why. CiteLens taught us to audit citations for research answers — TasteLens applies the same discipline to taste: every recommendation must bring its receipts.

What it does

The user names 2–3 beloved cultural entities (film / book / artist / destination). TasteLens resolves them via Qloo /search, fans out /v2/insights calls across six domains with the seeds as signals and explainability on, merges and ranks by affinity, and composes a weekend briefing in which every factual sentence cites the evidence entry for its recommendation — the Qloo affinity plus the per-seed contribution breakdown. A citation audit (CiteLens engine) reports coverage and flags anything unsupported.

How we built it

Pure Python standard library (zero deps): qloo_client.py implements the documented hackathon surface (hackathon.api.qloo.com, X-Api-Key header, GET query params, no legacy /recs); app.py runs resolve → recommend → brief → audit; vanilla JS UI renders briefing, cards and evidence. A clearly-labelled mock mode let us build and test the whole pipeline before the manually-issued API key arrived; the submitted demo runs in LIVE mode against the real Qloo API.

Challenges

Three real ones from live integration. (1) The briefing endpoint requires a seeds list in the POST body — a preset-id-only call returns 400 "seeds list is required", so the client sends full seed objects. (2) The first Render deploy failed its port scan because the server bound 127.0.0.1; binding 0.0.0.0 fixed it with no logic change. (3) The managed browser cannot screen-record, so the demo video is a narrated slide walkthrough built from a real live-API response (mode=live, 19/19 cited sentences, 18 evidence entries) rather than captured footage — every recommendation name and affinity score in it comes from that real response.

Accomplishments

End-to-end pipeline with 100% citation coverage on briefings; explainability surfaced per card, not buried in JSON; live Qloo affinity and per-seed contributions verified across all six domains and all three presets.

What's next

Tavily enrichment (a public web source per pick), location-aware place picks by city, shareable briefing links, multi-person "group taste" merge for trip planning.

Built With

Share this project:

Updates

Submission history