Skip to content
Michael_Portfolio.ipynb
MR
File browser
Michael_Portfolio.ipynb
profile.jpg
resume.pdf

One editable portfolio notebook. Edits survive refreshes in this tab and reset when the tab closes or the notebook is reset.

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 project preview

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
GitHub Demo Project page
Python 3 · PyodideWorker: CPUConnecting…Command modeLn 1, Col 1