BlackloreBlacklore
← All work
Demo build

A property-listings database you own

Collect once, keep every price change, and measure how accurate the matching is.

A working sample we built to show how we would solve a problem like this. It is not a delivered project.

In plain terms

Collect property listings once per area, keep every price change, and never treat a missing listing as a sale. The same home advertised by different agencies is matched up, and the demo measures how often that matching goes wrong. Searching by place takes into account how precisely each location is known.

  • Price history is kept, never overwritten.
  • A failed collection never causes listings to be marked as gone.
  • Duplicate matching is measured, not assumed.

What this does not claim: Everything ran on 535 invented listings from three fictional property websites over a simulated two weeks. No real website was contacted.

What it looks like

Chart of nearby properties plotted in rings around a central subject property, out to 400 metres.

A map-style chart of a property search. The blue star is the property being looked at. The search started at 50 metres and widened to 400 metres until it found 30 similar nearby properties. Different symbols show how precisely each neighbour's location is known.

Technical caption

Radius-widening comparable search (50 to 400 m) with per-point coordinate precision (exact / street / zone). Result: 30 comparables, confidence medium.

Bar chart of daily listing events over 14 days, with one partial and one failed collection highlighted.

Two weeks of simulated listing collection. Green bars are new listings, brown are price changes, red are listings that disappeared, and blue are listings that came back. One source returned only part of its data on one day and another failed completely on a later day, and no listings were wrongly marked as removed.

Technical caption

Daily event counts over the 14-day run. portal_b partial fetch and portal_c failed fetch are shaded; the removal logic ignores listings from failed or partial fetches, so they cause no removals.

Technical details

14-day simulated run over 535 listings from three fictional portals: change tracking (new, price change, removed-unconfirmed, reappeared), handling of partial and failed fetches without false removals, cross-agency duplicate matching with measured error, and location search that widens its radius and records coordinate precision (exact / street / zone).

  • Python
  • matplotlib

Need something like this?

Tell us the problem in your own words. We reply with a plain, practical plan.

Discuss a project like this