Try it: https://tastebridge-xofy.onrender.com (free hosting: the first load can take ~50 s while the server wakes up). Click Just looking? Try it with an example and watch the agent's steps; results appear in ~5 s and are refined by ~20 s. Then tap an answer at the top to change it (the last question, Anything else on your mind?, takes a wish in any language, e.g. "somewhere quiet to study"), or click Meet a Taste Twin at the bottom. No login needed. Demo video: https://youtu.be/YEsHbG2mLL4
Nebius & NVIDIA: TasteBridge's agent is NVIDIA Nemotron 3 Super (
nvidia/nemotron-3-super-120b-a12b) served by Nebius Token Factory through its OpenAI-compatible API. We compared four Nemotron models on Token Factory for tool calling and latency; Super 120B gave reliable tool calls in under a second with the least reasoning overhead. Nemotron plans with three tools (re-running our ranking engine with a Qloo tag, searching Qloo tags, exploring cross-domain taste), then writes explanations that a checker grounds against the data. The whole demo has run on a $30 Token Factory credit.
Inspiration
We are international students in London. The first months abroad are lonely in a very specific way: you lose the places that made you you: your usual noodle shop, the café that played your music, the friends who got your references. Research on international students links leisure to lower acculturative stress and better integration, and shows that loneliness often follows when social networks break during the move.
But "things to do in London" lists, and chatbots, send everyone to the same landmarks. Nothing starts from who you already are.
What it does
You answer one short question at a time: 2–5 favourites from home (music, films, TV, books, games, people), where you live, the food that tastes like home, and how you feel this week (from missing home a lot to ready to explore). TasteBridge gives you:
- A taste of home: home-style food near you, for the homesick days.
- Bridges: local places loved by people who share your taste. Every card says why ("Popular with Faye Wong fans: …") and which favourite led there.
- Your taste, translated: Qloo's descriptors of your taste (e.g. Artistically Rich, Lushly Animated) and the artists, films and TV people like you love.
- A map of every pick relative to home, with "Open in Maps" links.
- Taste Twin: met someone new? Enter both people's favourites and get spots near your halfway point that suit both of you, plus conversation starters grounded in what each of you actually likes.
You can add a wish in any language ("somewhere quiet to study", 我有点想家). The agent looks up matching Qloo tags and re-plans, and tells you honestly when not enough places match.
While it works, the page shows each step the agent takes, live: matching your favourites, spotting one that doesn't fit the others, searching Qloo's tags, re-planning.
How we use Qloo
Qloo is the core of every result, not a side lookup:
| Qloo capability | What TasteBridge does with it |
|---|---|
/search |
Resolve each favourite to a Qloo entity (top-3 candidates, closest name wins; the page shows any surprising match) |
/v2/insights places + filter.location / radius |
One taste-ranked list of nearby places per favourite, which our engine fuses |
filter.popularity.max |
Cap tourist magnets, more strongly the more adventurous you feel |
filter.tags + /v2/tags |
Home-cuisine places (Taste of home), and the agent's on-the-fly filters ("quiet", "live music") |
filter.exclude.tags + entity tags |
Drop hotels, offices, schools, tours and members-only rooms |
/v2/insights with urn:tag |
"Your taste, translated" descriptors, and the tastes two Taste Twins share |
| Cross-domain insights (artist / movie / tv_show) | Artists, films and TV people with your taste love |
Why it's better because of Qloo: asked directly, the LLM named places it couldn't back up: 51 of 80 couldn't be found in Qloo at all. Raw Qloo results are close by but dominated by landmarks (Big Ben, Piccadilly Circus). TasteBridge on top of Qloo:
| Method (20 personas × 4 picks) | Tourist hotspots | Distance from you | Real leisure places |
|---|---|---|---|
| LLM only | 62% | 2.5 km | 34% |
| Qloo, city-wide | 59% | 5.5 km | 81% |
| Qloo, nearby | 58% | 1.1 km | 81% |
| TasteBridge | 5% | 1.2 km | 100% |
(Reproducible with scripts/evaluate.py; raw data in eval/results.json. Synthetic personas, one run.)
How we built it
Ranking engine (app/engine.py), borrowing from our sequential-recommendation research:
- Two branches, loosely coupled. "Into it now" favourites (ordered, recency-decayed) and "always loved" favourites (orderless) are ranked separately with reciprocal-rank fusion and fused late, so neither dominates.
- Denoising. Leave-one-out consistency: a favourite whose recommendations don't overlap with the others (a gift, a one-off, a wrong match) is down-weighted, and the page says so.
- Popularity and chain debiasing. Tourist hotspots and chains are pushed down, not banned.
- Attribution. Each place records which favourite produced it; a cause-diversity re-rank (MMR) stops one favourite from explaining everything.
- Group fusion for Taste Twin. Least-misery aggregation: a place scores as well as the person who would like it less.
Agent (app/agent.py): NVIDIA Nemotron (nvidia/nemotron-3-super-120b-a12b) on Nebius Token
Factory, called through the OpenAI-compatible API with tool calling. Tools: build_plan (re-run the
engine with a tag, area or mood), search_tags, expand_taste. Guardrails: the engine's plan always
exists first; the model can only pick IDs the engine returned; every explanation must cite the
favourite that caused it (otherwise it's replaced); a banned-phrase list keeps out generic AI copy;
a filter that finds too few places is reported to the model before it writes, so it can't claim
"quiet, good for studying" about places that weren't filtered.
App: FastAPI streams the engine's draft (~5 s) and each agent step over server-sent events, then the curated version. Leaflet + OpenStreetMap map; postcodes.io geocoding; per-visitor rate limits to protect the free demo. Deployed on Render.
Psychology: the familiar-vs-new mix follows acculturation research (Berry: people adapt best by integrating, keeping home culture while engaging the new one) and optimal-novelty theory (Berlyne: too familiar is dull, too foreign is stressful).
Challenges we ran into
- Raw results were landmarks. Qloo's place results for almost any taste lead with Big Ben and the Lion King musical. Per-favourite queries, popularity caps and debiasing fixed most of it.
- Noise detection flagged the majority. Our first rule marked all three favourites of one persona as noise. Noise is now "the single odd one out, and only if the others agree".
- The LLM explained what it didn't do. When a "quiet" filter found too few places, Nemotron still described the original picks as quiet. We now tell it before it writes.
- Whose favourite is whose. Taste Twin starters asked the friend about the user's favourites, or talked about "your friend" to the friend; a check now swaps those lines.
- Some cuisine tags are empty. "Nigerian" maps to several Qloo tags and the first had no places; we now try the likeliest tag kinds in turn.
- Rate limits and cold starts on free tiers: caching, back-off, and a page that explains a slow first load.
Accomplishments that we're proud of
- Every recommendation is traceable to a real favourite and a real, verifiable place.
- Tourist hotspots down from 58–59% (raw Qloo) to 5%, with picks ~1 km from home.
- A live view of the agent's reasoning that makes the "agentic" part visible, not a black box.
- It works across cultures: we tested Chinese, Korean, Japanese, Indian, Nigerian, Ghanaian, Brazilian, Mexican, Spanish, Italian, French, Turkish, Iranian, Vietnamese, Thai, American and Polish personas, and answers come back in the user's language.
What we learned
- The value of a taste graph is cross-domain: music and film taste predict cafés and bars surprisingly well, but only after you remove what everyone likes.
- LLMs are best as curators and explainers on top of grounded data, with checks on what they write.
What's next
- A real pilot with international students at our universities, with before/after loneliness and belonging measures.
- Group plans for societies and flatmates (more than two people).
- Events and time ("tonight", "this weekend"), and booking or splitting the bill for a Taste Twin meetup.
- Cities beyond the UK.
Built With
- fastapi
- leaflet.js
- nebius-token-factory
- nvidia-nemotron
- openai-sdk
- openstreetmap
- postcodes.io
- python
- qloo
- server-sent-events