Skip to content

01 Project Overview

Maxime GOURGUECHON edited this page Jun 6, 2026 · 1 revision

01 · Project Overview

What it is

An end-to-end decision-support platform built on 15 years (2010–2024) of BMW sales records (50,000 transactions, 11 features). It pairs rigorous econometrics with modern machine learning / deep learning, enriches the data with real external APIs (macro-economics, CO₂ emissions, FX), and ships a premium Streamlit dashboard behind a fully containerised, CI/CD-tested codebase.

The problem it actually solves

The brief was "analyse and predict BMW luxury sales." A junior would jump straight to modelling and report whatever metric came out. The senior move was to interrogate the data first — and that changed everything.

The defining finding

Exploratory analysis + a formal statistical audit established two facts about the source dataset:

  1. It is signal-free. Every feature is statistically independent of the targets (max |correlation| ≈ 0.009; all ANOVA p > 0.4; mutual information ≈ 0). The data-generating process is essentially uniform noise — mean Price_USD is flat (~$75k) across every model, which is economically impossible for a real luxury line-up.
  2. The classification target is leaked. Sales_Classification is a deterministic threshold on Sales_Volume (High ⟺ Volume ≥ 7000, zero overlap).

See 04-Data-Integrity-and-Signal-Audit for the full evidence.

The thesis: predictive competence and intellectual honesty

A null result risks two failure modes. The project answers both:

Risk Answer
"Maybe you just can't model." 05-Predictive-Capability — the same pipeline reaches CV R² ≈ 0.85 on a signal-bearing target, SHAP recovering the true drivers.
"A null result is worthless." The audit turns it into reusable, falsifiable evidence; business value is delivered by the 09-Scenario-Simulator, grounded in literature elasticities + real macro data.

This is what separates a senior deliverable from a demo: knowing how to predict, and knowing when not to.

Headline results (honest, reproducible)

Analysis Result Meaning
Max |correlation| (numeric features) 0.009 mutually independent noise
Price elasticity (log-log, HC3) −0.001 (p = 0.92) no measurable price sensitivity
Regression R² (best booster) ≈ 0.00 cannot beat the mean
Classification ROC-AUC (leakage-free) ≈ 0.51 no discriminative signal
Classification ROC-AUC (leaked) 1.00 signature of target leakage
Permutation test (label-shuffle) p ≈ 0.90 indistinguishable from chance
Predictive capability (signal-bearing) CV R² ≈ 0.85 ± 0.003 the pipeline does predict

Full table: 17-Results-Summary.

Scope at a glance

  • Data — schema-validated loading, integrity report, statistical signal audit.
  • External augmentation — 4 hybrid (real + mock) API clients with caching, retry and a circuit breaker; 3 of 4 validated live.
  • Econometrics — hedonic price model, price elasticity (robust SE), VIF, formal leakage proof.
  • ML/DL — tuned XGBoost / LightGBM / CatBoost + a PyTorch tabular MLP, benchmarked honestly; MLflow tracking.
  • Decision support — elasticity-based Scenario Simulator with Monte-Carlo credible intervals and luxury-segment priors.
  • SQL — DuckDB analytics over the raw CSV.
  • Explainability — SHAP attributions.
  • Product — premium Streamlit dashboard (7 tabs).
  • MLOps — pytest + mypy + coverage gate, pre-commit, GitHub Actions, multi-stage Docker, GHCR publish, Trivy + pip-audit, Dependabot, MkDocs site, Hugging Face Spaces deployment.

Continue to 02-Architecture.

Clone this wiki locally