Inspiration

About 304 million people live outside their country of birth (UN DESA, mid-2024), and millions more move cities every year. The first weeks are the hardest: you leave behind the café, the record store and the friends who "get" you, and generic city guides don't know any of that. Taste is the thing that travels with you, so we used it as the bridge.

What it does

You tell Soft Landing what you love at home (a band, a café, a film, a brand, a book). An agent powered by Qloo's Taste AI translates that into your new city:

  • Places that match you, with a photo, the reason ("because you love Bon Iver · Aesop") and an "Everyday spot" badge for real cafés, bars, restaurants and bookstores.
  • Your neighborhood: a heatmap of where people with your taste concentrate, clustered into named neighborhoods.
  • Local culture: what people in that city who share your taste listen to, watch, read and follow.
  • Meet someone: add a host, a colleague or a date, see where your tastes overlap and a place you would both enjoy.
  • A landing brief and a 30-day plan you can add to your calendar (.ics) or print.

Try it: open the demo, tap a persona (Berlin, Tokyo or Lisbon) and press "Land softly". The first load can take ~50 s on the free host.

How the agent works (agentic, not a fixed pipeline)

Every action is a call to a Qloo workflow, and what the agent does next depends on what Qloo returned: read the concepts behind your favorites (entity_tags) → find places (recommend) and map the neighborhood (where_popular) → observe: if few places matched it widens with your concepts; if most results are landmarks and memorials it looks for everyday cafés, bars, restaurants and bookstores (find_tags + include_tags); if the heatmap is sparse it adds more of your favorites → name the neighborhoods → listen to the city (recommend with signal_location) → self-check → brief. Up to 8 steps. Every decision is streamed to the UI with its reason ("Agent decisions"), so you can see the loop think. A built-in policy planner runs by default; an optional LLM planner (function calling) can choose the tools instead, with guardrails (whitelisted tools, no retry loops, output limited to what Qloo returned).

How we built it

Zero-dependency Node server, plain ES-module front end, the official @qloo/qloo-harness running in-process (the only authorized surface), bounded concurrency, a private server-side cache and a daily call budget. Qloo credentials live only in the server environment. Hosted on Render's free tier; English and Spanish UI; 23 automated tests.

Qloo usage

entity_tags, recommend (places, music, film, series, books, podcasts, brands; signals, signal_tags, include_tags, filter_location, signal_location), where_popular, find_tags, compare_audiences. The page shows the exact Qloo calls behind every result. No Qloo data is stored in the repository.

Responsible by design

Qloo tags that describe who a person is (ethnicity, religion, nationality, gender, age, language, occupation) are filtered out. Soft Landing translates what you like; it does not infer who you are. Only neighborhood coordinates are sent to OpenStreetMap Nominatim for naming.

Challenges

Running the harness per call was too slow on a 0.1-CPU free host (we moved it in-process). Landmarks dominated "places" for some taste profiles (we added an adaptive everyday-spots pass: Berlin went from memorials to 12 real cafés and bars). Raw concept tags are noisy (curation, de-duplication and sensitive-tag filtering).

What we learned

A recommendation API becomes much more useful when the agent looks at its own results and changes course instead of running a fixed script.

What's next

Friend and host matching at scale, saved landing plans, neighborhood-level reasoning with local events, more cities.

Built during the submission period

The project was created on 2026-10-03, after the hackathon began; everything in the repository was written during the submission period.

Built With

Share this project:

Updates

Submission history