DEV Community

Saumya Brahmbhatt
Saumya Brahmbhatt

Posted on

FindMyPal — A Million Eyes Looking Together

FindMyPal — Because Every Minute Counts


What We Built

FindMyPal is a missing-persons platform we built at HopHacks so families and communities aren't stuck with flyers and scattered social posts.

A few days before the hackathon, Esube Wondwossen, a student we know, went missing near Howard University. Watching it unfold in real time was gutting — not just because of the tragedy, but because of the chaos around it. Leads were splintering across Instagram stories, Reddit threads, and disconnected news segments. Nothing connected them. That's what we built FindMyPal to fix.

There are tens of thousands of active missing-person cases in the U.S. Tips get lost, maps don't update, and searching the open web overwhelming. FindMyPal lets people:

  • Publish cases with photos, last-seen details, and descriptions
  • Submit location tips with confidence scoring on a live timeline
  • See tips on Leaflet maps and density heatmaps — updated in real-time
  • Generate printable flyer PDFs with QR codes in one click
  • Browse active vs. reunited ("found") cases
  • Use Gemini for natural-language case search, AI case summaries, and Smart Person Search (Lookup) that structures messy public-web mentions into a readable brief
  • Get live tip and found updates through SpacetimeDB subscriptions
  • Optionally hear a case brief aloud with ElevenLabs TTS

The Feature No Other Platform Has

Every time a tip is submitted, it updates in real-time alongside a map of
public surveillance cameras and open camera infrastructure in the area.

This is what makes FindMyPal genuinely different. Our marimo civic dashboard maps public surveillance cameras alongside live incoming tips. The moment a tip comes in placing someone near an intersection:

  • Police can immediately see which cameras cover that location
  • Law enforcement is notified directly — no lag, no family having to relay what a stranger texted them
  • The dashboard updates live with every new submission

Tips don't sit in a feed waiting for someone to read them. They instantly sharpen the picture for law enforcement. No other missing persons platform operates in real-time like this.


We were careful about product honesty: tips are unverified community
information, not law-enforcement proof, and demo reunited profiles are labeled
as hackathon demos.


Stack

React + Vite + Tailwind → FastAPI → SpacetimeDB

plus Gemini · Leaflet/Esri · Cloudflare Tunnel · GoDaddy · ElevenLabs ·
Apify scrapers


What We Learned

  • AI is most useful for structuring and ranking — not declaring someone "found." Every Gemini output is framed as a lead, not a conclusion.

  • Realtime is worthless if private tip fields leak — sensitive data stays behind FastAPI while the client only subscribes to public case_activity

  • For hackathons, a Cloudflare quick tunnel beats fighting nameservers
    the night before judging — learned that one the hard way


Links

Try it yourself:

Home gallery → click a case → Tips & Map → Family tab (flyer + tools) →
/lookup for Smart Person Search → /dashboard for live camera mapping
and city stats


Partner Technologies

SpacetimeDB

Primary database and real-time layer.

Cases, tips, and public case_activity live here. The frontend opens a WebSocket subscription for live tip and found signals; private rows stay API-only. We migrated from an earlier Supabase prototype and publish a TypeScript module instead of classic SQL migrations.

  • Powerful native real-time subscriptions
  • Steeper mental model than Postgres — CLI + module, not a table editor

Google Gemini

Natural language, extraction, and summarization.

  • Natural-language search ("active cases near Baltimore")
  • Lookup extraction from noisy public web text
  • AI case summaries so volunteers aren't reading raw tip blobs
  • Falls back to strict heuristics when quotas fail — we never invent sightings

ElevenLabs

Accessibility and shareability.

Optional "read this profile aloud" TTS on the case Family tools panel, with disk caching and transcript-only fallback if the API fails.


Cloudflare

Public HTTPS demo delivery.

Tunnel kept the live demo accessible to judges without requiring them to be on our LAN. The quick tunnel saved us when the named tunnel fought us at cutover.


Leaflet / Esri

Maps, tip markers, and density heatmaps.

Every tip shows up as a pin. Enough tips in one area surface as a heatmap cluster.


marimo

The civic intelligence layer.

Notebooks power the live public camera dashboard. When a tip comes in, marimo
updates which cameras cover that area in real-time — giving law enforcement an immediate, actionable surveillance reference without a single manual lookup.


GoDaddy

Domain registration for **findmypal.us**


Cursor (Agent Mode)

Our build and debug loop throughout.

Multi-file fixes, process and port diagnosis, and verifying tunnel routing under deadline. Turned stack-wide failures into fixable loops instead of hour-long rabbit holes.


Hackathon Experience

We built FindMyPal at HopHacks (Johns Hopkins University) — classic MLH energy: late nights, sponsor booths, and a constant race between "ship the feature" and "keep the demo alive."

What we'll remember most is the end-to-end crunch — not just coding UI, but keeping SpacetimeDB, FastAPI, Vite, and a Cloudflare tunnel all healthy simultaneously so a judge could click a face on the gallery and open a live case with maps, tips, and real-time camera data.

The hardest moments:

  • Domain cutover for findmypal.us fought us right before judging — the quick tunnel saved the demo
  • SpacetimeDB locked processes took out the DB mid-session
  • React hooks crashes were blanking full case profiles

Cursor Agent mode turned all of it from hour-long rabbit holes into fixable loops.

We built something real because something real happened. That's the version of FindMyPal we shipped.

Top comments (0)