Milestone 2: Building the EOHA Prototype
Β· 2 min read
Milestone 1 laid the architectural foundation β every service zone mapped, every data store specified, every use case documented. Now we build.
What Milestone 2 meansβ
The prototype phase (MarchβAugust 2026) is where the EOHA platform transitions from a design artefact into a running system. The core deliverables are:
- Automated GEE pipeline β a Python-triggered Cloud Function that pulls Sentinel-2 and MODIS imagery on an 8-day cycle, runs zonal statistics against ward boundaries, and writes directly to the Ward Risk store without manual intervention.
- Server-side risk scoring β
calculateDynamicRisk()moves from the browser to a Cloud Run service, enabling real-time scoring for all 9 Limpopo municipalities and laying the groundwork for multi-country expansion. - XGBoost ML forecasting β the first live run of the Malaria Risk Forecast pipeline against the baseline dataset, producing
outbreak_probability_scorevalues per zone per prediction period. - NCD live data β replacing the static NCD baseline with live GEE-computed scores using Copernicus/Sentinel atmospheric data (NO2, SO2, aerosol index, UV radiation).
Design artefacts carried into M2β
The Design Specification Document (v2) produced in M1 defines the full entity model the prototype must implement:
| Entity | Key fields | M2 target |
|---|---|---|
Zone | zone_id, boundary_polygon, base_population | GeoJSON sync automated |
Malaria_Observation | lst_surface_temp_c, soil_moisture_pct, ndwi_water_index | GEE pipeline live |
Malaria_Risk_Forecast | outbreak_probability_score, environmental_lag_days | XGBoost v1 deployed |
NCD_Observation | no2_density, so2_density, aerosol_index | Copernicus pipeline live |
User_Risk_Alert | alert_status, forecast_id | Alert engine wired to forecasts |
What's shipping firstβ
Our first sprint targets the Malaria pipeline end-to-end: GEE ingest β zonal statistics β XGBoost score β alert threshold check β USER_RISK_ALERT insert. Once that loop is closed on Limpopo data, we extend to NCD and begin multi-country boundary ingestion.
Follow progress on the Milestones page and in the live platform.