Inspiration
Every HDB block in Singapore has a blue recycling bin, yet in 2025 the domestic recycling rate was just 11%, far from the Zero Waste Masterplan's target of 30% by 2030. Meanwhile, Singapore disposed of 3.36 million tonnes of waste last year, and Semakau, our only landfill, is projected to run out of space around 2035.
What surprised us most was that the problem isn't just how much people recycle, but how well. About 40% of what goes into blue bins and chutes can't be recycled, a rate that hasn't moved since 2018. We wanted to build something that helps on both fronts: showing planners where recycling access falls short, and helping residents get it right.
What it does
Sortie is a planning tool built on Singapore open data:
- 🗺️ Finds the gaps. Ranks planning areas by recycling access, using bins per 1,000 HDB residents and each block's distance to the nearest e-waste point, weighted by the number of homes affected.
- 📍 Recommends placement. Names the top 5 planning areas where new collection points would reach the most households.
- 📈 Forecasts the trend. Projects Singapore's overall recycling rate to 2030 against the 70% national target.
- 🎚️ Simulates the fix. A scenario slider shows the tonnes diverted and days of disposal avoided for each intervention.
- 💬 Helps residents recycle right (stretch goal). A "What can I recycle?" assistant aimed at cutting contamination.
How we're building it
Sortie runs end to end on Databricks Free Edition:
- Ingestion. Lakeflow Jobs pull data from the data.gov.sg API (with a file-upload fallback) into Delta bronze tables, governed in Unity Catalog.
- Transformation. Lakeflow pipelines with data-quality expectations clean, join and geocode the data into silver and gold tables.
- Modelling. MLflow tracks our recycling-rate forecast (26 years of data, 2000 to 2025) and the scenario model.
- Output. An AI/BI dashboard, a Genie space for natural-language questions, and a Databricks App with the map and scenario slider.
The scenario model is deliberately simple and transparent. If an intervention raises the domestic recycling rate by $$\Delta r$$, the extra tonnes diverted are
$$\Delta T = G_{\text{dom}} \times \Delta r \times (1 - c)$$
where $$G_{\text{dom}}$$ is domestic waste generated and $$c$$ is the contamination rate. We convert tonnes into days of disposal avoided:
$$\text{Days avoided} = \frac{\Delta T}{D / 365}$$
where $$D$$ is total annual waste disposed. For scale: diverting just 1% of the 3.36 Mt disposed is about 33,600 tonnes, or roughly 3.7 days of national disposal.
Datasets (all from data.gov.sg): Waste Disposed Of And Recycled, Annual and Waste Management And Overall Recycling Rates, Annual (SingStat); Recycling Bins, E-waste Recycling, Cash For Trash and 2nd Hand Goods Collection Points (NEA); HDB Property Information (HDB); Master Plan 2019 Subzone Boundary (URA); Census 2020 resident population by subzone and dwelling type (SingStat).
Challenges we ran into
Checking our idea against the real datasets changed our plan more than once:
- The number we wanted didn't exist. We planned to forecast the domestic recycling rate, but data.gov.sg has no domestic recycling series, only an overall rate. We switched our forecast to the overall rate against the 70% target.
- Bins are everywhere, by design. Each HDB block has a blue bin, so measuring "distance to the nearest bin" would show almost nothing. We shifted to measures that actually vary: bins per 1,000 HDB residents and distance to e-waste points.
- Datasets that don't want to be joined. HDB Property Information has dwelling units but no postal codes or coordinates, and the building footprint layer stores streets as codes. We bridge them through the bin layer's addresses, which means normalising abbreviations like "ST" vs "STREET".
- Stale and messy data. The bin layer dates from 2017 and the e-waste layer from 2022. Recent years in the SingStat tables arrive as text with
"na"values. We flag stale layers in the tool rather than hide them. - Platform limits. Free Edition restricts outbound internet, so we built in a file-upload fallback from day one.
What we learned
- Verify before you promise. Reading the actual schemas exposed problems that a dataset title never would.
- Domestic and non-domestic recycling are different worlds. Industry recycles 67% of its waste; homes and trade premises recycle 11%. The national average hides where the real gap is.
- Contamination matters as much as access. Better bin placement only helps if what goes into the bins can actually be recycled.
- Honest limitations are part of good data work. Stating what the data can't tell us made our design stronger, not weaker.
What's next
During the build sprint we'll measure baseline access across every planning area, validate the forecast against recent years, and, if time allows, ship the resident assistant to tackle contamination directly.
Built With
- ai-bi-dashboards
- data.gov.sg
- databricks
- databricks-apps
- databricks-free-edition
- databricks-sql
- delta-lake
- foundation-model-api
- genie
- geojson
- h3
- lakeflow
- mlflow
- pydeck
- pyspark
- python
- sql
- streamlit
- unity-catalog
Log in or sign up for Devpost to join the conversation.