1
Data Input and Preparation
The engine extracts the data, either by mining it from sreality.cz or by reading it from a JSON or CSV file. The information is then structured according to the expected input framework.
2
Candidate-Pair Construction
The listings are regrouped by a common street. Within each street group, every advertisement is compared with the other advertisements in that group. The engine then calculates the feature distance between the attributes of each pair (e.g., the absolute difference in Price between Ad 1 and Ad 2).
3
RF2 Duplicate Classification
For each street, the resulting pairwise distance matrix is passed to a Random Forest model. This model, RF2, is trained on 974 carefully curated listing pairs with a high level of human-validated confidence in their duplicate status.
We expect the model to capture around 81% of all duplicate pairs (Recall) and to be correct in approximately 83% of its positive-class predictions (Precision). RF2 returns a duplicate probability and a corresponding binary prediction for each pair of advertisements on the same street. The retained cutoff threshold is .51, selected to provide a strong balance between Recall and Precision.
4
Graph Entity Resolution
The RF2 predictions are used to construct graph components, where nodes represent listings and edges represent RF2 pairwise duplicate-status evidence. When p ≥ .51, the relationship is classified as positive; otherwise, it is classified as negative.
-
Components with fully positive internal relationships are treated as complete and represent groups of duplicate advertisements referring to the same underlying dwelling.
-
Components containing both positive and negative internal relationships are treated as incomplete. These components are processed by a Correlation Clustering algorithm, which evaluates alternative partitions of the component and seeks the solution that minimizes disagreement with the RF2 pairwise evidence.
5
Entity-Level Weighted Information
For each listing inside each final duplicate group, the engine calculates the listing's average internal RF2 pairwise probability. This is obtained by averaging the RF2 probabilities linking that listing to the other listings belonging to the same resolved entity.
These internal confidence scores are then normalized into listing-specific weights, which determine how strongly each listing contributes to the final entity-level information (e.g., Price and Surface Area). Therefore, listings with stronger average RF2 support within the resolved entity receive a greater contribution weight.
6
Final Engine Output
The engine returns the final resolved entities. Each entity represents one unique dwelling and may contain one or several SReality listings associated with that dwelling. For example, a single dwelling entity may contain five duplicate advertisements published at different times or by different agencies.
The demonstration interface allows each resolved entity to be reviewed in detail, including its constituent listings, RF2 pairwise evidence, graph-resolution information, listing images, and final entity-level weighted information.
© 2026 Dempsey Pasternak.
All rights reserved.