michaelml.dev / Michael_Portfolio.ipynb
🏆 1st Place Winner at Hacklytics (Databricks x United Nations Challenge). CrisisLens is an AI-assisted crisis intelligence platform that combines real-time geospatial context, ML forecasting, and Databricks-powered natural language analysis to help humanitarian teams prioritize aid decisions.
[ ]
code · CrisisLens
project = load_project("crisis-lens")
project.summary()Output

CrisisLens
🏆 1st Place Winner at Hacklytics (Databricks x United Nations Challenge). CrisisLens is an AI-assisted crisis intelligence platform that combines real-time geospatial context, ML forecasting, and Databricks-powered natural language analysis to help humanitarian teams prioritize aid decisions.
DatabricksUnited Nations ChallengeNext.jsTypeScriptThree.jsTailwind CSSPyTorchLightGBMXGBoostPandasNumPyForecasting
[ ]
code · Problem definition
project = load_project("crisis-lens")
project.problem()Output
ProblemHumanitarian teams must prioritize aid while crisis, funding, and operational signals are fragmented across countries and time.
ApproachFuse multi-country data with leakage-aware ensemble forecasting, SHAP analysis, KNN peer mapping, Databricks Genie, and an interactive 3D globe.
OutcomeWon 1st Place in the Databricks × United Nations Challenge at Hacklytics and delivered a working crisis-prioritization command center.
[ ]
code · Constraints
project = load_project("crisis-lens")
project.constraints()Output
Constraints
- Heterogeneous country-level data needed a consistent schema.
- Time and group leakage had to be prevented during validation.
- Forecasts needed to remain understandable inside an interactive decision tool.
[ ]
code · Role and implementation
project = load_project("crisis-lens")
project.implementation()Output
Role and implementation
My role: Cleaned and structured the datasets; performed EDA, feature engineering, and SHAP analysis; trained and validated the forecasting ensemble; built peer mapping; and integrated predictions into the visualization.
- Built 6-month and 12-month-plus forecasting workflows with multiple ensemble models.
- Used SHAP for feature analysis and KNN for cross-country peer mapping.
- Connected model artifacts, Databricks analysis, simulations, and a Three.js interface.
[ ]
code · Architecture
project = load_project("crisis-lens")
project.show_architecture()Output
Data FusionAggregate and normalize multi-country humanitarian indicators into dashboard-ready artifacts.
ModelingTrain ensemble and multi-horizon forecasting models with leakage-safe, time-aware validation.
InterpretabilityUse SHAP and comparative analysis to surface drivers of country-level risk and funding shifts.
Genie Analysis ModeEnable natural-language Databricks queries that return structured summaries and comparison tables.
Simulation ModeRun intervention scenarios and visualize projected quarter-by-quarter impact on a live globe.
Operational UIPresent model outputs through an interactive command center with geospatial overlays and controls.
[ ]
code · Demo and media
project = load_project("crisis-lens")
project.media()Output
[ ]
code · Evaluation
project = load_project("crisis-lens")
project.evaluation()Output
Evaluation
- Applied group- and time-aware cross-validation.
- Compared LightGBM, Random Forest, XGBoost, Gradient Boosting, and stacking approaches.
- Reviewed feature drivers with SHAP rather than treating predictions as opaque scores.
[ ]
code · Results
project = load_project("crisis-lens")
project.results()Output
Results
- Produced multi-horizon country forecasts and scenario outputs inside the live interface.
- Awarded 1st Place in the Databricks × United Nations Challenge at Hacklytics.
[ ]
code · Tradeoffs and failures
project = load_project("crisis-lens")
project.tradeoffs()Output
Tradeoffs
- The ensemble improves coverage at the cost of model and deployment complexity.
- Scenario outputs support decisions; they are not a substitute for field intelligence.
[ ]
code · What I would improve
project = load_project("crisis-lens")
project.improvements()Output
Improvements
- Add calibrated uncertainty intervals and more explicit data-quality indicators.
- Validate prioritization workflows with humanitarian-domain users.
[ ]
code · Links and repository
project = load_project("crisis-lens")
project.links()Output