An ML pipeline that scores which property owners are likely to sell
Ingests 109,000+ county property records, engineers ML features, and scores every residential property 0–100 for seller intent using weak supervision and gradient boosting — delivered as a ranked weekly lead list in Power BI.
The problem
Finding the owners who are actually close to selling is mostly guesswork. The standard approach is to buy a list everyone else has already bought and work it by volume.
The signal is public. County assessor and recorder files carry ownership tenure, transfer history, assessed value, and property characteristics for every parcel in a jurisdiction — they just arrive as large, inconsistent bulk exports that nobody has the time to clean, join, and model.
There is also no ground truth to train on: no column labelling which owner will list next quarter. That makes seller intent a weak-supervision problem, not a clean classification one.
What I built
An end-to-end pipeline that turns raw county records into a ranked list of residential properties, refreshed weekly.
- 01
Ingestion and normalisation
Loads 109,000+ county property records, resolves the inconsistencies between export formats, and reduces them to one clean residential parcel table with a stable key.
- 02
Feature engineering
Derives the features that actually carry seller signal — length of ownership, transfer and sale history, assessed-value movement, property attributes — rather than feeding raw columns to a model.
- 03
Weak supervision instead of invented labels
With no ground-truth label available, labelling functions encode the heuristics a domain expert would apply, and those combine into probabilistic labels. This was the key decision: it keeps the modelling honest about what is inferred versus observed.
- 04
Gradient-boosted scoring
A gradient boosting model trained on those labels scores every residential property 0–100 for seller intent — a ranking to work top-down, not a binary yes/no the data cannot justify.
- 05
Delivery in Power BI
Scores land in a Power BI report as a ranked weekly lead list, filterable by area and property attributes. The format the work actually gets done in, not a notebook.
The outcome
Every residential property in the dataset — 109,000+ of them — carries a 0–100 seller-intent score, refreshed weekly and delivered as a ranked list.
The honest framing: this is a prioritisation tool, not a prediction of certainty. It changes which doors get knocked first, ordering the list by modelled signal instead of by whatever a vendor happened to sort on. Because the labels come from weak supervision, the score is a ranking instrument — and the pipeline is built so the labelling functions and the model can be revised as real outcomes come back.
Want to see how this was built?
Happy to walk through the system and what a similar build would take.