Case Study · Events & Photography
SnapMatch
Face-recognition photo delivery for events. A guest takes one selfie and instantly gets every photo they appear in — no scrolling through thousands of images, and with privacy built into the architecture.
- Client
- Photography studio
- Role
- Product & build
- Year
- 2026
- Type
- Face-recognition web app
// The context
A Lebanon-based photography studio shoots weddings, conferences, and large events — the kind that produce hundreds, sometimes thousands, of photos in a single night. The hard part was never taking the photos. It was getting the right ones into the right hands afterwards.
// The problem
After an event, every guest has to hunt through one giant gallery to find the handful of photos they're actually in. Most give up. For the photographer, sorting photos by person is manual, slow, and doesn't scale past a few events — and an abandoned gallery means lost prints, lost downloads, and a flat experience for the client who paid for it.
// What I built
A web app — no app-store download — built around a single moment: the guest takes one selfie and immediately sees only their photos. The photographer bulk-uploads the gallery, the system fingerprints every face it finds, and a guest's selfie is matched against that event in seconds.
- 01
Photographer uploads
The full event gallery is uploaded in bulk. Every face in every photo is detected and turned into a numeric fingerprint.
- 02
Guest takes a selfie
Each event has its own private link. The guest opens it in the browser and snaps one selfie — no account, no app.
- 03
Their photos appear
Their selfie is matched to the event's faces and only the photos they appear in are shown — to view, download, or buy.
- Works in the browser as a PWA — guests enter via a QR code or link, with nothing to install
- Handles group photos: every face in a shot is matched independently, so one photo can reach many guests
- Each event is fully isolated behind its own unguessable link — a guest only ever matches against that event
- Built multi-tenant-ready, so it can grow from one studio into a hosted product
// Privacy by design
Face data is sensitive, so privacy shaped the architecture rather than being bolted on afterwards. The system stores a mathematical embedding of each face — a list of numbers — not the cropped faces themselves. Guests pass through an explicit consent screen, face data is scoped to a single event and auto-deleted after the event window closes, and the matching runs on an engine I host directly rather than shipping faces off to a third-party API.
// The engineering
The face engine is self-hosted CompreFace, used purely as a detector and embedding extractor — so there are no per-face fees and the data never leaves infrastructure I control. Each face embedding is stored tagged with its event and photo, and a selfie is matched by vector similarity filtered to that one event. Photos live in Cloudflare R2; the app is Next.js. It runs cheaply on a small self-hosted machine to start and is built to move onto a dedicated server only once volume justifies it.
// The outcome
Instead of one overwhelming gallery, every guest gets a personal one — found in seconds from a single selfie. The studio turns photo delivery from a manual chore into part of the product it sells, and the foundation is in place to offer the same experience to other photographers as a service.
Run a photography studio or an events business?
I build face-recognition and computer-vision systems with privacy handled properly from day one — and ship them as products you can actually run.