This project forecasts hourly customer demand in the city of Barcelona to help Glovo optimize courier assignment throughout the week. Currently, the Operations team manually estimates hourly demand, which is inefficient and unscalable as the company grows. This project automates the task by using time series and machine learning models to forecast order volumes for each hourly slot, every Sunday at 23:59, for the upcoming week (Monday 00:00 to Sunday 23:00).
The forecasting pipeline is built using Python and includes data ingestion, preprocessing, feature engineering, model training, evaluation, and deployment logging via MLflow. We applied a modular structure with a clear MLOps mindset and followed the Scrum Agile framework to organize team roles and project execution.
.
├── data/
│ ├── train_data.csv # Historical hourly order data (main dataset)
│ ├── test_data_mock.csv # Sample/test data used for validation
│ ├── predictions.csv # Output forecast for next week (submission-ready)
│ └── predicted_orders.png # Visual plot of predicted order volume
│
├── mlruns/ # MLflow experiment tracking directory
│ └── 0/ # Logged model runs and metadata
│ └── meta.yaml # Metadata for experiment tracking
│
├── models/
│ ├── __init__.py # Initializes model package
│ ├── arima_model.py # ARIMA modeling logic
│ ├── xgb_model.py # XGBoost regression logic
│ ├── rolling_mean_model.py # Simple rolling average forecast
│ ├── rolling_mean_improved.py # Improved version of rolling mean forecast
│ └── combine_forecast.py # Combines model outputs
│
├── Forecasting_orders.ipynb # Main notebook with full pipeline: EDA → model → eval
├── predictions.py # Script for generating forecast outputs
├── Intelligent_Data_Development__...pdf # MLOps Write up
├── LICENSE # Licensing terms
├── README.md # Project overview and structure
└── .gitignore # Files and directories to exclude from Git- Alejandro Delgado
- Enzo Infantes
- Camilo Gili
- Maria Aleman