The spreadsheet that took three people to maintain
Limes House Properties manages a diverse portfolio across multiple locations. Before we got involved, their listing workflow looked like this: someone would check Rightmove, Zoopla, and a handful of niche portals every morning. They’d copy new properties into a master spreadsheet. Someone else would format them for the website. A third person would update the CRM. By the time the listing went live, it was sometimes already under offer.
The agency didn’t need a prettier website — they needed the website to be right. Accurate listings, accurate availability, updated without anyone having to think about it.
“We were losing time we didn’t have. Every hour spent copying data from portals into our system was an hour we weren’t spending with clients.”
— Limes House Properties director
What we built under the hood
The public-facing website is clean and straightforward — search by area, filter by price and type, save properties, get in touch. But the real work was invisible: a data aggregation pipeline that runs continuously in the background.
- Multi-source ingestion. We built scrapers and API integrations for the portals Limes House uses most. Each source has different data formats, different update frequencies, and different ways of marking a property as sold or withdrawn. The pipeline normalises everything into a single schema.
- Deduplication and conflict resolution. The same property often appears on multiple portals with slightly different descriptions or pricing. We built fuzzy matching on address, postcode, and listing details to avoid duplicates, with a confidence score that flags ambiguous cases for human review rather than guessing.
- Real-time search with ElasticSearch. Property search needs to feel instant. We indexed listings with ElasticSearch, supporting compound filters (area + price range + bedrooms + property type) with sub-200ms response times. The index rebuilds incrementally as new data flows in — no batch jobs, no downtime.
- AI voice assistant for initial enquiries. We also built a phone-based AI assistant that handles initial property enquiries: what’s available in a given area, price ranges, and booking viewings. It routes complex requests to a human agent with full conversation context.
The technical choices and why
We built the pipeline in Python for its ecosystem of scraping and data-processing libraries, with the web application in PHP and the search layer in ElasticSearch. The AI voice assistant uses a combination of speech-to-text, intent classification, and a property knowledge base built from the same aggregated data.
The decision to build a custom pipeline instead of using an off-the-shelf aggregator came down to control: the agency needed to prioritise certain sources, apply their own business rules to pricing, and flag properties that matched specific client briefs automatically. No SaaS tool offered that level of customisation without enterprise pricing.
What changed for the business
The most immediate shift: the three people who spent their mornings copying data now spend that time with clients. The website is always current — when a property goes under offer at 9am, it’s reflected on the site by 9:05. Clients trust the listings because they’re accurate, which means fewer wasted viewings and faster transactions.
“Our website used to be a brochure we updated when we remembered. Now it’s the most reliable source of our portfolio — more accurate than some of the portals.”
— Limes House Properties
The principle
When your team spends time moving data between systems, you don’t have a people problem — you have a pipeline problem. Fix the pipeline and the people can do what they were hired to do: sell, advise, build relationships. The technology should be invisible.