Case Study

IMMEU

European Real Estate Portal

NextJSPostgreSQLElasticSearchDebeziumKafkaRedis
IMMEU homepage
Property search
Property details

Overview

IMMEU aggregates real estate listings from across the European Union, providing a unified search experience for property hunters. The platform syncs data from multiple MLS providers in real-time using CDC pipelines, normalizing disparate schemas into a consistent format.

Technical Challenge

Aggregating and normalizing real estate data from dozens of European MLS providers presented unique challenges:

  • Different data schemas across providers (some use XML, others JSON, some CSV exports)
  • Multiple languages requiring proper text analysis and search relevance
  • Varying update frequencies from real-time to daily batch updates
  • Data quality issues requiring validation and enrichment pipelines

Approach

We built a robust data pipeline using change data capture (CDC) and stream processing:

  • Debezium CDC pipelines capturing changes from source databases in real-time, eliminating the need for polling
  • Kafka streams for data transformation and normalization, applying schema mappings and validation rules
  • ElasticSearch with custom analyzers for multilingual property search, supporting 12 EU languages
  • NextJS SSR for SEO-optimized listing pages, ensuring properties are discoverable via search engines
  • PostgreSQL with PostGIS for normalized data storage and geographic queries

Data Pipeline Architecture

The ingestion pipeline processes data through several stages:

  • Capture - Debezium monitors source databases for changes
  • Transform - Kafka Streams applies schema normalization
  • Enrich - Geocoding, price conversion, image optimization
  • Index - ElasticSearch for search, PostgreSQL for persistence

Impact

Platform indexes over 500,000 properties across 12 EU countries with sub-second search response times. The multilingual search supports queries in any EU language while returning relevant results regardless of the original listing language.