← All projects
Founder·2022 — Now·Active

Founder Communities

Curated IRL founder communities in NYC and Cambridge — intimate dinners, meaningful collisions, and a custom-built community OS (marketing site, member portal, admin CRM, and a dozen integrations) that I designed and ship as the sole engineer.

CommunityEventsNext.js 16SupabaseStripeLumaBeehiivResendInngest
5,000+
Network
50
Paid members
200
Annual ski day
2
Cities
What I built into the platform
01 · MARKETING

Public site & blog

Next.js 16 marketing site with the public landing, an apply funnel, and event microsites (NYSki, NYSea). Blog posts come from Beehiiv's Posts API with cache-tag revalidation so a post.sent webhook updates the site instantly.

02 · MEMBER PORTAL

Members-only dashboard

Authenticated portal for paid members — home dashboard, member directory, journal, billing, and event history. Wrapped in a custom PortalShell with QueryProvider + AuthProvider.

03 · ADMIN CRM

Operator dashboard

An entire internal CRM at /overview · /events · /contacts · /applications · /payments · /memberships · /emails · /campaigns · /observability. Replaces the Notion + Airtable + Zapier sprawl I lived in for years.

04 · APPLICATIONS

Application & interview funnel

Full applicant pipeline — submit, schedule via Cal.com, interview recording + transcript, dinner invite, reminder, rejection, or membership initiation. Each stage is a single API endpoint that fans out the right emails and Stripe links.

05 · EVENTS

Luma-synced event ops

Luma is the source of truth for events and guest registrations. A full-sync script + real-time webhooks pull every event/guest into Supabase; guest approvals write back to Luma via a /api/guest-status proxy.

06 · EMAIL ENGINE

Templated transactional + campaign email

Resend for delivery; in-app template editor with previews and test-send; every send logged to email_sends so the admin can audit deliveries from inside the dashboard rather than chasing Resend's UI.

07 · BILLING

Stripe checkout & memberships

Stripe Checkout sessions for dinner tickets and memberships. Webhook handler reconciles customers, subscriptions, and payments back into Supabase; a backfill script imports existing Stripe history.

08 · BIDIRECTIONAL SYNC

Luma ↔ Beehiiv ↔ Stripe ↔ Notion

Every system that already had data got a bidirectional sync. Backfill scripts for each (Beehiiv subscribers, Stripe customers, Cal.com bookings, Resend history, Notion contacts), and webhooks for forward sync.

09 · BACKGROUND JOBS

Inngest for everything async

Inngest handles the work that doesn't belong on a request — sync jobs, retries, scheduled reminders, idempotent backfills. Local dev runs against the Inngest dev server.

FounderFounder Communities · 2022 — Now
01· Section

Why founder communities

I really value the people I spend time with. There's something important about finding people at a similar stage — a stage ahead, a stage behind — who share your values: ambition, creativity, confidence, willingness to make mistakes, and integrity. We wanted to create spaces where a small group of high-quality individuals could actually get to know each other over time.

There's also a bigger thesis. In an AI-first world where we're spending more time inside our computers and AI systems, there will be increased value placed on coming together in real, physical spaces with other humans. The future isn't another feed. It's curated, intentional, in-person communities.

02· Section

NYC Founders Club

The wider network has grown to 5,000–6,000 individuals, with a core group of around 50 paid members. We host members-only dinners weekly, larger membership-wide gatherings, and 'founders and friends' events — including our annual tradition of buying out a ski mountain every February for 200 founders.

We occasionally work with sponsors like JP Morgan, Rho, and Brex, but the community always comes first.

Member at an NYCFC event
Members at a recent dinner
Members at an NYCFC sponsored event
Sponsored membership event
03· Section

Cambridge Founders Club

When I moved to Cambridge for MIT, I took the same model and applied it with a lighter touch. The community focuses on connecting builders across MIT and Harvard — hosting dinners and creating spaces where people can genuinely get to know each other.

04· Section

The community OS — frontend

Next.js 16 App Router with route groups. (marketing) is the public site, the apply funnel, and event microsites. (portal) is the authenticated members surface — dashboard, directory, journal, billing — wrapped in PortalShell with QueryProvider + AuthProvider. (admin) is the operator CRM, gated by middleware that requires both auth and admin_users membership; non-admins get redirected to /dashboard.

Public blog at /blog is powered by Beehiiv's Posts API with Next cache tags + ISR. A beehiiv-blog webhook calls revalidateTag() on post.sent and post.updated so newly-published posts go live without a redeploy. HTML is sanitized via sanitize-html and rendered through @tailwindcss/typography.

Marketing landing — Real friends, one table, every Tuesday
Marketing site · the public landing
Member portal home — Welcome back, Adam
Member portal · home dashboard
05· Section

The admin panel

The admin CRM is where the marketplace gets run. The applications screen is a stage strip across the top (one cell per ApplicationStage enum value, with live counts), a filterable table of applicants, and a right-side detail panel that slides in when a row is selected — pipeline visualization, interview notes, and the action stack (send dinner invite, send reminder, mark not a fit).

Event night is its own surface: a guest table on the left (with inline approve/decline for pending guests) and a 2x2 seating chart on the right that you can drag guests into. Every admin action fires a Convex mutation that fans out to the right Stripe / Resend / Luma side effects.

Admin applications screen — stage strip, applicant table, right-side detail panel
Applications · pipeline, table, detail panel
Admin event detail with seating chart
Event night · guests + seating chart
06· Section

The community OS — backend & integrations

Supabase is the database. Every external system that already had data got a sync: Luma (events + guests), Beehiiv (subscribers + posts), Stripe (customers, subscriptions, payments), Cal.com (interview bookings), Resend (sent emails), Notion (legacy contact + application import).

Forward sync is webhooks; backfills are idempotent scripts in /scripts. Inngest handles the work that doesn't belong on a request — sync jobs, retries, scheduled reminders. The application funnel is its own subsystem: each stage (invite-interview, send-dinner-invite, send-reminder, send-rejection, initiate-membership, recording-url, transcript) is a single endpoint that fans out the right side-effects.

I've been the sole engineer through the entire build. Replacing the prior Zapier + Tally + Framer + Notion + Airtable patchwork with one cohesive system is what made the community model actually scalable.