An agent for London renters
Every London rental, read for you.
Hearth crawls 18 property sources every day, reads each listing and its photos the way I would, and only messages me about the flats that fit my brief. Everything else stays quiet.
- 18property sources
- 3scoring passes
- 85+score for an instant alert
- 14 daysbefore a flat is ever suggested twice
Hearth now
New match, score 91
Two-bed flat with a private balcony, 6 minutes on foot to an Overground station. Bright south-facing living room; the floorplan shows a separate kitchen.
How it works
Cheap, certain checks run first. The expensive model only reads what survives them.
-
1
Crawl
Every morning Hearth collects listings from portals, estate agents and build-to-rent operators. One universal extractor reads them all: structured listing data first, then page data, then OpenGraph tags, then plain heuristics.
-
2
Filter
Hard rules drop anything that misses the brief: bedrooms, bathrooms, price per bedroom, property type, area, furnished, and phrases I never want to see, such as "shared ownership".
-
3
Score
A free keyword score gates the language model. Survivors get a text read of the description and a vision read of the photos and floorplan, then a composite score out of 100.
-
4
Check
Duplicates across sites are merged into one flat. Before anything is sent, every link is checked, so a let-agreed listing never reaches me.
-
5
Alert
One email and one Telegram digest each morning, a weekly summary on Sundays, and an instant Telegram alert with Shortlist and Reject buttons for anything scoring 85 or more.
Try the scoring
Six made-up listings, scored the way Hearth scores them. Move the threshold to see which ones would make the morning digest.
4 of 6 listings would be sent; 1 would also trigger an instant alert.
-
Two-bed flat with balcony
91- Description
- 88
- Photos
- 94
- Transport
- 92
- Floorplan
- 90
Bright living room facing south, separate kitchen, private balcony, recently refurbished bathroom.
Instant alert, and in the morning digest
-
Three-bed maisonette with garden
82- Description
- 85
- Photos
- 80
- Transport
- 78
- Floorplan
- 84
Own front door and a small garden. Photos show dated kitchen units, which costs a few points.
In the morning digest
-
New-build two-bed with concierge
76- Description
- 80
- Photos
- 78
- Transport
- 66
- Floorplan
- 76
Gym and concierge in the building. Open-plan kitchen and a walk at the edge of the limit.
In the morning digest
-
Two-bed mansion block flat
71- Description
- 72
- Photos
- 62
- Transport
- 96
- Floorplan
- 55
Great location, but the photos are dark and the second bedroom is a box room on the floorplan.
In the morning digest
-
Three-bed flat above a shop
58- Description
- 60
- Photos
- 48
- Transport
- 80
- Floorplan
- 42
Busy main road, small windows in two bedrooms, and the description says "some updating required".
Stays quiet
-
Two-bed with a long walk
44- Description
- 60
- Photos
- 52
- Transport
- 0
- Floorplan
- 48
A decent flat, but the walk to a station scores zero and drags the total down.
Stays quiet
Every listing on this page is made up. Real listings stay private.
Where it looks
Portals catch most flats. Estate agents and build-to-rent operators often list on their own sites first.
Portals
- Rightmove
- Zoopla
- OnTheMarket
- OpenRent
- PrimeLocation
- Foxtons
Estate agents
- Kinleigh Folkard & Hayward
- Hamptons
- Winkworth
- Strutt & Parker
- BlackKatz
- Lurot Brand
Build to rent
- Get Living
- Quintain Living
- Battersea Power Station
- Way of Life
- NHG Homes
- Greystar UK
Adding a new agent is about five lines of configuration. The universal extractor does the parsing.
Under the hood
Spending model calls only where they matter
| Step | What it saves |
|---|---|
| Hard rules | Failing listings never reach a model |
| Keyword gate | About 30% of model calls |
| Content-hash cache | About half of re-scores reuse an earlier result |
| Description budget | About half the input tokens |
Together that is roughly 60 to 70% less model spend than scoring every listing.
The stack
- APIPython, FastAPI and SQLite on a small always-on cloud VM
- CrawlersA daily VM job, plus GitHub Actions for the sites that block datacentre addresses
- TextClaude Haiku reads each description against the brief
- VisionClaude Sonnet looks at up to six photos and the floorplan
- TransportTfL journey data, with a fallback to the nearest known station
- AlertsEmail through Resend and a Telegram bot with inline buttons
Where it stands
Hearth runs for my own flat search, so the code and the real listings stay private. If you want to see how the agent thinks, play Swipe vs the Agent: swipe through twelve made-up flats, then see what Hearth would have picked.