A waitlist is a form, a table of emails, a referral code per signup and a ranking query, and an agent can build that with a small admin page and a CSV export in one sitting. The parts that take care are keeping fake signups out and getting confirmation emails into inboxes, which a transactional email provider, a honeypot and a rate limit cover for a single launch. A few thousand signups sit comfortably in SQLite on a small server.
Before you buildNew GetWaitlist accounts have no free plan, but the 7-day trial of Basic is enough to try the referral mechanics before you build your own.
Build me a referral waitlist to replace GetWaitlist. Requirements: - Node.js 22 + TypeScript: a Fastify server with server-rendered pages (Eta) and a little vanilla JS. `npm start` serves http://localhost:4900: signup page at /, a personal position page at /me/<token>, admin at /admin. - Storage: better-sqlite3 in ./data/waitlist.db. Table signups: id, email (unique, lower-cased), confirmed_at, referral_code (8 random characters), referred_by, created_at, ip_hash, utm_source, utm_medium, utm_campaign. - Signup takes an email and an optional name, then sends a confirmation link through nodemailer SMTP (settings in .env). A signup counts only after the link is clicked. Reject throwaway domains using the `disposable-email-domains` list, add a honeypot field, allow 5 signups per hour per IP (`@fastify/rate-limit`) and store IPs only as salted hashes. - Ranking: each confirmed referral moves the referrer up REFERRAL_BOOST places (default 5, set in .env), capped at 20 referrals per person. Compute the position in one SQL query and cover it with tests on a fixture of 10 people. - /me/<token> shows the position, a copy button for the referral link (/?ref=<code>) and a top-10 leaderboard with first names only, which can be switched off in .env. - Admin: one password in .env (signed cookie). A table with search, sort and filters (confirmed, referred); CSV export of every column; a form that emails all confirmed signups in batches of 20 a minute, each with an unsubscribe link. - /embed.js renders the signup form inside any site; POST /api/signup accepts JSON from the origins listed in ALLOWED_ORIGINS. - Single owner. No accounts, no telemetry, local-first. Outbound calls: SMTP only. - Out of scope: several waitlists, custom domains, A/B tests, payments. - README: exposing the page through a tunnel or a small VPS, and the SPF and DKIM records the sender domain needs.
Opens your agent with the prompt filled in, you press enter. Or copy it and paste it into an empty folder.
The first prompt builds the core. Run these one at a time in the same folder to grow it into your own GetWaitlist.
Add a CSV import to the waitlist app in this folder. Requirements: - An admin page that takes the CSV exported from GetWaitlist, or any CSV with an email column. - Read the header first, show the proposed column mapping and wait for my confirmation. - Keep created_at when the file has a date column; rebuild referred_by from a referrer email column when there is one. - Mark imported people confirmed only if the file says so; otherwise queue one confirmation mail. - Skip duplicates and print a summary: imported, skipped, failed rows. - Update the README.
Add invitations to the waitlist app in this folder. Requirements: - An admin action "Invite the next N" that picks the N best-ranked confirmed people who have not been invited. - Each invite email carries a single-use link at /invite/<token> that expires after 7 days; opening it marks the person accepted and redirects to INVITE_REDIRECT_URL from .env. - The admin table shows invited, accepted and expired counts. - Send in batches of 20 a minute and log failures. - Update the README.
Harden signups in the waitlist app in this folder. Requirements: - Add Cloudflare Turnstile: site and secret keys in .env, token checked server-side before any signup is stored. - Flag, but do not delete, signups whose IP hash or email pattern repeats (same hash 3 times, plus-addressing floods) and show a Flagged filter in the admin table. - Exclude flagged signups from referral boosts until I unflag them. - Update the README with how to get Turnstile keys.
Founders pay to be live in minutes on whatever site builder they already use, with a leaderboard and automatic emails that need no care while they build the actual product.
Estimate · Runs on a free tunnel or a $5 VPS; SMTP at launch volume fits free tiers. The build is token usage on your agent plan.
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Legacy free | $0/workspace | $0/workspace | Unlimited signups and waitlists, API access, CSV import and export, UTM tags per signup, automated (non-custom) emails. |
| Basic | $15/workspace | $10/workspace | Unlimited waitlists and signups, your logo on the widget, API and webhooks, leaderboards, custom questions, phone numbers, Slack, CSV export, referrer and UTM per signup, email blasts, live chat support. |
| Advanced | $50/workspace | $33/workspace | Basic plus no GetWaitlist branding on the widget, hidden position counts, permitted signup domains, personal-email blocking, Zapier, moving a signup's position through the API. |
| Pro | $250/workspace | $167/workspace | Advanced plus custom email templates and offboarding emails, sending from your own domain, traffic and UTM analytics, multi-user team access. |
| Enterprise | custom | — | Custom features and onboarding. |
No free plan for new accounts: the free tier only exists for accounts created before 12 June 2025. New accounts get a 7-day trial of Basic.
Yes. An AI coding agent such as Claude Code, Codex or Cursor can build a usable personal version in one session with the prompt on this page, running on your own machine.
About $15 a month on the Basic plan, $180 a year (checked 2026-10-14).
A hosted widget you paste into Webflow, Framer or Squarespace without writing code; Someone else handling email deliverability, bounces and unsubscribes; Ready-made Slack and Zapier connections and signed webhooks; Traffic and UTM analytics dashboards; Team logins and live chat support. If any of those matter to you, keep paying.
Yes: Listmonk (open source), Waitly (open source), FormZero (open source).