SignupGenius makes about $40 million a year selling pop-up ads on top of a tool churches use to organize potlucks. It is, by any measure, a deeply weird business. It is also, by any measure, the only thing standing between most volunteer organizers and a spreadsheet hell that nobody wants to maintain. So.

Here is the part where the dev blog usually says "I built a tool to solve a problem I had." I did not have this problem. My wife had this problem. Maya's dance studio had this problem. The PTA had this problem. Every person I asked, in the polite way you ask another adult between school pickup and the parking lot, had this problem.

What they all said was some version of the same sentence. They said "yeah, the website with the ads, it works fine, I guess." They said it the way you describe a fluorescent light that buzzes. You're used to it. You don't expect it to be otherwise.

The problem, stated plainly

SignupGenius works. That's why it's still here. But it's a 2010 product running on 2010 patterns. The free tier is loud with ads. The paid tier is expensive for what it is. Mobile is an afterthought. The editor uses three different concepts for the same thing (slots, dates, items). And there's no API — none, in 2026 — which means every workaround anyone has built for it is fragile screen-scraping.

The opening isn't innovation. The opening is competence. Build the same thing without the ads, with a real editor, with a mobile-first signup flow, with an API. That is the whole pitch.

Why a developer would bother

Because the moat is exhaustion. The incumbent has stopped trying. The space has the smell of every category that got disrupted in the 2010s — Mailchimp, SurveyMonkey, Doodle. Big enough to be a real market, small enough that the giants don't care, sticky enough that switching is annoying. The kind of market a developer with limited time can actually serve, if the product is sharp enough that the work spreads itself.

The moat is exhaustion. The opening isn't innovation — it's competence.

The MVP, scoped to one me

I have, on a good week, ninety minutes a day. That number is not negotiable. So the MVP is scoped to one me:

scope.ts
type MVP = {
  signup: 'one organizer, one event, N slots';
  auth:   'passkeys + magic link, no passwords';
  share:  'one URL, no account required to sign up';
  pay:    'free for up to 50 signups / event';
  ads:    null; // forever
};

Everything else — recurring events, organizations, paid tiers, integrations, automated reminders — is the v1.1 list. They're real. They're not the launch.

What ships next

Schema first. I'll write up the D1 design next week — slots, signups, users, orgs. Then auth. Then the signup flow. Then a real, real-looking landing page. Then I tell my wife, who has been waiting for this for two years, that she can finally stop running the studio recital sign-ups on a Google Doc.

I'll tell you when the first customer signs up. (I'll also tell you when it breaks.)