Airbnb Listings BI Dashboard
Solo Developer
An interactive Power BI dashboard that analyses Airbnb listings across major Belgian cities, covering pricing trends, review sentiment, host behaviour, and concrete recommendations for hosts.
Overview
About the project
Property owners and market analysts had no consolidated view of Belgium's short term rental market. Pricing dynamics, guest sentiment, and host performance were scattered across separate, raw datasets for each city, making it almost impossible to compare markets or understand what actually drives a successful listing.
I consolidated separate Excel datasets for Brussels, Ghent, and Antwerp using Power Query, merging listings, reviews, and neighbourhood data into a single model built on a star schema around a central listings fact table. Guest reviews were classified by emotional tone with a Python sentiment analysis script, and DAX measures were written for metrics like five star ratios, listing volumes, and host behaviour. A custom ranking visual highlights the best property and room type combinations using a price to rating ratio. The final report is a four page dashboard that moves from descriptive to diagnostic to prescriptive analytics.
The dashboard gives hosts and analysts a single place to benchmark pricing, read guest sentiment at a glance, and act on specific, data backed recommendations for improving a listing across three major cities.
System Overview
At a glance
A Power BI dashboard that turns scattered Excel exports from Brussels, Ghent, and Antwerp into a single navigable view of Belgium's short term rental market. It moves from descriptive analysis through diagnostic insight into prescriptive recommendations a host can act on, with review sentiment scored in Python and surfaced alongside the pricing data.
How It Works
System Architecture
Power Query
Consolidates Excel data from three cities
Star Schema Model
Central listings fact table with dimension tables
Python Sentiment Script
Classifies guest reviews by emotional tone
Power BI Report
Four page interactive dashboard
Process Flow
How the project moves from start to finish, step by step.
Consolidate
Merge listings, reviews, and neighbourhood data for Brussels, Ghent, and Antwerp.
Model
Shape the data into a star schema around a central listings fact table.
Analyse
Score review sentiment in Python and build DAX measures for the key metrics.
Present
Lay it out as a four page dashboard from descriptive to prescriptive views.
System Breakdown
Report Pages
The report walks from what is happening through why it is happening into what to do about it.
Page 1 — Market Overview
Listing Volumes
How many listings each city has and how they are distributed.
Cross City Comparison
Side by side view across Brussels, Ghent, and Antwerp.
Headline KPIs
Average prices, ratings, and review counts at a glance.
Page 2 — Pricing Dynamics
Price Distributions
How pricing varies by city, neighbourhood, and room type.
Outlier Flagging
Listings priced unusually high or low relative to their peers.
Pricing Trends
Shifts in pricing across the dataset.
Page 3 — Sentiment Analysis
Review Tone
Python scored sentiment classified per review.
Five Star Ratios
Share of top rated stays per listing and per host.
Sentiment by City
Where guests are happiest, and where they are not.
Page 4 — Recommendations
Best Combinations
Property and room types ranked by a price to rating ratio.
Host Guidance
Concrete, data backed actions a host can take.
Custom Ranking Visual
Custom visual surfacing the strongest performers.
Workflows
Build Pipeline
From raw spreadsheets per city to a four page interactive report.
Data Consolidation
Purpose: Bring three cities into one consistent dataset.
How it works
- Load Excel exports for Brussels, Ghent, and Antwerp via Power Query.
- Merge listings, reviews, and neighbourhood data.
- Standardise column names and types across cities.
Data Modelling
Purpose: Lay a clean foundation every measure can rest on.
How it works
- Shape the data into a star schema around a central listings fact table.
- Build dimension tables for city, host, room type, and neighbourhood.
- Establish relationships so filters propagate the way analysts expect.
Sentiment Scoring
Purpose: Add meaning to the textual reviews.
How it works
- Run a Python sentiment script over the guest reviews.
- Classify each review by emotional tone.
- Push the classified output back into the model alongside the structured data.
DAX Measures
Purpose: Turn the model into the numbers that matter.
How it works
- Author DAX measures for five star ratios, listing volumes, and host behaviour.
- Build a price to rating ratio used by the ranking visual.
- Keep measures named consistently so the report stays readable.
Report Assembly
Purpose: Tell the story from descriptive through to prescriptive.
How it works
- Lay out four pages from market overview to recommendations.
- Pair every visual with a clear takeaway.
- Wire filters so a user can drill into any city or room type.
What It Does
Features & Capabilities
Cross City Analysis
Compare pricing and demand across three Belgian cities.
Sentiment Insights
Guest reviews classified by emotional tone for a quick read.
Custom Ranking
Best property and room types ranked by a price to rating ratio.
Prescriptive Advice
Concrete, data backed recommendations hosts can act on.
Running It