Property Listing Normalization: Addresses, Areas and Unit Identity
Keep listings distinct from properties, preserve address precision and compare area only when units and meanings agree.
KAIROXO

Property listing normalization turns heterogeneous public advertisements into records that can be compared without pretending that every advertisement represents a different home. The same unit can appear through multiple agents, with different address abbreviations, area units and photo selections. A careless merge can combine separate apartments; a careless split can inflate apparent inventory.
Begin by defining the subject of each record. A building, an individual unit and an advertisement are different objects. Keep the source advertisement intact and create separate relationships to a candidate property identity. This approach supports research without making unsupported claims about ownership, occupancy or completed transactions.
Keep source listings distinct from properties
Assign a source-scoped listing key, preserve the original URL and record observation time. Keep listing status as the source presents it rather than reducing every page to active or inactive. An unavailable page may mean a temporary access failure, an expired advertisement or a removed listing; these possibilities require different evidence.
Maintain property candidates separately. Several advertisements may refer to one unit, and one project page may describe many units. Do not force both into the same record type. A new source advertisement is an observation about the market, not automatically a newly available property. This distinction makes inventory reports much easier to explain.
Parse addresses without discarding detail
Store the original address and structured components such as street, building, unit, city and country. Unit identifiers deserve special care: apartment 2 and apartment 20 are different even when the rest of the address matches. Preserve meaningful leading zeros or letter suffixes according to the local addressing system rather than applying a universal cleanup rule.
Some advertisements intentionally reveal only an approximate location. Keep a precision field so a neighborhood centroid is not presented as an exact building position. If geocoding is used, retain the provider, query and confidence evidence separately from the source address. A guessed coordinate should not silently become the property's verified location.

Normalize area with a declared measurement type
Area needs both a unit and a meaning. Land area, internal floor area, gross building area and usable area are not interchangeable. Preserve the source label and value before converting units. When a listing gives only a bare number, mark the unit unknown rather than assuming the convention used by another source.
Use a consistent internal representation and record the conversion rule. For example, the exact relationship between international square feet and square meters can support deterministic conversion, but it cannot convert gross area into usable area. Avoid excessive displayed precision when the source itself is rounded. A mathematically precise conversion is not a more accurate measurement of the property.
Build a cautious matching policy
Generate candidates with address components and geographic evidence, then compare unit, property type and area context. A shared street address is not enough to merge apartments in the same building. Likewise, two listings with matching area and room count can still describe different units. Use explicit outcomes such as same_unit, same_building and unresolved.
Keep decision evidence and reviewer history. A fictional example: 12 River Road, Unit 05 and 12 River Rd, Apartment 5 may be candidates for the same unit, while a building-only listing at 12 River Road is weaker evidence. The uncertain building-level record should not overwrite the unit-specific address simply because it was collected later.
Extract stable metadata, then verify meaning
Structured data can be useful when a listing publishes it, and DOM extraction can fill gaps. Neither should be trusted solely because parsing succeeds. A page can include several JSON-LD objects, including the agency organization and site navigation. Select the object associated with the listing and confirm that values agree with the visible page.
Record the extraction path and rule version for important fields. If structured data says an area is missing while the visible page gives a labeled value, preserve the discrepancy and apply a documented precedence rule. Do not combine unqualified values from different page objects into an apparently complete but internally inconsistent property record.
Audit coverage before publishing statistics
Review a sample containing multi-unit buildings, incomplete addresses, mixed area units and advertisements repeated across sources. Check false merges separately from missed matches because they affect reports differently. Track missing-field rates and successful source checks; a source outage must not look like a sudden reduction in available properties.
When normalizing historical records again, keep the original observations and create a new interpretation version. This allows downstream users to understand why a property count changed even when no new listings were collected. Limit collected information to public listing attributes needed for the project; personal contact profiles are unnecessary for basic inventory normalization.