Inspiration

Anyone who has tried to buy or rent in the UK knows the drill: a dozen browser tabs, a mortgage calculator that disagrees with the last one, and a sinking feeling that you're missing something about the street. The numbers back that up. It takes 104 days on average to get from offer to exchange, 37% of agreed sales fall through, and conveyancing complaints are up 41%.

Look at what people actually complain about and it isn't lack of information. The government already publishes sold prices, energy ratings, crime, flood risk, schools and transport, for free. The problem is that nobody puts it together for your situation, and nobody does the chasing. Hearth is an agent built to do both.

What it does

You type one message, like "My partner and I are first-time buyers on £85k and £45k with a £60k deposit, looking for a 2-bed near a tube in West London", and Hearth:

  • works out who you are (two applicants, first-time buyers, hard filters vs. nice-to-haves) and asks only for what's missing
  • shows what you can afford: borrowing range, stamp duty under first-time-buyer rules, upfront and monthly costs
  • finds real listings from estate agents' and build-to-rent operators' own websites
  • enriches every home with open data (Land Registry sold prices, EPC floor area, crime, TfL commute times, flood risk, schools, GPs, council tax), and every fact links to its source
  • ranks the homes, tells you why each one fits and what the trade-off is, and learns from "not for us" feedback

How it's built

  • Orchestrator: An AI agent runs a tool-use loop over a journey state machine. The LLM decides what to do next and how to say it. The state machine decides what's allowed. Claude Haiku 5.5 handles fast structured extraction.
  • Numbers in code, never in the LLM. Budgets, stamp duty and scoring are deterministic, unit-tested TypeScript. Each home gets a weighted score

$$ S(h) = \sum_i w_i \, f_i(h), \qquad \sum_i w_i = 1 $$

where the f_i are normalised factors (commute, space, price vs. sold comparables, crime, amenities) and the weights w_i come from your profile. When you reject a home and give a reason, the matching weight goes up and the weights are re-normalised.

  • Open-data layer: typed clients for 13 UK sources, each carrying an "as of" date.
  • Listings: a polite crawler that honours robots.txt and each site's terms, diffs sitemaps, uses conditional requests, and re-checks on a hot/warm/cool tier schedule so you don't fall for a flat that was let last week.
  • Capture: a Chrome extension. Click it on any listing and Hearth reads that page (only when you click) for review.
  • Stack: Next.js 16, React 19, Postgres + Drizzle, Better Auth, Vitest, in a pnpm monorepo. The interface works at phone width and on desktop.

Challenges

  • Keeping the LLM out of the maths. Early versions let the model "estimate" affordability, and it was confidently wrong. Moving every figure into code and having Claude only explain those figures fixed it.
  • Data, not advice. UK mortgage advice is regulated, so a copy guard blocks wording like "you can comfortably afford". Hearth shows ranges and sources, and the decision stays with you.
  • Scope. The plan covered the whole journey from search to keys. Search, affordability, ranking and capture work end to end. Sending viewing requests from your own Gmail/Outlook and booking on both partners' calendars is built and unit-tested, but not yet connected to live accounts.

What I learned

  • Agents get trustworthy when the LLM handles judgement and language, while code handles rules and arithmetic.
  • The UK's open data is amazing and badly underused. The hard part is joining it on a postcode and labelling each fact with its source and date.
  • An approval-first design ("nothing goes out without your tap") makes it far easier to let an agent act on your behalf.

What's next

Connecting live Gmail and Outlook accounts so Hearth can request viewings and book them on both partners' calendars, chasing solicitors during conveyancing, and the full rent journey.

Built With

Share this project:

Updates

Submission history