Case StudyDwelz - Property Analytics Platform
Realty Metrics is a powerful property analytics platform designed to provide homebuyers, investors, and real estate professionals with in-depth, data-driven insights into UK properties. Evolving from the initial concept of Dwelz.co.uk, this platform offers a suite of advanced tools that go far beyond a simple property search, enabling users to make smarter, more informed decisions.

About
UK property search and intelligence platform providing comprehensive property insights including price trends, planning applications, crime statistics, and neighborhood data. Helps buyers, investors, and renters make informed property decisions by aggregating data from multiple sources into a single search interface.
Features
- Property Search by Postcode/Address
Search UK properties using postcode or full address. Provides instant access to detailed property information and insights. - Price Trends and Valuation
Historical price data and market trends for properties. Helps users understand property value changes over time and make informed buying decisions. - Planning Applications Intelligence
View planning applications and possibilities for properties. Critical for buyers considering renovations or extensions. - Crime and Safety Statistics
Neighborhood crime data and safety ratings. Helps families assess area safety before purchasing or renting. - Neighborhood Insights
Information about neighbors and local demographics. Provides context about the community and area characteristics.
Technical Development
Stack: React.js (Frontend), Python (Backend), MySQL (Database)
Property Search System
Frontend Implementation: Built with React.js providing responsive search interface with postcode and address input fields. Search form includes validation for UK postcode format and autocomplete suggestions as users type. Guest users can perform 2 searches within 24 hours before requiring registration. Registered users have unlimited searches.
Backend Implementation: Python backend handles search queries and aggregates data from multiple external APIs including Land Registry for price data, Planning Portal for applications, Police API for crime statistics, and Census data for demographics. Search results are cached in MySQL to reduce API calls and improve response times.
Database Design: MySQL database stores user accounts, search history, cached property data, and API responses. Properties table includes address, postcode, coordinates, last updated timestamp, and references to related data tables for prices, planning, and crime statistics.
Price Trends Analysis
Frontend Implementation: Interactive charts display historical price data using charting library. Users can view price changes over different time periods (1 year, 5 years, 10 years, all time). Comparison feature allows viewing multiple properties side-by-side.
Backend Implementation: Python scripts fetch historical price data from Land Registry API which provides all UK property transactions. Data is processed to calculate trends, average prices for area, and price per square foot. Machine learning model predicts future price trends based on historical patterns and local market factors.
Data Processing: Historical transaction data is aggregated by property and area. Calculations include year-over-year growth, average sale price for property type, and market velocity (how quickly properties sell). Data is updated monthly when Land Registry releases new transaction data.
Planning Applications Intelligence
Frontend Implementation: Planning applications displayed in timeline format showing application date, status, and description. Map view shows nearby planning applications within radius. Users can filter by application type (extension, new build, change of use).
Backend Implementation: Integration with local council planning portals via web scraping and APIs where available. Python scripts run daily to check for new planning applications. Applications are geocoded and linked to nearby properties. Status updates are tracked automatically.
Data Sources: Planning data sourced from 300+ UK local council websites. Each council has different data format requiring custom parsers. Applications include extensions, loft conversions, new builds, demolitions, and change of use permissions.
Crime and Safety Statistics
Frontend Implementation: Crime heatmap visualization showing incident density by area. Bar charts break down crime by category (burglary, vehicle crime, antisocial behavior). Safety score calculated from 1-10 based on crime rates compared to national average.
Backend Implementation: Police API provides crime data by postcode with latitude/longitude coordinates. Python backend aggregates crimes within 1-mile radius of searched property. Historical data allows trend analysis showing if area is improving or declining in safety.
Safety Score Calculation: Algorithm weighs different crime types by severity. Violent crimes weighted higher than antisocial behavior. Comparison made against national and regional averages. Score updated monthly as new crime data is released.
Neighborhood Demographics
Frontend Implementation: Demographic breakdown showing age distribution, household composition, education levels, and employment statistics. Visual representations include pie charts and bar graphs for easy interpretation.
Backend Implementation: Census data from Office for National Statistics provides demographic information at postcode sector level. Python scripts process census tables and calculate percentages for different demographic categories. Data supplemented with school ratings from Ofsted.
Data Aggregation: Census data combined with school performance data, local amenities (shops, restaurants, parks), and transport links. Walkability score calculated based on proximity to amenities. School catchment areas overlaid on map to show which schools serve the address.
User Account Management
Frontend Implementation: React forms for registration and login with client-side validation. User dashboard shows search history, saved properties, and account settings. Password reset functionality via email link.
Backend Implementation: Python Flask handles authentication with password hashing using bcrypt. JWT tokens manage user sessions. MySQL stores user credentials, profile information, and preferences. Rate limiting prevents abuse of search functionality by limiting guest users to 2 searches per 24 hours based on IP address.
Session Management: Logged-in users have persistent sessions across devices. Search history stored in database allows users to revisit previous searches. Saved properties feature lets users bookmark interesting properties for later review.
Data Caching and Performance
Frontend Implementation: React component memoization prevents unnecessary re-renders. Lazy loading for images and charts improves initial page load time. Service workers enable offline viewing of previously loaded properties.
Backend Implementation: MySQL caching layer stores API responses for 30 days to reduce external API calls. Redis used for session storage and rate limiting counters. Database indexing on postcode and address fields ensures fast search queries. Background jobs refresh cached data nightly.
Performance Optimization: Property data cached after first search to serve subsequent requests instantly. Geospatial queries optimized using MySQL spatial indexes. API responses compressed before sending to frontend. CDN serves static assets for faster global delivery.
External API Integrations
Data Sources: Land Registry API for property prices and ownership, Police UK API for crime statistics, Planning Portal and local council APIs for planning applications, Postcode API for address validation and geocoding, Census API for demographic data, and Ofsted API for school ratings.
API Management: Python backend manages API rate limits and implements retry logic for failed requests. Fallback mechanisms ensure service continues if one API is unavailable. API keys stored securely in environment variables. Monitoring alerts when APIs return errors or unexpected data.
Deployment
React.js frontend hosted on AWS S3 with CloudFront CDN, Python Flask backend on AWS EC2 with auto-scaling, MySQL database on AWS RDS with automated backups, Redis on ElastiCache for caching, and scheduled Lambda functions for daily data updates.
Project Details
- Client
- Dwelz
- Date
- October 2025