AI-driven airline disruption management platform: forecasts delay propagation across an airport network with a spatio-temporal graph neural network, generates recovery plans with an MILP solver, and uses an LLM agent to turn both into a plain-English operations briefing.
Live demo: skygraphops.vercel.app
When a disruption hits (weather, aircraft-on-ground, crew sickness), an airline operations center needs to answer three questions fast: how bad will this get, what are my options, and what do I do right now. This project builds an end-to-end pipeline for that:
- Forecast — a heterogeneous graph neural network predicts per-airport delay (with uncertainty bounds) from live network state.
- Optimize — a MILP recovery solver generates multiple EASA-compliant recovery plans (reroute/delay/cancel), warm-started by a DRL policy.
- Decide — an LLM agent (Claude) orchestrates the forecast and solver as tools, reasons over the tradeoffs, and produces a short briefing a duty manager can act on — with every step logged for auditability.
flowchart TD
A[Raw flight + weather data] --> B[Graph Builder]
B --> C[Heterogeneous Graph\nairport / flight / crew / aircraft]
C --> D[ST-GNN Forecaster]
D --> E[Delay predictions: q10 / q50 / q90]
F[Scenario Generator\nSNOWSTORM, AOG, CREW_SICKNESS] --> H
E --> H[LLM Agent Orchestrator]
G[MILP Recovery Solver + DRL warm-start] --> H
H --> I[FastAPI state machine\npredict / scenarios / apply / rollback]
F --> I
E --> I
G --> I
I --> J[React frontend]
| Layer | Path | Role |
|---|---|---|
| Graph | graph/ | Builds the heterogeneous graph (airport/flight/crew/aircraft) from raw flight + weather data |
| Forecasting | forecaster/ | ST-GNN model, training, evaluation, inference |
| Scenarios | scenarios/ | Disruption scenario definitions (weather, AOG, crew sickness) |
| Recovery | solver/ | CP-SAT / MILP recovery optimizer with DRL warm-start |
| Agent | agent/ | Claude-based orchestrator, tool loop, XAI audit logging |
| API | api/ | FastAPI state machine wiring forecast → solver → agent |
| Frontend | frontend/ | React + TypeScript ops dashboard |
The ST-GNN forecaster is evaluated against ARIMA and XGBoost baselines on a fair, system-level aggregated task:
| Model | Task | MAE (min) | RMSE (min) |
|---|---|---|---|
| ARIMA | System-level daily avg | 5.88 | 6.78 |
| XGBoost | System-level daily avg | 4.31 | 5.32 |
| ST-GNN | Per-airport (harder task) | 6.25 | 9.34 |
| ST-GNN | System-level daily avg | 3.18 | — |
ST-GNN beats ARIMA by 46% and XGBoost by 26% on MAE once aggregated to the same task the baselines solve. Quantile heads (q10/q50/q90) additionally give risk-aware interval forecasts that feed directly into recovery planning.
- ML: PyTorch, PyTorch Geometric (heterogeneous GNN, quantile regression), scikit-learn baselines
- Optimization: Google OR-Tools (CP-SAT / MILP), DRL warm-start
- Agent: Anthropic Claude with a custom tool-use loop, MCP servers for forecaster/solver
- Backend: FastAPI, SQLite
- Frontend: React, TypeScript, Vite, Tailwind, Zustand, Recharts, Leaflet
- Deploy: Railway (API), Vercel (frontend)
# Backend
pip install -r requirements.txt -r requirements-api.txt
uvicorn api.main:app --reload --port 8000
# Frontend
cd frontend
npm install
npm run devThe API expects an ANTHROPIC_API_KEY in a .env file at the project root for the agent orchestrator to run.