LifeMatch — Find Your Home, Not Just a House
Inspiration
Apartment hunting is broken. Every search starts the same way — bedrooms, bathrooms, price range, square footage. But none of that tells you whether you'll actually enjoy living there.
We kept asking ourselves: what if you could just describe your life? What if instead of filters, you could say "I bike everywhere, I love rock climbing, and I need to be close to UCI" — and the search actually understood you?
That question became realELife.
What It Does
LifeMatch is a natural language apartment search that finds homes based on how you actually live. You describe your lifestyle — your hobbies, your commute, your vibe — and LifeMatch parses what matters most to you, asks follow-up questions to fill in any gaps, and surfaces apartments scored against your real priorities.
Each result comes with a lifestyle match score and a visual map showing your apartment alongside the places that matter to your daily life — gyms, coffee shops, your campus, your workplace.
How We Built It
- Frontend: SvelteKit — fast, lightweight, and great for building reactive UIs quickly under hackathon time pressure
- AI Layer: Gemini 2.5 via the AI SDK and OpenRouter to parse natural language lifestyle descriptions into structured JSON, which we use to score and filter listings
- Apartment Data: Stored and served locally, with attributes that map to lifestyle factors
- Heatmaps: Generated heatmaps for lifestyle dimensions like nightlife intensity, walkability, and neighborhood quiet — giving users a visual sense of each area beyond just the listing
The core technical challenge was the translation layer: taking something as fuzzy as "I like a chill vibe and need to be bikeable to campus" and converting it into structured data we could actually compute against. Gemini 2.5 handles this beautifully — we prompt it to return clean JSON with weighted lifestyle priorities extracted from the user's message.
Challenges
Structuring unstructured intent. Human language is messy. People describe the same preference in a hundred different ways. Getting the LLM to reliably extract structured, weighted priorities from freeform input — and doing it consistently — took significant prompt engineering.
Scoring apartments meaningfully. A match score is only useful if it actually reflects what the user cares about. We had to build a weighted scoring system that respects priority ordering — your commute to school matters more than proximity to a coffee shop — and surfaces that reasoning transparently to the user.
Balancing speed and richness. The LLM parsing step introduces ~10 seconds of latency. We designed around this by making that moment feel intentional — showing the user what the AI is doing (reading your lifestyle, extracting priorities, structuring your search) rather than just a loading spinner.
What We Learned
Natural language is a genuinely better interface for high-context decisions. Filters work when you know exactly what you want. But apartment hunting is a lifestyle decision — and lifestyle doesn't fit in a dropdown. Building LifeMatch convinced us that for the right problem, removing the UI is the UX.
Built With
- aisdk
- claude-code
- codex
- google-directions
- google-places
- svelte
- sveltekit
- zod

Log in or sign up for Devpost to join the conversation.