Oliver WillsSenior AI Business Analyst
← Writing

Log book

Field report: an ML pricing tool for an estate agency

Most of my career has been requirements, process, and governance on programmes big enough that I never touched the code myself. At Seacoft, I wanted to know what it actually feels like end to end — so the first proper build was a machine-learning house-price prediction tool and an automated property-description generator for an estate agency, and I ran it the way I’d run any BA engagement: discovery first, build second.

Discovery was the same job, different toolkit. I still started with a workshop, not a dataset. What decision is this tool actually supporting — a valuation the agent stands behind, or a rough steer for a seller? Who sees the output, and what happens if it’s wrong by 10%? Those questions determined more about the eventual model than any hyperparameter did. An estate agency doesn’t need a state-of-the-art model; it needs a number the agent trusts enough to say out loud to a client.

The data was the real work, same as every SQL reporting job I’ve done. Historic listing data has the same problems fleet maintenance data or trading-system data had: inconsistent fields, silent gaps, categories that changed meaning over time. Cleaning and structuring it took longer than training the model, which is exactly what I’d have told a client to expect if I’d been advising rather than building.

The description generator was the more interesting build, honestly. Predicting a price is a well-trodden problem. Generating a property description that’s accurate, on-brand, and doesn’t quietly invent a feature the house doesn’t have is a narrower, harder one — it’s where “the model made something up” stops being an abstract risk and starts being a listing with a false claim in it. That’s where the responsible-AI habits mattered most: constrain the generation tightly to verified fields, and don’t let fluency stand in for accuracy.

Shipping it changed how I scope the next one. Nothing in the delivery was exotic — Python, a straightforward regression approach, a generation step kept on a short leash. The lesson wasn’t technical. It was that the gap between “a model that works in a notebook” and “a tool an agent uses on a Tuesday afternoon without me in the room” is almost entirely process, trust, and edge cases — which is to say, it’s a business-analysis problem with a model bolted on. That’s the pattern I now assume by default, and it’s why the client-facing work stays a discovery conversation before it’s ever an engineering one.