Inspiration

In H1 2026, Singapore's dengue case count was technically down 54% year-on-year — reassuring on the surface. But within that same half-year, cases rose 87.8% quarter-on-quarter, and the dominant serotype flipped to DENV-3, a strain most residents have little immunity to — a pattern that has historically preceded a surge. Meanwhile, NEA's own surveillance is structurally reactive: a cluster is only declared once two cases appear within 150m of each other within 14 days — by definition, after the outbreak has already started. We wanted to know whether the same open weather and case data NEA already publishes could show the turn a few weeks earlier, instead of after it.

How we plan to build it

Entirely on Databricks:

  • Lakeflow Jobs will pull NEA's dengue cluster GeoJSON, 5-minute rainfall/temperature APIs, and historical rainfall back to 2016, landing as raw Bronze Delta tables on a schedule.
  • Databricks SQL's native H3 functions will join cluster polygons to planning-area boundaries into a consistent spatial key — Silver tables.
  • A Gold table will aggregate rolling rainfall/temperature lags and recent case counts per planning area per week.
  • Weekly case counts are small, discrete, and frequently zero, so we plan to model them with a Negative Binomial regression rather than ordinary least squares — the correct likelihood for sparse count data:

$$\log(\mu_{i,t}) = \beta_0 + \beta_1\,\text{rain}{i,t-2} + \beta_2\,\text{rain}{i,t-3} + \beta_3\,\text{temp}{i,t-1} + \beta_4 \log(Y{i,t-1}+1)$$

$$Y_{i,t} \sim \text{NegBin}(\mu_{i,t}, \alpha)$$

The two-to-three-week rainfall lags are meant to encode the actual mosquito breeding-to-biting delay, not an arbitrary window.

  • The model will be tracked with MLflow and registered through Unity Catalog, which will govern every table in the pipeline.
  • Forecasts will surface on an AI/BI dashboard with an embedded Genie Agent for natural-language questions, and a SQL Alert task at the end of the same Lakeflow job will check saved locations against the latest risk scores and notify residents when one crosses the threshold.

Within the two-week build window, our priority is the ingestion pipeline, the H3 join, one trained model, the dashboard with Genie, and alerts on a handful of test locations — a standalone Databricks App and a multi-model comparison are stretch goals if time allows.

Built With

Share this project:

Updates

Submission history