SaafSpot — Spot it. Document it. Track what changes.
Inspiration
I built SaafSpot around a problem I have personally seen in Lahore: garbage and litter accumulating in shared public spaces and becoming a recurring neighborhood concern.
Noticing waste is one thing; creating a useful record of it is another. A single photo or observation may not show whether a location has been reported before, whether the problem has returned, or what evidence a resident can share when raising the issue. I wanted to build a practical tool that helps turn individual observations into an organized picture of a recurring hotspot.
What SaafSpot does
SaafSpot is a community reporting and evidence-organizing prototype for waste hotspots.
- Document a problem: Record a report with a description, date and time, location, and optional photo evidence.
- Connect related reports: Suggest nearby or similar existing hotspots so a new observation can be linked instead of automatically creating a duplicate.
- Track what changes: View a hotspot’s submitted observations, supporting photos, confirmations, and activity timeline. Repeated reports can help show whether an issue may be recurring.
- Prepare an action brief: Organize the information stored in SaafSpot into a summary that residents can review, copy, download, print, or use when raising the issue.
- Make it more accessible: Switch between English and Urdu, with right-to-left layout support for Urdu.
SaafSpot also provides links to existing sanitation reporting channels, including the Suthra Punjab complaint form and helpline 1139. These are external channels: SaafSpot does not claim to be officially connected to a government agency, automatically submit complaints, or receive official cleanup confirmations.
How I built it
I built SaafSpot as a web application using React, TypeScript, Vite, and Tailwind CSS. Its data layer stores hotspot records, individual reports, community confirmations, and timeline events. A map-based interface helps people understand where reports are located, while the report and hotspot views make it easier to move from a single observation to a consolidated evidence summary.
I focused on making the main journey practical: view a hotspot, submit an observation, review similar reports, inspect the history, and prepare information that can be shared beyond the app. I also included clearly labelled fictional sample cases so that the interface can be explored without presenting made-up examples as genuine neighborhood evidence.
Challenges and what I learned
One challenge was handling reports that refer to the same place without wrongly merging different locations. SaafSpot therefore uses duplicate suggestions rather than treating every nearby report as automatically identical.
Another challenge was designing a useful public-reporting workflow while being honest about trust and privacy. An anonymous prototype can make participation easier, but it cannot reliably establish every contributor’s identity or independently verify every uploaded photo. Community confirmations and status labels must not be mistaken for official verification, and an activity timeline is a record of submitted information rather than a tamper-proof audit log.
Building SaafSpot reinforced a lesson for me: civic technology should not just collect reports. It should help people organize evidence, understand what is known and unknown, and take a practical next step without exaggerating the impact already achieved.
Current scope
SaafSpot is a working prototype for documenting community observations and preparing evidence for follow-up. It does not claim that a reported location has been cleaned unless that outcome has genuinely been observed and documented. The sample cases are labelled fictional, and real community impact still needs to be established through genuine reports and follow-up.
The goal is simple: make it easier to spot a problem, document it clearly, and track what changes.
Built With
- bolt.new
- javascript
- leaflet.js
- openstreetmap
- react
- supabase
- tailwind-css
- typescript
- vite

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