-
-
Sign in page
-
Sign up page
-
Onboarding page
-
Home page
-
Home page with camera enabled
-
Analysing material... screen
-
Aluminium Can - 'Recycle' card
-
Milk Carton - 'Recycle' card
-
Aerosol can - 'Needs prep' card
-
Envelope - 'Needs prep' card
-
Confirmation screen that will give user a question to clarify characteristic of item scanned
-
Clothing - 'Not sure' card
-
Keyboard - 'Not sure' card
-
Dirty pizza box - 'General waste' card
-
Dirty tissue paper - 'General waste' card
-
Kampung tab - A friendly competition between neighbourhoods scored on number items recycled to gamify the experience
-
Bins tab - Using NEA's open data, locates the nearest recycling bins to user's location and provides directions through google maps
-
RecycleRight System Architecture Diagram
RecycleRight
A pre-sorting companion that helps Singaporeans recycle right from the moment they decide, to the moment they drop it off.
The problem
RecycleRight started from a simple, infuriating statistic: close to 40% of what goes into Singapore's blue bins gets rejected, often because a single greasy box or unrinsed bottle contaminates an entire load. NEA's sorting rules are detailed and sound, but nobody checks them while standing over a kitchen bin. That's the exact moment we built for.
What it does
RecycleRight closes the recycling literacy gap at the source, then carries the user all the way through to drop-off:
1 · Decide: scan & understand
The app photographs an item and sends it through a FastAPI backend to Reka Flash, a multimodal vision-language model grounded in NEA's actual rules. It returns a verdict in seconds: what the material is, whether it's clean, and what to do next — not just a yes/no, but the why. When the model genuinely can't tell two look-alike materials apart - PET versus a compostable bioplastic, a carton versus a rigid bottle - it asks the user a clarifying question instead of guessing. A deterministic rule layer then catches known edge cases (greasy cardboard, bioplastics, foam) so the answer is consistent, not just plausible.
2 · Sort: compete & sustain
Every scan feeds a Supabase-backed neighbourhood leaderboard. Neighbourhoods, identified by postal-code sectors, are ranked by the number of clean items logged, turning a private habit into a little friendly competition that builds recycling discipline together as one nation.
3 · Drop off: locate the bin
A built-in bin locator completes the loop. Using NEA's open dataset of ~12,500 recycling points, it surfaces the bins nearest to the user's location with one-tap directions in Google Maps — a genuinely end-to-end, one-stop experience.
Architecture
A React Native (Expo) mobile app sits on top of two decoupled services: the FastAPI + Reka intelligence core, and Supabase (Postgres + Auth + Row-Level Security) as the data layer the app talks to directly. Auth, profiles, the leaderboard, scan history, and the bin dataset all live behind RLS-protected tables and SQL functions so the client stays thin and the data stays secure.
The hard parts
The hardest problem wasn't classification — it was consistency and resilience. Getting the model to name the same material the same way every time (a Tetra Pak is always a Tetra Pak, never "juice box" one call and "paper carton" the next) took real prompt engineering. And every failure path, a blurry photo, a network timeout, a malformed model response, had to collapse to a safe fallback rather than surface as an error, because an app that crashes at the bin is an app nobody trusts.
Building it as a team came with its own challenge. Editing the same piece of software and code forced us to communicate effectively and to plan and delegate work smartly.
The vision
One app for the full recycling journey — decide, sort, drop off — built to support the Singapore Green Plan 2030, and to win back the 40% we currently throw away.
Built With
- auth
- docker
- expo.io
- fastapi
- pillow
- pydantic
- python
- react-native
- reka-flash-(multimodal-vision-language-model)
- rpc)
- supabase-(postgres
Log in or sign up for Devpost to join the conversation.