Sample interactive business intelligence report for a real estate developer. This report was created in Power BI using data randomly generated by a Python script. My goal was to demonstrate how data from multiple systems (CRM, ERP, accounting) can be integrated into a single environment.
On the main dashboard, you will find several key financial and operational KPIs, a monthly sales overview compared to the budget, sales and profitability analysis for each investment, and a cross‑sectional view of every property currently on sale.
Subsequent pages allow for deeper analysis of sales and profitability at both the investment and individual property level. The final section of the report provides a marketing analysis of sales and simple customer cross‑sectional data.
All visualizations are interactive and interconnected, enabling data exploration across multiple dimensions and levels of granularity.
In this project, I wanted to address the challenge of lacking a multidimensional view of real estate developer sales. Here we have raw transactional data scattered across different files, from which little can be extracted, and a simple Excel analysis may fail to capture all the relationships. Thanks to the report, however, we can quickly access measures such as selected KPIs per apartment, per investment, margin per unit, or available area for sale. The project is a demo, so it can naturally be expanded with additional functionalities, for example by adding cash flow and liquidity analysis.
CSV/Excel files available on‑prem, generated by AI Copilot
Power Query (data preparation from source files), Python for dataset generation (libraries: faker, random, numpy), AI Copilot (Python, DAX, testing),
Power BI Desktop (main environment), Power BI Service (management).
The main challenges in preparing this report were as follows: building a meaningful and consistent dataset based on a Python script, then constructing the data model, denormalizing tables, modeling relationships in a star schema, cleaning source data (including directly within the dataset), validating data consistency across normalized tables (e.g., mismatched payment amounts for apartments, incorrect references in apartment and investment IDs), removing errors, duplicates, and unnecessary columns, merging columns, performing pivots, creating several calculated columns in DAX, optimizing visualization performance, installing the data gateway, configuring data refresh, and preparing the mobile version.
Below are a few screenshots from the work on the report:
E-mail: kontakt@jakubwozniak.pl