Waitlist & Enrollment Manager: Fill Every Seat, Queue the Rest Fairly
Set capacity for oversubscribed training sessions, fill seats in order, queue the overflow on a fair waitlist, and auto-promote the next person when someone drops — with the coordinator approving every promotion and priority override before a seat is reassigned.
A logged-in tool where you set each session's capacity, enrollments fill seats in fair order, the overflow is waitlisted, a drop frees a seat and the next person is queued for promotion, the coordinator approves promotions and priority overrides before any reassignment, the promoted person is emailed a time-boxed seat confirmation, and you export the full enrollment + waitlist roster as CSV.
Before you start
- A Supabase account (free)
- A Vercel account (free)
- A Resend account (free)
- Your session list with seat capacities (CSV or Google Sheet is fine)
- Your enrollment / waitlist requests
- Any priority rules you use (role, compliance deadline)
- Claude Code or any AI coding agent
The problem this kills
Your most popular course fills in a morning. Then the requests keep coming, so you start a list — in your inbox, a spreadsheet tab, a sticky note. Someone drops two days before the session. Now you have an empty seat and a waitlist, and the fair, fast move is to call the next person in line and give them a window to confirm. Instead, the email thread is a mess, you can't remember who asked first, a manager insists their direct report "really needs this one," and the seat either goes to whoever shouts loudest or sits empty while the room runs at 80%.
Hand-run waitlists fail in predictable, expensive ways. Order gets lost, so allocation isn't fair. Promotions happen by memory, so the same person ends up holding seats in two conflicting sessions. There's no record of who approved a priority bump, so the next person who got skipped has a legitimate complaint and nothing to point to. And empty seats — the whole reason the course was oversubscribed — quietly go to waste.
Allocating scarce training fairly is a governance problem, not a spreadsheet problem. It deserves a real tool with an order you can defend, a human approving every reassignment, and a clean record of every decision.
What you'll build
A simple internal web app for your L&D team. You set each session's seat capacity. Enrollment requests fill the open seats in your chosen fair order — first-come-first-served, or a priority order you define (role, a deadline-driven compliance need). Once a session is full, new requests are waitlisted in order. When someone drops, the tool frees the seat and surfaces the next person in line — but it does not silently reassign. The coordinator approves the promotion (and approves any priority override that jumps the queue) before the seat moves.
The moment a promotion is approved, the promoted person gets an email with a time-boxed "confirm your seat" window. If they don't confirm in time, the offer expires and the next person is queued — so a held-but-unconfirmed seat can't block the line. The tool guards against one person holding seats in two conflicting sessions, dedupes the same employee requesting the same session twice, and lets you export the full enrollment and waitlist roster as a clean CSV.
What's inside the Implementation Plan
The downloadable plan is a step-by-step file you paste into an AI coding agent. It opens by interviewing you about your business — how you run enrollment today, what your session list and request data actually look like, your real role/department names, how you define "fair," your time-box for confirmations, which enrollments need a manager's sign-off, and the messy exceptions (no-shows, waitlist-only requests, conflicting sessions, last-minute drops). It reflects a short tailored spec back to you and waits for your thumbs-up before it builds anything — so the tool matches how your L&D function actually allocates seats, not a generic template.
From there it walks the agent through the data model, importing sessions and requests, the seat-filling and waitlist-ordering engine, the drop-and-promote flow, the coordinator approval gate, the time-boxed confirmation emails, the conflict and duplicate guards, and the roster export. Every step ends with a ready-to-copy prompt. There's a full "No API yet?" path that uses Google Sheet / CSV imports as the data source and produces a clean enrollment CSV — so you can build and run the whole thing this weekend regardless of whether you have an LMS or HRIS to connect to.
The governance it includes (this is the point)
Allocating scarce seats fairly means the controls aren't optional. The plan builds in login so only your L&D team can run enrollment, row-level security so you only ever see your own organization's sessions and rosters, a complete audit trail of who enrolled whom, who approved which promotion, and which priority override was applied and by whom — and a hard human-approval gate so no seat is ever reassigned until the coordinator signs off. It adds duplicate guards keyed on employee + session so the same person can't be enrolled or waitlisted twice, plus a conflict guard so nobody holds seats in two sessions that overlap.
Who it's for
L&D coordinators, training administrators, and enablement leads running oversubscribed courses — anyone managing waitlists by hand who loses track of who's next, watches seats go empty, and can't prove why one person got promoted over another. If you can describe how you decide who gets the next seat, you can build this.
You've got this — start with the plan, paste the first prompt, and answer the interview. You'll have your first session filled, waitlisted, and promotion-ready before the weekend's out.