We do not have a demo video link at the moment, everything just do by viewing! ;)

Inspiration

We built SafeWatch because local incident reports are scattered across social platforms, and it is hard for people to quickly understand what is happening around them. We wanted a system that turns noisy community posts into structured, map-ready public-safety signals for Singapore.

What it does

SafeWatch ingests community posts, cleans and normalizes the text, classifies incident category/authenticity/severity, and decides whether to publish, retry, or reject. Published incidents are shown on an interactive Singapore map, while ambiguous/no-location reports are surfaced in a dedicated sidebar for transparency.

How we built it

We built a multi-agent pipeline with Python, FastAPI, and LangGraph (crawler → cleaner → classifier → decision).
We used OpenAI models for extraction/classification and rule-based checks for safer fallbacks.
Data is stored in Supabase/PostgreSQL, and the frontend is built with Next.js, React, React-Leaflet, Zustand, and Framer Motion.
A Vercel cron route triggers scheduled pipeline runs.

Challenges we ran into

The biggest challenge was noisy, inconsistent social text: missing timestamps, vague place names, and mixed signal quality.
We also had to prevent false map pins from generic location values and tune decision thresholds so we don’t over-publish weak reports or reject useful community alerts.

Accomplishments that we're proud of

We shipped an end-to-end incident intelligence flow from ingestion to map visualization.
We added explainable agent logs, retry-aware decisioning, and clear UI separation between mapped and no-location incidents.
The result is a practical, working system rather than a demo-only prototype.

What we learned

Reliable agent systems need both LLM reasoning and deterministic guardrails.
Strict normalization and validation are just as important as model quality, especially for geospatial UI.
We also learned that small UX details (like filter clarity and no-location handling) strongly affect trust.

What's next for SafeWatch

We plan to improve geocoding confidence scoring, add multilingual handling, connect more data sources, and introduce human-in-the-loop review for borderline cases.
Longer term, we want proactive alerts and area-level trend analytics for faster community response.

Built With

Share this project:

Updates