Case study · SaaS, scale-up

A multi-tenant event platform for 15,000 users

Product work and platform work in the same job: features people used during live events, and the provisioning behind them that made a new customer a pipeline run instead of a project.

The situation

A product that had to scale per customer

Virtual conferences and trade fairs, in nine languages, with everything on a hard date.

The platform hosted virtual events: multi-day conferences, trade fairs and internal meetings, each with its own customer, its own branding and its own deadline. Every event is a spike in traffic that cannot be absorbed by turning features off, and every new customer used to mean a hand-built environment.

The product was also the platform. The same team shipped the room designer and the SSO server as the infrastructure that ran them, which meant the boundary between feature work and platform work was decided by what was breaking that week.

What I built

Features, and the machinery under them

Six areas of work across four years, from product surface to provisioning.

  • Product features in Go and Vue: a room designer, SSO, live polls, Q&A, whiteboards, speaker management, ticketing and the email tooling behind them.
  • A Pulumi meta-platform that provisioned a complete tenant instance on AWS (EC2 or App Runner) or Hetzner, with CUE validating the configuration before anything was created.
  • Multi-architecture container builds for amd64 and arm64 in the same pipeline, so Graviton instances were an option rather than a migration.
  • WebRTC audio and video with recording driven by NATS: Kubernetes jobs captured Jitsi, Teams, Zoom or a browser window and wrote the result to S3.
  • A second vertical for live sports, presented at a trade fair, connecting supplier data and video so match events and highlight clips reached phones in real time.
  • CI hardening: static analysis, end-to-end tests, an SBOM and daily vulnerability checks wired into the delivery pipeline.

What changed

Growth without a rebuild

  • A new customer meant a configuration and a pipeline run, not a week of manual setup.
  • Events with up to 15,000 participants ran in nine languages on the same platform.
  • The platform could move between cloud providers, because nothing depended on one of them.
  • Security checks stopped being a separate exercise and ran with every build.

Stack

What it runs on

Start the conversation

Scaling a product per customer?

A short note with the environment, the constraint and the timing is enough for me to say whether this is a fit.