A team that values residential property needs a repeatable estimate it can defend. A single average error is a poor guide: a model can look accurate overall while being consistently wrong on expensive homes, where the financial consequences are largest. The useful question is not "how accurate is the model?" but "for which properties, and at what cost, is it wrong?"
The decision
The estimate would support screening and negotiation — flagging properties for review, sanity-checking an asking price, and prioritising manual appraisals. It would not replace a formal valuation. That scope determined the tolerance: a usable range and a clear set of drivers mattered more than a headline accuracy score.
What we worked with
A public residential sales dataset of 1,460 transactions with 79 explanatory fields:
- Size and layout: lot area, living area, basement, garage, bedrooms and bathrooms.
- Quality and condition: overall material and finish ratings, exterior and kitchen quality, year built and remodelled.
- Location: neighbourhood, zoning, street and proximity-related fields.
- Sale context: sale type, sale condition, month and year of sale, and sale price.
The traps we designed around
- Missing often means "none". Pool quality is missing for almost every property because almost none have a pool. Garage type is missing when there is no garage. Imputing a "typical" value would invent features that do not exist. Each field needed its own missing-value rule, documented against the data dictionary.
- Partial sales are not ordinary sales. Around 18% of transactions are not normal market sales — they include family transfers, new homes and other partial interests. Their prices may not reflect the open market. We kept them visible and tested the model with and without them rather than silently dropping rows.
- Price is skewed. The distribution has a long right tail. Modelling log price improves fit, but errors must be translated back into dollars and reported by price band; a good log-scale score can hide large absolute errors at the top of the market.
- Leakage from the sale context. Sale year, month and sale condition are known only at the time of sale. If the model is meant to value a property before listing, those fields cannot be used. The prediction moment has to be written down before feature selection.
- Ordinal scales are not numbers. Quality fields such as "Excellent", "Good" and "Typical" have an order but not equal spacing. They need an explicit mapping, not an arbitrary label encoding.
- Neighbourhood encodes history. Location is a strong predictor, but it can also proxy for historical access, amenities and market segmentation. The model can use it for estimation; it should not present it as a causal explanation of value.
- Large homes dominate squared error. A handful of expensive properties can drive the overall metric. Median absolute percentage error and segment-level views are more honest than RMSE alone.
How the model was built
- Define the valuation moment. We specified which fields would be available when the estimate is produced and excluded anything recorded after that point.
- Document missing-value semantics. Structural fields were recoded to "none" where absence is meaningful; truly unknown values were handled separately and flagged.
- Build an interpretable baseline. A hedonic regression on size, quality, age, location and sale context provided a transparent reference with coefficients that could be explained.
- Test a flexible challenger. A gradient-boosted model was evaluated against the baseline on held-out data, with the same feature set and the same prediction moment.
- Measure error where it matters. We reported median absolute percentage error overall and by price band, plus the share of properties outside a practical tolerance.
- Translate drivers into review questions. The model output was paired with the main contributors, so a reviewer could see why a property was flagged rather than only that it was.
What this changes
- Accuracy is reported by segment. The team can see whether errors are concentrated in high-value properties or in particular sale types.
- Valuation is presented as a range with drivers. A single point estimate is replaced by an interval and the factors behind it, which fits a screening workflow.
- Partial sales are an explicit decision. Whether to include them is documented and tested, not left to a default filter.
- The model is not confused with an appraisal. Its role is prioritisation and sanity-checking, with manual review for the cases it cannot support.
What you receive
- A data dictionary with a missing-value rule for every field.
- A documented prediction moment and feature-availability list.
- Baseline and challenger models with error by price band.
- Driver explanations for flagged properties.
- A review protocol for outliers and partial sales.
Where this applies
The method fits lenders, insurers, property platforms and assessment teams. The minimum inputs are transaction prices, property attributes, location and sale dates. The first deliverable is usually the prediction-moment and missing-value note, because most valuation disagreements are really disagreements about what was known when.
This is an illustrative case study using an anonymized public housing dataset; it does not report results from a specific client engagement. It reflects our standard method for property valuation modelling.
