Case study · EMD
Multi-tenant event operations
Event coordination lived in email, HubSpot threads and Slack. I architected and built EMD, one place where clients buy and schedule events and staff run them.
- Client
- The Go Game
- Role
- Architect, lead & owner
- Platform
- Web, multi-tenant
- Hosting
- Google Cloud
100sevents a month at peak
Newrevenue stream from credits & subscriptions
1system replacing email, HubSpot & Slack threads
The problem
Clients, sales and event staff coordinated every event by hand across email, HubSpot and Slack. It didn't scale, and it left no room to sell anything new.
What I built
- For clients: schedule in-person, virtual and hybrid events, buy and manage game credits, customize branding, trivia and awards, and manage organizations, users and permissions.
- For staff: assign hosts with approvals and availability, control live event state, manage pricing, carts, orders and venues, and send notifications by email, SMS and Slack.
Engineering highlights
- A NestJS monorepo: REST and GraphQL API, background worker, HubSpot webhook service, WebSocket service and an admin CLI.
- Built for failure. Every outside call runs on a queue with automatic retries, and handlers are idempotent, so a repeated event never means a duplicate charge.
- Payments: Stripe sales, prepaid credits that can expire or be allocated later, and subscriptions.
- PostgreSQL with PostGIS for location queries, with TypeORM migrations.
Outcome
EMD supported hundreds of events a month at peak with lean operations, and opened a new revenue stream from credits and subscriptions.
Screens