Project 02
The hardest problem in any token-incentive system is Sybil resistance. Waste2Wealth solves this first, then builds the incentive economy on top.
Three participant roles form the loop. Reporters photograph litter; the photo goes directly to Cloudinary and through a two-question AI moderation gate before it appears on the map. If it passes, Gemini 2.5 Flash tags the litter: severity, category, object type, materials, item count. Cleaners browse a live map powered by a PostGIS GIST-indexed geo-query, claim a task, clean it, and submit a before/after photo pair.
Cleanup verification runs Cloudinary dual-source comparison first: one API call, both images, binary verdict. Only ambiguous or passing results proceed to a 5-agent Gemini consensus via asyncio.gather(). Five independent AI perspectives running in parallel. Sequential would take roughly 10s at typical API latency; gathered, it takes roughly 2s, capped at the slowest agent.
Sybil resistance on voting uses World ID nullifiers. Each vote records a nullifier hash per (cleanup_id, voter_id). The backend rejects any vote where that nullifier has already voted on the same cleanup, regardless of how many accounts the attacker controls. A cleaner cannot vote to approve their own cleanup (separate check). An attacker with 50 wallets has one World ID and one vote.
Rewards are severity-tiered by AI-assigned severity, distributed to cleaner, reporter, and all verifiers. The map updates in real time via Supabase Realtime, no polling. Solana wallets are generated client-side as Ed25519 keypairs stored in SecureStore, hardware-backed and never exposed to the user.
Built in 36 hours at LA Hacks 2026. Won.
What I Learned
Tech Stack