Inspiration
Every year, thousands of missing persons and lost pets go unidentified because there's no unified, searchable registry that communities can actually use. Flyers fade, Facebook posts get buried, and shelter databases don't talk to each other. We wanted to build something that feels like infrastructure — a single place where anyone can report, search, and get an AI-powered second opinion on whether a found individual matches an active missing report.
What it does
People & Pets is a crowdsourced lost and found registry for both missing persons and lost pets. Users can submit a missing report with a photo, name, location, and contact details. When someone finds a stray person or animal, they upload a photo through the "Upload Found" flow — the system then automatically runs an AI comparison against every active missing entry and returns ranked matches with a confidence score. A real-time scanning animation walks through each stage of the pipeline. The dashboard gives rescue teams and community members a live, filterable view of all active reports and AI-generated matches.
How we built it
The backend is a Flask (Python) REST API backed by SQLite via SQLAlchemy, with two AI modules: face_recognition (dlib) for person matching using 128-dimension facial encodings, and OpenCV ORB keypoint matching blended with HSV colour histogram comparison for pets. Both modules include a Pillow/NumPy histogram fallback so the app runs fully offline with zero native dependencies. The frontend is React + Vite + Tailwind CSS with a custom dark clinical design system, React Router for navigation, and Axios for API calls. The entire stack runs locally from a single repository with two commands.
Challenges we ran into
The biggest challenge was making the AI pipeline feel trustworthy without overpromising. Raw similarity scores are noisy — the same photo at different angles or lighting conditions produces very different distances. We spent significant time calibrating the confidence thresholds and adding a tiered messaging system (High / Possible / Low / Very Low) so users understand what the score actually means before acting on it. Installing dlib on Windows was also a significant friction point, which led us to build a robust histogram fallback that activates automatically when native libraries aren't available.
Accomplishments that we're proud of
I'm proud that the full AI pipeline — upload, compare, rank, return — completes in a single POST request with no background jobs or queues needed. The dual-fallback design means the app genuinely works out of the box on any machine. I'm also proud of the scanning UX: the 5-step animated progress sequence with live step checkmarks makes the AI process transparent and legible, rather than a black box that just returns a number.
What we learned
I learned that offline-first AI using pre-trained models (dlib face encodings, ORB descriptors) is far more practical for a hackathon than cloud vision APIs — no keys, no rate limits, no latency. I also learned that UX around AI confidence matters as much as the algorithm itself. A 73% match means nothing to a worried family unless the interface explains what to do with that number.
What's next for People & Pets - Lost & Found Registry
- Mobile-first PWA with camera capture for on-the-spot found reports
- Email/SMS alerts when a new high-confidence match is found for an active report
- Map view showing geographic clustering of missing reports and found sightings
- Upgrade to PostgreSQL + Redis for multi-city scale deployment
- Partnership with animal shelters for direct database sync
Built With
- axios
- claude
- dlib
- face-recognition
- flask
- flask-cors
- javascript
- numpy
- opencv
- pillow
- python
- react
- react-router
- scikit-image
- sqlalchemy
- sqlite
- tailwind-css
- vite

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