Inspiration
Singapore had 87,200 one-person households of seniors aged 65 and above in 2024, more than double the 42,100 in 2014. In 2020, 9.3% of resident households had every member aged 65 or older, up from 4.6% in 2010. A meta-analysis of 70 studies links social isolation, loneliness and living alone to a 29%, 26% and 32% higher likelihood of death respectively.
Active Ageing Centres (AACs), the Silver Generation Office and volunteer groups already run outreach. Volunteer coordinators plan that outreach without an area-level view of where isolation risk concentrates, who nearby could volunteer, and which community spaces could host activities. SilverWatch builds that view from Singapore open data.
What it does
SilverWatch scores social isolation risk for every planning area and HDB town in Singapore. Volunteer coordinators and social workers use it to:
- view a heatmap of planning areas ranked by risk, with the top 10 and the drivers behind each score
- compare seniors likely living alone with nearby residents who could volunteer, and find areas that need volunteers from elsewhere
- choose the Community Clubs that would bring the most at-risk seniors within about 500 m of AAC activities
- ask questions in plain English through a Genie space
SilverWatch works at area level and uses no personal data.
How we built it
This section describes the design submitted in Round 1. We build it during the two-week sprint.
Data. Three datasets drive the risk index:
- SingStat: Singapore Residents by Planning Area/Subzone, Age Group, Sex and Type of Dwelling, June 2025
- data.gov.sg: Resident Population 65+ by Living Arrangement and Age Group, Annual
- data.gov.sg (People's Association): Community Club / PAssion WaVe Outlet, filtered to Community Clubs
URA Master Plan 2019 subzone boundaries provide the map. MOH Eldercare Services, hawker centres, parks and Key Indicators on the Elderly serve as context layers.
Pipeline. Lakeflow Jobs load raw files from a Unity Catalog volume into Delta tables (Bronze). The Silver and Gold layers run quality checks, standardise area names, perform spatial joins and map planning areas to HDB towns. Unity Catalog restricts raw tables to the build team and gives coordinators read access to final tables only. Tags record each table's source and date, and lineage runs from source to dashboard.
Living-alone estimate. For subzone $a$ and age group $g$, with $P_{a,g}$ residents and a national living-alone rate $r_g$:
$$\hat{L}a = \sum{g} P_{a,g} \, r_g$$
Risk index. We min-max scale each indicator $x_{a,k}$ and combine the four indicators with weights $w_k$:
$$R_a = \sum_{k=1}^{4} w_k \, \frac{x_{a,k} - \min_k}{\max_k - \min_k}$$
The starting weights are 0.30 for elderly share, 0.30 for estimated living alone, 0.25 for access gap and 0.15 for seniors in HDB 1-room and 2-room flats. The access gap is the distance to the nearest Community Club, a proxy for AAC coverage. We compare these weights with PCA-derived weights. A drop-one test measures how stable the ranking stays when indicator $k$ is removed:
$$\rho_k = \text{Spearman}\left(R,\; R^{(-k)}\right)$$
MLflow tracks every run and registers the final scoring model. Subzone scores roll up to planning area and HDB town, weighted by senior population.
Volunteer match. For each area, $S_a$ counts residents aged 55 to 74 and $\hat{D}_a$ estimates seniors aged 75 and above living alone:
$$V_a = \frac{S_a}{\hat{D}_a}$$
Areas with a low $V_a$ draw volunteers from neighbouring areas.
Site recommender. A greedy coverage method selects the five Community Clubs that bring the most at-risk seniors within about 500 m.
Output. An AI/BI dashboard has three tabs: a planning-area risk heatmap with the top 10 and each area's drivers, the volunteer match, and recommended sites with before and after coverage. A Genie space answers plain-English questions on the final tables.
Challenges we ran into
- No current open AAC locations. The only open AAC location file has records from July 2016. We use Community Clubs as the access layer, label it a proxy, and are confirming current AAC data with the organisers.
- Datasets that cannot rank areas. The HDB elderly tables come from a five-yearly survey, report at town level and end in 2018. The ComCare table is national only. Both serve as context.
- No ground truth. Open data has no isolation labels, so we treat the score as a risk index, test its stability, and use no personal data.
- Mixed geographies and dates. Sources span subzones, planning areas and HDB towns, dated 2016 to 2025. Every dashboard panel shows its data date.
- Free Edition limits. Outbound internet access is limited to trusted domains, so we upload files instead of calling APIs. In week 1 we test the custom-region map and access groups. The fallbacks are a point map at area centres and grants to named users.
Accomplishments that we're proud of
- We checked the five datasets in the A1 brief against their actual contents, dates and geographic levels, and documented which ones can rank areas.
- We traced the AAC location file to its 2016 records and designed a proxy with a path to swap in current data.
- We reduced the risk index to three datasets and four indicators that cover all three inputs named in the brief.
- We added a volunteer match that sets nearby volunteer capacity beside the risk score.
- We planned the build to fit Databricks Free Edition, with a fallback for each feature we have not yet tested.
What we learned
- Dataset dates need checking. Several data.gov.sg pages show "last updated 6 Jun 2024", which is a platform date. The record-level
FMEL_UPD_Dfield holds the real content date. - Living alone explains part of the risk. A Singapore cohort study found that 78.8% of socially disconnected older adults lived with family.
- Correlated indicators distort a score. The 65+ share, the 75+ share and a living-alone estimate built from age data all count age. We kept one age indicator and the living-alone estimate.
- Fewer datasets make a clearer index. Each dataset we kept maps to an input the brief requires, which makes every score traceable.
What's next for Silverwatch
- A 2030 projection of risk from current demographic trends
- A frailty layer from Census 2020 data on households with a member who has difficulty in daily activities
- Official AAC locations and catchments, if permitted
- Feedback sessions with volunteer coordinators on the dashboard
Built With
- data.gov.sg
- databricks
- databricks-ai/bi-dashboards
- databricks-free-edition
- databricks-genie
- databricks-sql
- delta-lake
- geojson
- geopandas
- lakeflow-jobs
- mlflow
- pandas
- people's
- pyspark
- python
- scikit-learn
- scipy
- shapely
- singstat
- sql
- unity-catalog
- ura-master-plan-2019
Log in or sign up for Devpost to join the conversation.