Inspiration
Illegal dumping in many South African townships is a visible problem that often feels invisible to systems of accountability. Residents see it daily, yet reporting channels are slow, inconsistent, and rarely transparent.
VukaMap reframes the issue. Instead of passive reporting, we create active participation. Residents become Civic Scientists and Kasi Heroes, identifying pollution, verifying cleanups, and competing to improve their communities.
What It Does
VukaMap runs on a simple three-step loop:
1. Spot
A user uploads a photo of pollution.
Azure Computer Vision analyzes the image, detecting waste-related objects and generating a severity score (0–100%) using weighted tags and confidence levels.
A red hotspot is created on the live map, GPS-tagged and timestamped.
2. Resolve
Another user accepts the cleanup mission and uploads an “after” photo.
We extract EXIF metadata and verify the new image was taken within 200 meters of the original location to prevent spoofed submissions.
3. Rank
Once verified, the hotspot turns green.
Users earn eco-credits and move up city-wide leaderboards — making environmental impact visible and rewarding.
How We Built It
Frontend
- Next.js 15, React 19, TypeScript
- Leaflet.js for interactive heatmaps
- Tailwind CSS (mobile-first design)
Backend
- ASP.NET Core (.NET 9) REST API
- Entity Framework Core 9.0.2 (code-first migrations)
- SQLite (development) with a migration path to PostgreSQL for production
AI & Validation
- Azure Computer Vision for image analysis
- MetadataExtractor for EXIF GPS validation
- Haversine formula for geospatial distance checks
The “AI scanning” animation reflects real backend analysis, not just UI polish.
Key Challenges
GPS Drift
A strict 50m validation radius rejected legitimate cleanups due to mobile GPS inconsistencies.
We expanded to 200m and prioritized EXIF GPS over browser geolocation.
Defining “Dirty”
Severity is subjective.
We weighted tags differently (e.g., “landfill” > “litter”) and scaled scores based on confidence and object count to ensure fairness.
Framework Stability
Using .NET 9 required strict dependency control.
We pinned EF Core to v9.0.2 to avoid compatibility issues with .NET 10.
Hackathon Time Limits
We prioritized the core verification loop first, then layered gamification.
What We Learned
- AI requires filtering. Vision APIs return dozens of tags — careful tuning is essential.
- GPS data is inconsistent. EXIF metadata proved more reliable than browser location.
- Gamification works. Leaderboards drove stronger engagement than points alone.
- Code-first migrations accelerate iteration. Rapid schema updates were critical under time pressure.
Impact
VukaMap turns smartphones into civic tools.
It provides municipalities with granular data on waste patterns, increases public accountability, and restores neighborhood pride through visible progress.
This is more than a cleanup app.
It is a framework for data-driven, community-led environmental action.


Log in or sign up for Devpost to join the conversation.