MODULE 04 — The Raising Club

Memberships, billing and family households

A subscription business the owner can reconfigure without a developer — plans, prices, seats and Stripe credentials all live in the database.

See it live at theraisingclub.com
“They delivered on time and were very proactive in recommending new capabilities for the marketplace.”
Ara VazquezFounder, The Raising Club
Client
The Raising Club
Sector
Childcare · Marketplace · EdTech
Built
2026
Timeline
First commit 29 May 2026 · five-module platform in production 2 July 2026
The public membership page — tiers and monthly/annual pricing, read live from the admin-managed plan catalogue.

What it does

Capabilities

  • A database-driven plan catalogue with monthly and annual pricing, seat limits, feature lists and per-audience presentation — created and edited entirely in the admin console.
  • Stripe subscriptions with a customer portal, plus one-off checkout for paid events and courses, all fulfilled by a single webhook.
  • Entitlement is recomputed server-side and stored as a snapshot on each profile, so every access check is one indexed lookup rather than a Stripe round-trip.
  • Family households: one subscription shared across adults, with invitations counted against the plan’s seat limit and entitlement fanned out to every member.
  • Manual comp grants — an admin assigns a plan for a fixed window with no Stripe involvement, honoured identically by the entitlement system.
  • Stripe test and live key sets are stored and toggled in the admin console, so the owner switches modes without a deploy.

How people use it

The journeys it was designed around

The ownerChange what the business sells, on a Tuesday, alone

  1. Opens the plan catalogue in the admin console and creates a tier: name, monthly and annual price, adult seats, feature list, audience and display order.
  2. Pastes the Stripe price IDs for that tier into the same form.
  3. Sets it active — the public membership page, the settings plan picker and the entitlement system all read the change immediately, because they all read the same table.
  4. When ready to take real money, switches the stored Stripe credentials from test mode to live with a toggle, and confirms with the test-connection button.

A memberSubscribe, and bring their partner

  1. Picks a tier and checks out through Stripe; the webhook records the subscription and recomputes entitlement.
  2. Sees plan status and the exact renewal or expiry date in their settings, with a link straight into the Stripe customer portal to manage the card or cancel.
  3. Creates a family household and invites another adult by copyable link.
  4. The invitation is checked against the plan’s seat limit before it is accepted; on acceptance, entitlement fans out to the new member.
  5. The invited adult signs up through a condensed parent flow and lands inside the family, able to post roles and message caregivers.

An adminComp an account without touching Stripe

  1. Opens the user, picks a plan, an interval and a start and end date.
  2. The grant is written to the same assignment ledger as paid subscriptions, marked as manual with no Stripe subscription attached.
  3. Entitlement honours it for exactly that window, identically to a paid subscription.
  4. It can later be revoked or extended from the same screen.

How it is built

Implementation and the rules real users find

Under the hood

  • The plan catalogue is a database table with full admin CRUD; the hardcoded plan module that preceded it was deleted rather than left as a fallback, so there is one source of truth.
  • Entitlement is denormalised onto each profile — active plan, status, expiry — and recomputed by a SECURITY DEFINER function whenever anything that affects it changes.
  • The assignment ledger is keyed to a polymorphic subject that can be a user, a household or an organisation, so shared and individual plans use one code path.
  • Stripe test and live key sets live in an admin-managed record with masked secrets and a mode toggle; the Stripe client resolves the active mode at call time and falls back to environment variables if nothing is stored.
  • Webhook handling runs through a service-role client because it writes on behalf of an account that is not signed in — kept strictly server-side and never imported into a client bundle.
  • Price, role and cut-off are always re-read on the server before a sensitive action; nothing that determines what is charged is trusted from the browser.

The rules real users find

  • Household seats are enforced when an invitation is accepted, not when it is sent, so an owner downgrading a plan cannot be back-doored by outstanding invites.
  • A failed subscription payment moves status rather than deleting the record, so the member sees why access changed.
  • Because email delivery was deliberately parked at launch, every invitation flow is copy-link — the platform never depends on an SMTP configuration that does not exist yet.
  • Entitlement was shipped as infrastructure with the feature gates left explicitly marked but switched off, so the tier-to-feature matrix could be settled commercially without blocking the build.

The screens

Taken from the live product

Click any shot to enlarge.

The rest of the platform

All 5 modules

These were built on one schema and one permission model, which is the only reason all 5 of them could ship together.

Who built this

Senior engineering, not an account manager

SigmaticAI is led by Ketan Khamgaonkar — an IIT Roorkee M.Tech who went on to PhD research at IIT Bombay before spending four years building AI automation, agentic systems and full web and mobile products. On every project you talk to the person writing the code.

  • M.Tech, IIT Roorkee
  • PhD research, IIT Bombay
  • 4+ years shipping production software

Need a memberships, billing and family households of your own?

No pitch deck. Tell us what you are trying to ship and we will tell you the fastest honest path to live — including if that path is smaller than you thought.

Read the full case study

Tell us about it

Name and email are all we need — the rest helps us come back with something useful.