All Projects
2025Analytics / BI

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.

PythonPower BIPower QueryPandasDAXData Modelling

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.

1
Step 1

Consolidate

Merge listings, reviews, and neighbourhood data for Brussels, Ghent, and Antwerp.

2
Step 2

Model

Shape the data into a star schema around a central listings fact table.

3
Step 3

Analyse

Score review sentiment in Python and build DAX measures for the key metrics.

4
Step 4

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.

1

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.
2

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.
3

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.
4

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.
5

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

Deployment & Technology Stack

Power BIReporting Tool
Power QueryData Consolidation
DAXMeasures & Logic
PythonSentiment Analysis
ExcelSource Data