Case Study Industry: Real Estate

High-Speed Property Portal & MLS Aggregation

Key Business Outcomes

200ms Search Time

Complex map queries that previously crashed the server now return in under 200 milliseconds.

250,000+ Listings

Synced flawlessly across 4 different MLS boards with zero data corruption.

300% SEO Growth

Next.js Server-Side Rendering ensured all 250k property pages were instantly indexed by Google, tripling organic traffic.

The Challenge

A large regional real estate brokerage wanted to compete directly with Zillow by launching their own consumer-facing property portal.

Their initial attempt, built on WordPress with a generic real estate theme, was a complete disaster. The site attempted to sync 250,000 active property listings from 4 different MLS (Multiple Listing Service) boards via RETS. The standard MySQL database choked entirely when users tried to perform complex geospatial map searches (e.g., "Show me all 3-bedroom houses within this hand-drawn polygon on the map"). Page load times exceeded 12 seconds, rendering the site unusable on mobile devices.

Our Technical Solution

Vanavya Tech completely re-architected the platform, moving away from traditional relational databases for the search layer and implementing an Enterprise Search architecture.

We built a custom Node.js data pipeline that connects to the various MLS APIs (RESO Web API/RETS). Every night, it ingests, cleans, and normalizes the chaotic MLS data.

The critical innovation was piping this cleaned data directly into Elasticsearch and PostGIS. Elasticsearch is specifically designed to handle millions of documents and return search results in milliseconds. We utilized PostGIS (a geospatial extension) to handle the complex map logic. Now, when a user draws a custom shape on the React-powered Mapbox frontend, the backend instantly calculates exactly which properties fall inside that geometry and returns the pins in under 200 milliseconds.

System Architecture

graph TD; A[MLS Board 1] -->|RESO API| D{Node.js Data Pipeline}; B[MLS Board 2] -->|RETS| D; C[MLS Board 3] -->|CSV Dump| D; D -->|Normalize & Clean| E[(PostgreSQL Master DB)]; E -->|Index Nightly| F[(Elasticsearch Cluster)]; G[User on Next.js App] -->|Draws Map Polygon| H[Go API]; H -.->|Geospatial Query| F; F -.->|Results in 50ms| H; H -->|Render Map Pins| G;

Technical FAQs

Why couldn't standard MySQL handle the map search?

Standard relational databases like MySQL evaluate data row by row. If you ask it to find coordinates inside a polygon among 250,000 rows, it has to do complex math on every single row, which is incredibly slow. Elasticsearch and PostGIS use specialized spatial indexes (like R-Trees), allowing them to instantly eliminate 99% of the map and only calculate math on the relevant area.

How do you handle the massive amount of property images?

We do not save images to the database or the web server. Our Node.js pipeline downloads the high-res images from the MLS, automatically compresses them into modern WebP formats, and uploads them directly to AWS S3. They are then served to the user globally via the AWS CloudFront CDN, ensuring images load instantly regardless of the user's location.