What inspired me
Singapore becomes "super-aged" in 2026: Census 2020 already counted 614,380 residents aged 65+, and heat is getting worse every year. NEA's Heat Stress Advisory tells people how hot it will be, but no one tells community care teams which seniors are most exposed tomorrow, where they live, and what to do first. The actions that protect seniors, like a phone check, an Active Ageing Centre opening as a cooling space, or a hydration reminder, are cheap, but they only work if taken a day ahead. CoolCheck closes that gap between a weather warning and a community response: check on the right seniors, a day early.
What CoolCheck will do
Every evening it will:
- Forecast tomorrow's peak heat stress (WBGT) for each of Singapore's 55 planning areas, using NEA's own categories:
$$\text{category} = \begin{cases} \text{Low} & \text{WBGT} < 31^\circ\text{C} \ \text{Moderate} & 31 \le \text{WBGT} < 33 \ \text{High} & \text{WBGT} \ge 33 \end{cases}$$
- Score risk by combining the forecast with a "can't cool down" index (seniors aged 75+, HDB rental flats, and EMA household electricity use as a hint of whether households can afford air-con) and the cooling-access gap (distance to a refuge, parks and cycling corridors):
$$\text{Risk}_{\text{area}} = P(\text{High tomorrow}) \times \text{Vulnerability} \times \text{Cooling gap}$$
- Draft a response plan: an agent picks the areas, and the HDB blocks with the most rental flats, that fit tomorrow's volunteer capacity. It finds the nearest refuges and drafts advisories in English, Chinese, Malay and Tamil. A coordinator approves before anything is sent.
How I plan to build it
On Databricks Free Edition:
- Ingestion: Lakeflow Jobs pull NEA's live and historical APIs (heat stress, rainfall, air temperature, 24-hour forecast) into Delta tables governed by Unity Catalog. The historical backfill is small:
$$\left\lceil \frac{96 \text{ readings/day}}{25 \text{ per page}} \right\rceil \times 365 \approx 1{,}460 \text{ API calls per year}$$
- Transformation: a Lakeflow Declarative Pipeline with data-quality rules builds clean per-area and per-block tables.
- ML: a LightGBM model of tomorrow's heat-stress category, tracked in MLflow, compared against "same as today" and seasonal baselines, with a 2025 back-test.
- Output: an AI/BI dashboard that answers one question, "Which planning areas should we check on tomorrow, and what should we do there?", plus a Databricks App running the agent on Foundation Model APIs with Unity Catalog function tools.
I'll build one end-to-end slice first (data → forecast → risk → dashboard, by day 9), then add the agent.
What I hope to learn
- Building production-style pipelines on live data: loading only new readings, enforcing data-quality rules, and handling late or missing sensor readings.
- Honest forecasting: time-based back-tests, baselines, and evaluating rare events.
- Designing a tool-using AI agent with guardrails: grounding answers in governed data, human approval, and evaluation with MLflow tracing.
- Working with Singapore's map data (parks, cycling paths, planning-area boundaries) and designing tools that non-technical community workers can use.
Challenges I might face
- Rare events: High heat-stress days are uncommon, so overall accuracy can mislead. Missing a High day is the costly error, so I will focus on:
$$\text{Recall}{\text{High}} = \frac{TP{\text{High}}}{TP_{\text{High}} + FN_{\text{High}}}$$
- Sparse, changing sensors: only 18 live air-temperature stations, and a heat-stress network that has grown over time. I'll keep heat at planning-area level and only take vulnerability down to blocks.
- Proxies are not proof: electricity use only suggests households can't afford air-con, so I'll test how sensitive the ranking is to it.
- Matching geographies: HDB towns don't line up exactly with planning areas, so I'll need a careful lookup table.
- Measuring impact honestly: there is no open data on heat-related illness, so I'll measure impact as reach and lead time.
- Free Edition quotas and a two-week timeline: scheduled jobs instead of always-on streaming, one pipeline, one app, and features deliberately left out (Genie as a core feature, agent chat mode, PM2.5).
Built With
- databricks
- mlflow
- python
Log in or sign up for Devpost to join the conversation.