Inspiration

In 2019, the Supreme Court of India upheld a night-traffic ban on NH-766 through Bandipur Tiger Reserve. Traders lost seven hours of highway access every night. Conservationists said it saved wildlife. Neither side could actually prove it — because nobody had the data to show which stretches of that highway were killing animals and which weren't. Both sides argued blind.

That's the problem SafePassage exists to solve. India's highway network runs 146,000 km through tiger reserves, elephant corridors, and the Western Ghats, and most wildlife-vehicle collisions are never systematically recorded. The money that does go toward mitigation — crossings, fencing, speed limits — often goes to politically convenient locations instead of where animals are actually dying. We wanted to replace that blindness with evidence.

What it does

SafePassage turns scattered citizen-science roadkill reports into a ranked, fundable action list for India's highways.

  • Ingests roadkill records from iNaturalist and curated citizen-science datasets, and joins them with OpenStreetMap road geometry and land-cover data.
  • Scores every road segment on a 0–100 risk scale, with an explicit confidence rating attached to every score — not just a number, but how much we trust it.
  • Ranks segments so the highest-risk stretches surface first. Click one, and a dossier panel opens with the risk gauge, seasonal pattern, species mix, and a concrete recommendation: "Segment NH-766-KM12 scores 87/100 — build a crossing here."
  • Cites its evidence, so a forest department, journalist, or court could actually act on the number instead of just trusting it.

The live map, dashboard, and methodology page are all deployed and publicly usable right now — not a mockup.

How we built it

  • Frontend: React 18 + Vite + Tailwind CSS + MapLibre GL JS for the interactive hotspot map, dashboard, and dossier panels — open-source mapping, no billing surprises.
  • Backend: FastAPI serving GeoJSON over auto-documented REST endpoints (/api/hotspots, /api/segments, /api/stats/*, /api/sightings).
  • ML pipeline: Python, GeoPandas, and scikit-learn — a gradient-boosted model layered with kernel density estimation to score road segments spatially.
  • Data: iNaturalist observations, the India Roadkill Monitoring Project, and a GBIF transect survey from the Anamalai Hills/Valparai Plateau, joined against OpenStreetMap road geometry and ESA WorldCover land-cover classification. 100% open data, zero paid services.
  • Hosting: Vercel (frontend) + Render (backend), both on free tiers, both live.
  • The core artifact: a frozen GeoJSON schema (hotspots.v1 / segments.v1) that both of us had to explicitly agree in writing to change — this kept our frontend and ML work from drifting apart mid-build.

Challenges we ran into

The hardest problem wasn't technical — it was intellectual honesty.

On day one, we found only ~90 structured roadkill records for the whole country. That's not enough to train a predictive model anyone should trust, but we had a working gradient-boosted pipeline and it was tempting to ship it anyway and call it "AI-powered."

Instead, we built what we started calling an honesty ladder: a hard threshold (150 structured records) that our own predictive model had to clear before it was allowed to be the headline feature. Below that threshold, it gets automatically demoted to a secondary, low-confidence layer, and the well-documented collision corridors — like Bandipur/NH-766 — become the primary evidence layer instead. No model, however sophisticated, gets to overstate what the data can actually support.

We later crossed that threshold (now ~2,980 structured records after integrating the India Roadkill Monitoring Project and the GBIF Anamalai transect dataset), but we kept the honesty ladder in the product permanently — it's now a live, real-time indicator on the dashboard, not a one-time gate we quietly removed once we passed it.

Accomplishments that we're proud of

  • A fully deployed, end-to-end product — live map, live API, live dashboard — not slides.
  • Choosing to demote our own ML model rather than oversell it, and building that decision into the product as a transparent, real-time feature instead of hiding it.
  • A frozen data schema that let two people split ML and frontend work in parallel without breaking each other's builds all week.
  • Going from ~90 to ~2,980 verified records by actively tracking down and integrating additional open datasets mid-hackathon.

What we learned

That the most credible thing a data product can do is admit what it doesn't know yet. It would have been easy to build a confident-looking model on 90 data points and let the UI imply more certainty than the data warranted. The honesty ladder taught us that transparency about data limitations isn't a weakness to hide — it's the actual product differentiator, especially for a tool meant to inform real policy and funding decisions.

What's next for SafePassage

  • Promote the predictive model to a primary layer once it's validated on held-out spatial splits, now that we're past the honesty-ladder threshold.
  • Add a real-time citizen sighting pipeline so the evidence base keeps growing after the hackathon ends.
  • Expand coverage beyond the current corridors to more of India's 146,000 km highway network.
  • Partner with a state forest department to pilot SafePassage's recommendations against a real mitigation budget.

Built With

Share this project:

Updates

Submission history