European Mobility Intelligence Platform
Production data and AI pipelines turning fragmented national vehicle-registration sources into one trusted reference — built from the ground up to 28 countries.
Experimentation is useful. Production needs repeatable contracts.
01Context
Smart Mobility Lab analyses the European vehicle market. Each country publishes registration data differently — different formats, identifiers, granularity and release rhythms.
02Problem
Turn heterogeneous national sources into a single reference where the same vehicle model is recognised everywhere — and keep doing it every period, as coverage grows.
03Constraints
- Source formats differ per country (e.g. fixed-width files)
- Runs must be idempotent per period
- Every transformation must stay traceable to raw evidence
- Coverage grew from zero to 28 countries at roughly 10× the volume
04My role
What I personally built
- The initial reference dataset, built from scratch, and its ETL/ELT pipelines
- Normalisation, matching and data-quality controls, with processing logs
- Script-first country pipelines (CLI + tests) replacing notebook-driven production runs
- ClickHouse analytics optimisation
- GraphRAG and knowledge-graph components for traceability
- Web API portal deployment on a multi-service VPS (Docker/Kubernetes)
- Prophet forecasting and client deliverables
What others owned
- Market scope, client relationships and business priorities were set at company level
05Architecture
Architecture explorer
The business flow — what happens, in plain words.
01 / 05
National sources — Each country publishes registrations in its own format.
06Key decisions
Notebooks for exploration only; production runs through
python -m pipelines.<country>.cli- Because
- Reproducible, testable, reviewable runs — the same command every period.
- Trade-off
- More upfront structure before a new country is onboarded.
Keep raw evidence, workfiles and master data in separate, documented zones
- Because
- Any number in a client deliverable can be traced back to its source file.
- Trade-off
- More storage and discipline than a single transformed table.
ClickHouse for analytical exploration
- Because
- Columnar analytics stayed fast as volume grew ~10×.
- Trade-off
- Another engine to operate next to Snowflake.
07System
Raw source evidence is kept separate from transformed workfiles. Country modules parse, normalise and link records to a master dataset, resolving conflicts through explicit source priorities. Outputs feed analytics (ClickHouse), forecasting (Prophet) and a knowledge layer used for traceability.
08Challenges
- Identity resolution: the same model appears under different names and homologation codes
- Moving production out of notebooks without slowing exploration down
- Keeping analytics responsive as volume grew by an order of magnitude
09Outcome
The platform grew from zero to 28 countries with approximately ten times the data volume, while datasets, dashboards, mobility analyses and client deliverables kept shipping.
10What I learned
Data quality is an architecture decision, not a cleaning step. Folder contracts and CLIs are what let a team trust a pipeline they didn't write.
11Stack
- Python
- SQL
- Snowflake
- ClickHouse
- pandas
- Prophet
- GraphRAG
- Neo4j
- Docker
- Kubernetes
- pytest
- Google Drive API
12Evidence
Confidentiality · Proprietary client work: source code and data are private. Architecture described at a level approved for public sharing.