Inspiration
What it does
How we built it
Challenges we ran into
Accomplishments that we're proud of
What we learned
What's next for HEARTH
Inspiration Moving to a new city takes a weekend. Feeling at home there can take months. When you arrive, every search engine gives you the same top-ten list it gives everyone else, and none of it knows that you grew up on Sunday jollof, a certain kind of music, or a bookshop where someone knew your name. We wanted a tool that starts with who you are, not where you are, and helps people rebuild the cultural home they left behind. That includes students, expats, new arrivals and people returning home after years away.
What it does Hearth is a taste-transfer agent. You tell it the places, music, food and films that made your old city feel like home, and it finds their real equivalents in the city you're moving to.
Bring your taste: add up to ten favourites ("anchors"), or start from a demo persona such as Adaeze (Lagos → Toronto), Ji-woo (Seoul → Berlin) or Kwame (London → Accra). Live agent run: Hearth matches each favourite to a real entry in the Qloo Taste Graph and carries that taste signal across to your destination. Every step streams to the screen as it happens, so you watch the agent work. A short, ordered list: results are grouped into Comfort (feels familiar), Community (where your people gather) and Discovery (just beyond your taste), with the neighbourhoods that fit you. Grounded by design: a verifier checks every pick against real Qloo data before you see it. Anything the AI model can't back up is removed, and the trace shows exactly what happened. 30-day plan: your picks become a gentle week-by-week plan for settling in. Blend: combine your taste with a partner's or a friend's, and share a card of places you'll both love. Cards can be deleted later with a private token. Private by default: no account and no email. Your profile stays on your device. How we built it Frontend: Next.js 16 (App Router), React 19, TypeScript in strict mode, Tailwind CSS 4 and Motion, with light and dark themes. Agent: a planner → Qloo queries → verifier → composer pipeline. Results stream to the browser over Server-Sent Events, so you see each step live. Any OpenAI-compatible AI model writes the explanations, but only within data Qloo returned. Data: the Qloo Taste API supplies the entity search, recommendations and taste matching that drive every result. Infrastructure: Upstash Redis provides a shared cache, per-IP rate limiting, daily spending caps on Qloo and AI calls, and storage for share cards. Security: every input is validated with Zod, prompt-injection attempts are filtered, the site sends a strict Content-Security-Policy and other security headers, CORS is limited to an allowlist, and the server refuses to start in production if anything required is misconfigured. Hosting: the frontend is exported as static files on Cloudflare Pages, and the API runs on Render. Quality: 48 Vitest tests, CI on Node 22 and 24, CodeQL scanning, and a recorded-data mode so the app runs locally with zero setup. Challenges we ran into Keeping the AI honest. AI models happily invent restaurants that don't exist. We built a verifier that removes any suggestion that can't be traced back to a real Qloo entity, and a proof page that compares Hearth against an AI-only answer. Splitting the frontend and backend across two hosts. Exporting static files meant setting the server-only routes aside during the build. Share links (/s/:id) needed a rewrite rule on Cloudflare and a client-side fallback, and every API route needed proper CORS handling. Speed vs. reliability. One run makes many Qloo calls. Caching, per-call timeouts and streaming progress keep the wait short and visible instead of a frozen spinner. Abuse protection for a public demo. Rate limits and daily spending caps stop a live demo from burning through API quotas. Accomplishments that we're proud of Every recommendation is grounded: no place appears unless Qloo returned it. A full live run, from favourites to results, finishes in seconds, and you can watch the agent think the whole way through. It runs on real infrastructure, with no login wall and no data collection. It's built for people the usual US/EU-centric tools overlook, like someone moving from Lagos to Toronto or returning to Accra. What we learned Taste transfers better through signals than categories. A favourite Lagos art gallery tells you more about someone than "likes museums." Showing the agent's work builds trust. People believe recommendations they can trace back to real data. Privacy and personalisation aren't opposites. Keeping the profile on the device was simpler and made the product feel safer. What's next for HEARTH More anchor types and richer neighbourhood matching. Calendar export and reminders for the 30-day plan. Group blends for families, roommates and student cohorts. Partnerships with universities, relocation services and newcomer organisations. More cities outside the usual tech hubs.
Built With
- cloudflare-pages
- codeql
- eslint
- ffmpeg
- github-actions
- motion
- next.js
- node.js
- openai-api
- playwright
- pnpm
- qloo-taste-api
- react
- redis
- render
- server-sent-events
- tailwindcss
- typescript
- upstash
- vitest
- zod
Log in or sign up for Devpost to join the conversation.