Inspiration

We were inspired by a real civic problem: people notice potholes, floods, drainage issues, and open manholes long before they are officially acted on, but reporting is often slow, fragmented, and hard to track. We wanted to build something that makes reporting fast for citizens, transparent for the public, and actionable for agencies.

What it does

Bisto is a mobile-first, installable web app that lets people report road hazards with a photo, location, and short note. It also lets users track reports publicly, view active issues on a map or list, confirm unresolved hazards, reopen cases that were marked fixed too early, and help agencies manage updates with proof-based resolution. The platform also includes AI-assisted suggestions for category, severity, and likely routing.

How we built it

We built Bisto as a PWA-first app using React, TypeScript, and Vite. For UI and interactions, we used Tailwind CSS, Radix-based components, and Framer Motion. For maps and geolocation, we used Leaflet with OpenStreetMap. On the backend side, we used Firebase Authentication, Firestore, Storage, and Cloud Functions. We also integrated Gemini through Firebase Functions for AI-assisted report analysis and routing suggestions. To keep the app testable and resilient, we added demo mode support plus Vitest and Testing Library coverage.

Challenges we ran into

One of the biggest challenges was designing a reporting flow that still feels simple on mobile while handling photos, geolocation, and manual map pinning. We also had to think carefully about offline behavior, draft saving, and graceful failure when connectivity or AI services are unavailable. Another challenge was balancing trust and usability: we wanted confirmations, reopen flows, proof-based resolution, and identity verification without making the app feel too complicated or invasive.

Accomplishments that we're proud of

We’re proud that Bisto is more than just a concept or UI prototype. We built an installable PWA with a working multi-step report flow, public tracking pages, map and list views, community confirmation and reopen actions, an agency dashboard, AI-assisted review, offline-aware draft handling, and even an escalation flow for long-unresolved reports. We also added tests around important flows like report drafts, confirmations, escalation logic, and resolution proof requirements.

What we learned

We learned that for a civic platform like this, trust and clarity matter just as much as speed. Users need to know not only how to report an issue quickly, but also whether anyone is acting on it. We also learned that a PWA is a strong choice for an early-stage civic product because it gives us mobile accessibility, installability, and faster iteration without the overhead of building native apps too early. Finally, we learned that AI works best here as an assistant, not the final decision-maker.

What's next for Bisto

Next, we want to make the live Firebase-backed workflows more complete, improve notifications and push support, strengthen identity verification and moderation tools, and make routing smarter for real pilot geographies. We also want to expand the agency-side tooling, improve duplicate detection, and continue refining the proof-and-accountability loop so the platform can better support real-world deployment beyond a prototype or hackathon setting.

Built With

Share this project:

Updates