Work / Campaign site

Visa × Scotiabank

TIFF 2026 screening invitation for Scotiabank Passport cardholders, moved to a capacity-reached state once registration closed.

Visa × Scotiabank — Campaign site

The problem

A cardholder screening that would oversubscribe, on a page that had to stop taking registrations gracefully rather than keep collecting names it could not honour.

What we built

A registration flow with a real capacity ceiling and a designed capacity-reached state, so the page closed itself cleanly instead of failing or misleading late arrivals.

RoleFull build
Team1 engineer
StackNext.js 16, React 19, TypeScript, Tailwind on Vercel
IntegrationsSupabase Postgres (Drizzle), Resend + webhooks, Turnstile, Sentry, GA4

Speed

Kickoff to staging link
31 hrs
Kickoff to launch
7 days
Review rounds
2, same-day turnaround

Launch hour

Peak first-hour traffic
2,100 requests/min
Time to capacity
4 hrs
RSVP completion rate
95%
Dropped submissions
0
Launch-day incidents
0

Build quality

Lighthouse performance
99
Lighthouse accessibility
100
LCP / INP / CLS
0.9s / 36ms / 0.00
JS shipped
11 kB

Outcome

  • All seats claimed in 4 hrsTime to capacity
  • 95% of startsRSVP completion rate

Registration has closed and the live site now shows a capacity-reached state. The screenshot above is the build as guests saw it.

The long-form write-up for this project is still in progress. Everything above is the summary; ask us anything it does not answer.