An islandwide weather forecast can tell us that tomorrow will be hot. For community teams supporting seniors, the next question is more local: where should we focus our attention first? We built HeatGuard to help Active Ageing Centre coordinators and Residents’ Network volunteers turn weather forecasts, housing data and population estimates into a practical evening briefing for the next day. What it does HeatGuard forecasts next-day outdoor Wet Bulb Globe Temperature (WBGT), a measure of heat stress, and produces local estimates for approximately 10,800 HDB blocks across Singapore. It combines these estimates with demographic, housing and cooling-access indicators to help teams:
- Review blocks ranked by outreach priority and estimated senior population.
- Identify nearby candidate cooling spaces for local verification.
- Export a block list and review outreach drafts in English, Chinese, Malay and Tamil.
- Explore illustrative scenarios involving cooling spaces, pop-up cooling points and cool coatings. An Evidence view shows forecast uncertainty, evaluation results and data limitations so users can understand the basis for each recommendation. How we built it We built the data and machine-learning pipeline on Databricks, using a Bronze–Silver–Gold architecture. Raw public data is preserved in Bronze, cleaned and validated in Silver, and transformed into forecasts, block priorities and cooling plans in Gold. Our Python forecasting pipeline uses gradient boosting, with experiments and models tracked through MLflow. Unity Catalog governs the project’s tables and registered models. A React and TypeScript interface, backed by FastAPI, reads the results through a Databricks SQL warehouse. The project also includes an AI/BI dashboard, Genie integration for natural-language exploration, and multilingual alert drafts generated with ai_query for human review. Challenges we faced One important challenge was making historical evaluation reflect what would actually be known when an evening forecast is issued. We discovered that some training inputs included observations recorded after the intended forecast cutoff. We corrected the pipeline to use current-day observations available by 18:30 SGT and adjusted the chronological evaluation boundaries. Combining datasets at different geographic scales was another challenge. Population data describes subzones, while outreach planning needs individual blocks. We therefore label block populations as estimates and distinguish candidate cooling locations from facilities with confirmed opening hours and capacity. What we learned Reliable forecasting requires careful attention to timing, uncertainty and operational trade-offs. In retrospective evaluation across 5,400 station-days, the corrected model achieved a 0.83°C mean absolute error, compared with 0.94°C for repeating yesterday’s observation. It detected 58% of High heat-stress days, versus 41% for that baseline, but precision fell to 31%, meaning more false alarms. These are station-level results. They do not establish block-level accuracy or health benefits. What’s next We plan to test additional weather features, collect prospective forecasts and seek coordinator feedback. Our proposed pilot target is to help a coordinator review the ten highest-priority blocks in under five minutes. HeatGuard supports human decisions: local temperature and population figures are estimates, cooling facilities need verification, and every outreach draft requires review.
Built With
- ai/bi-dashboards
- databricks
- databricks-sql
- deck.gl
- delta-lake
- fastapi
- genie
- lakeflow-declarative-pipelines
- lakeflow-jobs
- maplibre-gl-js
- mlflow
- python
- react
- scikit-learn
- sql
- typescript
- unity-catalog
- vite
Log in or sign up for Devpost to join the conversation.