</ripple>
</the problem>
Infrastructure issues go unreported because the friction to report is too high. Council portals require accounts, forms, and manual categorization. Without volume data, councils can't prioritize repairs effectively. Communities have no way to signal which issues matter most.
</my approach>
Built a 3-second reporting pipeline: snap a photo, on-device AI classifies it, geolocation pins it to a community map. Community upvoting creates social proof for council prioritization. Zero accounts, zero personal data, all AI runs on-device.
</key features>
3-second AI reporting
Snap a photo and TensorFlow.js classifies the issue instantly on your device. No forms, no typing.
Community voting
Neighbors upvote issues they see. 50 votes on a pothole tells the council it's a neighborhood priority, not one complaint.
Live community map
Real-time Mapbox interface with category-colored pins, clustering, and heatmaps showing problem density.
On-device AI
TensorFlow.js runs MobileNetV2 locally. No images leave your phone. 10 infrastructure categories classified in under a second.
Offline-first
IndexedDB queues reports when offline. Auto-syncs when connectivity returns. Works in tunnels, basements, dead zones.
Council analytics
Elasticsearch-powered dashboards for council operators to search, filter, and prioritize reports across suburbs.
</what i learned>
On-device ML is production-ready for classification tasks. MobileNetV2 via TensorFlow.js runs fast enough on mid-range phones that users don't notice the inference.
Anonymous systems get 10x more reports than account-gated ones. Removing friction matters more than collecting user data.
Community voting creates cleaner signal than individual report severity ratings. Consensus is harder to game than self-assessment.