Condition score API

Retrieve an unbiased score of the bathroom and kitchen.
Conditie score API - currently in beta
The Condition Score Model has been developed and trained to evaluate the condition score of bathrooms and kitchens. The condition score is derived from the valuation methods for quality and condition of homes of Fannie Mae and Freddie Mac, mortgage institutions in the United States, and adapted to the Dutch housing following a five point rating system also used in the Waardering Onroerende Zaken (WOZ) by Municipalities in The Netherlands.
The model distinguishes between the following classifications for condition:
  • 5 - Excellent
  • 4 - Good
  • 3 - Average
  • 2 - Poor
  • 1 - Disrepair
The result is a score from 1 to 5 based on the estimates of the model, e.g. 3.2 = slightly above Average.

Example output

{ "output": {
"label": "kitchen",
"confidence": "97.97",
"condition_score": "3.96"


  1. 1.
    Provide image via upload or URL to the API
  2. 2.
    API will label the image to check for visibility of a bathroom or kitchen
  3. 3.
    Process image through model to determine score

Model training

The model is developed by using a pretrained model called Xception, and by applying Transfer Learning we've taking advantage of the original model being trained on a large dataset.
By using the Xception Keras model, we take advantage of the pre-trained weights and the rich feature representations that the network has learned. The final model that we use is the combination of Xception with additional layers on the end, in order to make it compatible with our classification task. When the input image array passes through the final model, the relevant features are extracted and used for the final classification.

Classifying bathrooms

Bathroom example images per class. See scoring table below for the descriptions

Classifying kitchens

Kitchen example images per class. See scoring table below for the descriptions

Scores explained

  • New condition, no deferred maintenance, no physical depreciation, and no repairs required.
  • Virtually all components are new or have been recently repaired, refinished, or rehabilitated.
  • High-quality interior refinements, and detail.
  • High quality workmanship, materials, and finishes throughout.
  • A like new condition or well maintained.
  • Components may be updated or recently rehabilitated.
  • Many materials and finishes have been upgraded from “stock” standards.
  • Deferred maintenance and deterioration due to normal wear and tear.
  • Components need repairs, rehabilitation, or updating.
  • Materials, workmanship, finish, and equipment are of stock or builder grade.
  • Obvious deferred maintenance and are in need of some significant repairs.
  • Some repairs, rehabilitation, or updating is required.
  • The functional utility and overall livability are somewhat diminished due to condition, but it remains useable and functional.
  • Substantial damage or deferred maintenance with deficiencies or defects that may affect the safety, soundness, or structural integrity.
  • Substantial repairs and rehabilitation needed.
  • Lowest quality and building materials.
  • Electrical, plumbing, and other mechanical systems and equipment may be minimal or non-existent.

Score calculation

Lets look at an example to better understand the score the API returns. Assuming the image label prediction of a provided image to the API is "Bathroom". The image passes through the condition score model for bathrooms and it generates a probability number between 0 and 1 to each of the 5 classes. In the example the generated probabilities are: {'disrepair': 0.05, ‘poor’: 0.1, ‘average’: 0.1, ‘good’: 0.6 and ‘excellent’: 0.15}. These probabilities are multiplied with the corresponding class indices and summed together with the following formula: 1 x 0.05 + 2 x 0.1 + 3 x 0.1 + 4 x 0.6 + 5 x 0.15 = 3.7. The final condition score for the image of the bathroom will be 2.65.
The reason a score as output is used instead of a single class is because with many bathroom and kitchen images it is difficult for the model to decide which single class it belongs to. There might be cases where an image can be for example both poor and average. So it is better to have a score which involves the confidence of the model for all the classes.