05 / Platform · Automation
Event Manager
A standalone, per-development events platform for luxury property launches, paired to the sales system over signed two-way sync.

Summary
Sales galleries for luxury developments run on events: launch parties, broker previews, hard-hat tours, private appointments. Each one produces a guest list, a stack of emails, a door queue, and in theory a set of new buyers. In practice the events ran on a consumer RSVP tool, a shared inbox, and a clipboard. Guests got unbranded confirmations, the door team worked from a printed list, and RSVPs never reached the CRM, so event spend looked like it produced nothing. I built a dedicated Event Manager: one deployable app per development, fully branded, that handles the whole guest journey from public RSVP to post-event follow-up and pairs to the central sales system over a signed two-way sync so every guest lands there as an attributed lead.
Context
Off-the-shelf RSVP tools break the brand; a nine-figure development cannot send a generic confirmation with someone else's logo on it. Guests were lost between systems, so attendance never became attribution and nobody could show that events produced contracts. Door check-in was printed lists with no live count and no walk-in capture. Waitlists were promoted only if a person remembered. And on-site event staff and outside marketing partners need to run the door without ever seeing pricing, contracts, or the full buyer database.
What I built
- Public RSVP pages per event, mobile first and fully branded to the development, capturing title, name, contact details, guest count, and whether the guest is working with a broker, which is what makes downstream attribution and commission tracking possible. Capacity is enforced and the waitlist promotes automatically when space opens
- Four branded transactional emails per event: confirmation, reminder, follow-up, and cancellation, templated per development, with unsubscribes and bounces suppressed properly
- Kiosk check-in: a locked-down tablet mode at the door to search a guest, check them in, add walk-ins, and record accompanying guests, with a live attendance count as the room fills
- Calendar coordination for tours, presentations, and private appointments, with deduplication so a rescheduled appointment never produces a second invite
- Standalone by design: each Event Manager has its own database, admin, and login, so an on-site team can run a full event with the central sales system switched off entirely
Screens


Client and project names are anonymized. Interface visuals use representative sample data.
How it works
01
RSVP
A guest registers on the development's own branded page. Capacity is enforced and the waitlist fills itself.
02
Sign and push
Inserts, updates, and deletes fire an outbound push immediately. Every message is HMAC-signed and verified against the raw request body.
03
Loop guard
Every row carries the source it came from. The outbound trigger refuses to re-emit anything that arrived from the peer.
04
Dedupe
Guest uniqueness is enforced on email plus event date. Calendar entries carry a dedup key with a unique index.
05
Reconcile
A snapshot endpoint backfills either side on demand, and a nightly job compares both sides and applies whatever went missing.
Detail
Two writable systems, one record
Two independent systems that both accept writes will, without care, produce duplicate guests, duplicate calendar invites, and infinite update loops where each system reacts to the other's echo. That is the hard part of the build: signed transport verified over the raw body rather than a re-serialized object, trigger-driven outbound pushes, a loop guard on every row, deduplication at the data layer, and a nightly reconciliation with every run logged by direction, record, status, and payload. Pairing a new development is configuration, not code: deploy the app, generate a shared secret, point each side at the other, run a full sync.
Outcome
Guests receive email that looks like it came from the development, not a software vendor. Every RSVP arrives in the sales system as a tagged, attributed lead, so events are measured on tours and contracts rather than headcount. Door teams work from a live list with a running count instead of paper. Waitlists clear themselves when cancellations come in. Duplicate guests and duplicate calendar invites, previously a recurring embarrassment, are prevented at the data layer and swept nightly. New developments get their own event manager without new integration code.
0
Standalone app per development, with its own database and login
0
Branded emails per event: confirm, remind, follow up, cancel
0
Bespoke integration work to pair a new development
What I would highlight
The interesting work here is not the RSVP form. It is running two independently writable systems as one coherent record: signed, deduplicated, loop-guarded, reconciled overnight, and observable enough that a failure is caught before a guest notices. The standalone boundary was a product decision as much as a technical one. The people who run the door should be able to do their job completely, and see nothing more than they need to.
My role
Product lead and sole builder: the app, the sync protocol, the email templates, the kiosk, and the deployment model.
Stack
- React
- TypeScript
- Postgres
- Edge functions
- HMAC-signed webhooks
- Transactional email
- Google Calendar