UK Real Estate Power BI Report

UK Real Estate Market: Performance Intelligence Report

UK Real Estate Market: Performance Intelligence Report

A Power BI report built to track sales, lettings, agent performance and buyer affordability across the UK residential market

About the Project

This report was built as an end-to-end Power BI solution for tracking the health of a UK residential real estate business across four commercial lenses: sales performance, the rental portfolio, agent productivity, and buyer affordability. Rather than a single dashboard, it is structured as a guided, multi-page report with a dedicated landing page, six analytical pages reachable through an in-report page navigator, six custom tooltip pages, and one hidden drillthrough page for anomaly investigation — 14 pages in total.

Underneath the report sits a 12-table star schema: three fact tables (FACT_Transactions, FACT_Rentals, FACT_Leads), a shared DIM_Property dimension plus DIM_Agent, DIM_Buyer, DIM_Calendar and DIM_FunnelStage, three single-column parameter tables that power in-report scenario switching (DIM_MetricSelector, DIM_LTVParameter, DIM_MortgageRateParameter), and a dedicated Tbl_Measures hub table that holds close to 90 DAX measures — everything from KPI card values to the raw HTML strings that render the landing page and tooltip content.

What I Built

Landing Page

A single HTML-content visual renders the cover screen, paired with an "Enter Report →" action button that jumps straight to the Executive Overview. The entire page is driven by one DAX measure (Tbl_Measures.HTML - Landing Page) rather than a stack of native visuals.

Executive Overview

The report's default landing point after the cover page. Five HTML-content KPI cards (Market Temperature, Rolling 12M Avg Price, Total Rental Income, Total Sales Revenue, Total Transactions) sit above a "Sale Price by Transaction Date" column chart, a "Rolling 12M Avg Sale Price" line chart, and a "Listing vs Transaction Date Revenue Timing" chart that compares revenue recognition timing. Region, Buyer Type, Property Type and Date slicers scope the whole page.

Sales Performance

Focused on transaction-level sales metrics: a "Transactions Trend (Monthly)" line chart, "Sales Revenue by Region" and "Regional Sale Price Premium vs UK" column charts, "Avg Sale Price by EPC Rating", and a "Performance by Property Type" detail table. Four HTML-content KPI cards cover total sales revenue, average sales revenue, average discount %, and price-to-asking ratio. Property Type, Region, Year and Quarter slicers scope the page.

Agent Performance

A scorecard-style page: "Revenue by Agent" and "DOM vs Agency Average by Agent Name" charts, a "Transactions by Seniority" donut, an "Agent Conversion Rank & Percentile Band" pivot table, and an "Agent Scorecard" detail table. KPI cards surface top agent, agent revenue, total commission, and average target achievement. Slicers: Region, Agency, Seniority, Year.

Rental Market

Covers the lettings side of the portfolio: "Avg Monthly Rental by Region" and "Rental Income Trend" charts alongside a "Rental Portfolio Detail" table. KPI cards report active rentals, average gross/net rental yield, average monthly rental, and total rental income. Slicers: Region, Tenant Type, Rental Status, Year.

Market Pulse & Funnel

The most visually varied page: a UK regional shape map ("Market Temperature") paired with a "Temperature Gauge", a "Lead Funnel Stages" funnel chart, a "Price Momentum %" chart, and a "Regional Market Signals" table. KPI cards cover active listings, funnel conversion rate, market temperature, total leads, and withdrawn rate. Slicers: Region, Year, Lead Source, Lead Stage.

Buyer & Affordability

Built around a field-parameter-style "Select Metric" slicer (bound to DIM_MetricSelector) that swaps the metric driving the page's KPI card, alongside two what-if scenario slicers — "LTV Scenario" and "Rate Scenario" — for affordability modelling. Also includes "Buyers by Type" and "Buyers by Nationality Group" donut charts, "Avg Income by Buyer Type", a "Total SDLT Liability by Buyer Type & Price Band" pivot table, and a "Buyer Segment Detail" table. KPI cards cover affordability index, average SDLT liability, monthly mortgage payment, and new-build %.

Hidden pages

Six single-visual tooltip pages (Rolling 12M Avg Price, Transactions Trend, Agent Revenue, Rental Income Trend, Lead Funnel, Buyers by Type) supply custom hover tooltips throughout the report. A further hidden page, "Regional Z-Score Anomaly Detection (Sale Price)", holds a scatter chart for drilling into boroughs whose sale prices deviate most from their regional average — it stays out of the page navigator and view mode.

Key Features

HTML-Content KPI Cards & Dynamic Text

Nearly every KPI tile, the landing page, and all page-intro text are rendered by the same custom HTML-content visual, each instance bound to a single DAX string measure in Tbl_Measures. This keeps formatting, conditional styling, and copy fully controlled in DAX rather than native visual formatting panes.

Field-Parameter Metric Switch

The "Select Metric" slicer on Buyer & Affordability is backed by a dedicated single-column table (DIM_MetricSelector) and a "KPI Card - Selected Metric" measure, letting one slicer swap which underlying metric drives the page's headline card.

What-If Scenario Slicers

"LTV Scenario" and "Rate Scenario" slicers (backed by DIM_LTVParameter and DIM_MortgageRateParameter) feed directly into the affordability and mortgage-payment calculations, giving the page a live what-if modelling feel.

Custom Tooltip Pages

Six hidden tooltip pages, each with a single HTML-content visual bound to its own "Tooltip HTML - <name>" measure, provide fully custom hover content in place of default Power BI tooltips.

UK Shape Map & Temperature Gauge

A regional shape map of England, Wales and Scotland ("Market Temperature") is paired with a gauge visual, both driven by "Market Temperature Score" and "Market Temperature RAG" measures to give an at-a-glance read of regional market heat.

Statistical Banding & Anomaly Flags

Measures like "Agent Percentile Band", "Agent Conversion Rank", "Regional Z-Score" and "Z-Score Flag" convert raw performance and price figures into ranked bands and outlier flags, surfaced in tables and the hidden anomaly-detection scatter page rather than as raw numbers.

Consistent In-Report Navigation

A custom page-navigator visual appears on every analytical page for one-click cross-page navigation, and the landing page uses an action button ("Enter Report →") to start the journey.

Data Model

TableTypeDescription
FACT_TransactionsFactProperty sale transactions; source for sales revenue, price and price-band measures.
FACT_RentalsFactRental/lettings records (rental status, tenant type); source for yield and rental income measures.
FACT_LeadsFactSales pipeline/lead records (lead source, funnel stage); source for the lead funnel and conversion measures.
DIM_PropertyDimensionShared property attributes — property type, region, borough, EPC rating — joined across all three fact tables.
DIM_AgentDimensionAgent roster with agency, region and seniority, used throughout Agent Performance.
DIM_BuyerDimensionBuyer segmentation — buyer type and nationality group — used on Buyer & Affordability.
DIM_CalendarDimensionStandard date table (date, quarter, year, year-month) supporting rolling-12-month and prior-year time intelligence.
DIM_FunnelStageDimensionLookup table defining lead funnel stage names/ordering for the Lead Funnel Stages visual.
DIM_MetricSelectorParameterSingle-column parameter table backing the "Select Metric" field-parameter-style slicer.
DIM_LTVParameterParameterWhat-if parameter table backing the "LTV Scenario" slicer for affordability modelling.
DIM_MortgageRateParameterParameterWhat-if parameter table backing the "Rate Scenario" slicer for mortgage payment modelling.
Tbl_MeasuresMeasures hubHidden, columnless table holding all DAX measures used across the report — KPI card values, tooltip HTML strings, and banding/anomaly measures.
Table/column names above were read directly from the report's visual query definitions (real, not inferred). Row counts and DAX measure formulas are compiled inside the model's storage engine and aren't exposed by static file inspection — these were intentionally left out rather than estimated.

Live Report

The published version of this report can be explored below.