The Brief
Somchai Rattanapong runs five boutique hotels across Thailand. Beach resorts in Koh Samui and Krabi. A city hotel in Bangkok. A cultural property in Chiang Mai. A nature retreat in Khao Yai. Each property is different -- different markets, different price points, different guests.
His board meets quarterly and compares Koh Samui revenue to Chiang Mai revenue. But Koh Samui has 40 rooms at premium rates and Chiang Mai has 25 rooms at mid-range rates. The comparison is meaningless without adjustment, and Somchai knows it. He does not have the analysis to prove it.
Three data systems, three exports, no unified view. Booking data, guest review scores from TripAdvisor and Booking.com, and monthly revenue reports that each property manager formats differently.
Your Role
You combine these three sources into something that tells a fair story. You determine which satisfaction differences across properties are real and which are noise. You figure out what actually drives guest satisfaction. Then you produce something Somchai can put in front of his board.
This time, there is no provided answer key. The verification targets from the last two projects are gone. When you join three datasets and run a statistical test, you verify the work yourself. A second AI reviews your methodology from a fresh perspective. The templates and guides give you structure. The substance is yours to create.
What's New
Last time, you built a prediction model on a single, familiar dataset. Verification targets told you what honest results looked like. You caught data leakage by checking against those targets.
This time, the data starts messy. Three sources that were never designed to work together. Different date formats, different naming conventions, missing values. Before any analysis can run, you need to decide how to combine them -- and those decisions affect every number downstream.
The analytical work is also new. You will test whether differences across properties are statistically significant, measure how large those differences actually are, check whether the statistical tests are even valid for this data, and build a model to identify satisfaction drivers. A p-value without an effect size is incomplete. A test run on data that violates its assumptions produces a number that looks real and is not.
Tools
- Python 3.11+ via your conda "ds" environment
- Jupyter Notebook for the analysis
- pandas for data handling
- DuckDB for SQL-based multi-source analysis (new this project)
- scikit-learn for prediction modeling (Ridge, Lasso, cross-validation)
- scipy for statistical tests and assumption checking
- matplotlib / seaborn for visualization
- Claude Code as the AI you direct
- Git / GitHub for version control
Materials
You receive:
- Three datasets: bookings, guest reviews, and monthly revenue reports
- A data dictionary for each source
- A methodology memo template that you fill in as you work
- A project governance file (CLAUDE.md) for Claude Code
- Somchai's email explaining what he needs
No verification targets. No step-by-step pipeline. The methodology memo gives you a structure to record your decisions. The data dictionaries tell you what each column means. You direct the work and verify it yourself.