CHAOS Architects

An apartment price model for a real estate platform

Each user of the platform keeps a portfolio, a list of the properties they want analyzed. For any apartment in it, the platform shows three numbers: an expected price, a likely minimum and a likely maximum. Each one reflects the apartment's characteristics and the current state of the market. We built the model behind those numbers and the system that measures how far to trust it.
The client
A Helsinki location intelligence company, working since 2017
CHAOS Architects Oy is a Helsinki company that has worked on location intelligence since 2017: data about places that helps people decide where to build, invest or open a store. Its platform brings rent, plot, property, demographic and services data from Nordic sources into one view. Developers, investors, planners and retailers use it to make decisions about land and property, and so do the company's own teams. In November 2025, CHAOS raised €2 million to expand across the Nordics and into Germany, Austria and Switzerland.

Our work with CHAOS has grown to several projects. Before this one, we built the platform's natural language agent for querying real estate data. The price model called for a different discipline: classical machine learning, with no language model involved.

The challenge

CHAOS already had a price model. It was a first version built on linear regression, a method that treats each input as pushing the price up or down in a straight line, and its inputs were a basic set led by floor area. Area gives you a starting point. Many other factors move an apartment's price, though, and they interact in ways a straight-line formula can miss.

It was also hard to say how accurate the old model was, because there was no validation scheme to measure it against.

Our approach

We started over and rebuilt every part: the data pipeline, the inputs, the validation, the metrics and the model.
01 — More of what affects price
We added the main apartment characteristics, demographic data, and data on nearby transport and retail hubs. The exact list stays under NDA. This work exposed anomalies and errors in the source data. The CHAOS data engineer fixed them, and the fixes also helped other parts of the platform that use the same data.
02 — A way to measure quality
We designed a validation scheme for this task, so every model was tested on data it hadn't seen during training. We tracked 2 main metrics: MAE, the average error in money, and MAPE, the average error as a share of the price.
03 — A baseline to beat
The first model imitated how a person or a realtor would price an apartment. Every later model had to do better than it.
04 — The model that beat it
We tested several well-known algorithms and chose gradient-boosted decision trees, using XGBoost. They gave the best balance of accuracy, computing cost and interpretability.

Interpretability mattered because managers need to see what drove a given price, and sometimes they have to explain it to a client.

What we built

The finished model estimates an apartment's price and adds a range around it. The likely minimum and maximum come from quantile regression, a method that predicts the low and high ends of a price instead of its middle. The model runs on the same servers as the rest of the platform and needs no special hardware. The only new piece was the XGBoost library.
What we checked
Our validation scheme ran alongside a second check: experts at CHAOS reviewed the model's results by hand. Accuracy varies by region and by how many apartments are on sale there.

Outcome

We started in early August, and the model went into production in late September. Much of that time went into reviews and approvals. We explained to the CHAOS team how the model works, why it arrives at a given price, and where it is strong and where it is weak.

Daniil Krasnoproshin, our data scientist and ML engineer, designed and built the model.

The model is live on the platform. On average, its estimates are 3–6% off the listing price, depending on the region and the number of listings. The baseline model was off by 15–20%. Both figures are measured against prices in listings, because the platform has no data on actual sale prices.

We still support the model and retrain it on a schedule as new data comes in from the platform. We also added monitoring that tracks the model's quality in production and catches model drift early. Drift is the gradual loss of accuracy that happens when incoming data stops looking like the data the model learned from. For this model, the main risk is a drop in the quality of new data.

Tech Stack

Model: XGBoost (gradient-boosted decision trees), with quantile regression for the price range | Quality metrics: MAE and MAPE, with RMSE, log RMSE and R² as supporting checks | Backend: Python (Flask) | Data: PostgreSQL, BigQuery | Infrastructure: Kubernetes, Google Cloud Run; the model runs on CPU inside the existing backend | Monitoring: quality tracking in production, model drift detection

Feel like your project would win from our work? Let's talk!
sales@smartificial-ai.com