Works·deprecated

Eventflow

Turning the invisible into seen

A platform that delivers event photos directly to the people in them.

An Eventflow event page: the group number to text photos to, and a short form to join with a name, phone and one profile photo
The event page. Guests join with one selfie, then text photos to the group number.
Personal gallery
A guest's private gallery, assembled from everyone's photos
The Eventflow organizer view: guests joined, photos received, faces matched and texts sent, with a guest list and the latest photos
The organizer view during an event: who has joined, what has come in and who has been found.

The problem

Take a group photo at a party. Not everyone knows each other: someone brought a plus-one, someone just met the group. Someone always says "make sure you send me that," and the photo stays buried in one camera roll, never shared. The friction is small, but it's enough that it almost never happens.

Eventflow asks one question: how do you remove that friction?

What I built

An organizer registers an event and gets a group phone number to pass around. Attendees join with a phone number, email and one profile photo. That photo is their fingerprint. From then on, anyone at the event texts photos to the number, and each attendee gets a text when they appear in someone's picture, with a link to their own private gallery.

How it works

Two queues sit at the center: one for outbound texts, one for heavy processing like face matching and gallery building. An event router decides which work goes where, so each kind can scale on its own.

Eventflow architecture. A guest texts a photo to the event's number; the Message API queues it, the event router sends it for processing, a face matcher finds who is in it, an album importer pulls in shared albums and the gallery builder saves each photo to the galleries of the people in it, and each of them gets a text linking to their private gallery. Organizers create events through the web app and Event API; the router also logs every text it sends.PEOPLEENTRYSERVICESASYNCDATAOrganizerGuestWeb appSMS numberPrivate galleryEvent APIMessage APISMS queueEvent routerProcessing queueEvent DBDelivery logPhoto storageTEXTS PHOTOTEXTS LINKSAVESCREATES EVENTWELCOME TEXTLOGS TEXTSWORKERSFace matcherAlbum importerGallery builder

The highlighted path follows a photo from a guest's text back to the guests in it.

The design weighed five things early and often: availability, consistency, durability, scalability and security. A few of the decisions:

What was hard

Matching faces in real party photos. Guests give one clean selfie, but party photos are dark, blurry and taken from the side. A missed match costs little; a wrong one sends someone a stranger's photo and breaks trust. So the matcher only sent a photo when it was confident.

What I learned

I listened, and I heard the pain clearly: "I never get the photos I'm in." What I didn't test fast enough was whether that pain was something people would seek out, or pay for. Not every pain is a need; some are just friction people tolerate.

So now I see an MVP differently. Every letter matters, but viable is the one to test first, before building, not after.

The full build story is in Building Eventflow.