The Big Picture
Four systems, each with exactly one job — none of them doubling up as a database they were never built to be.
Solid arrows are authoritative — the two systems on either end can be trusted for their part of the data. The dashed line into Mailchimp only ever runs one way; nothing about a member is ever authoritative there.
| System | Owns |
|---|---|
| Memberful | Subscriptions & billing — who's paid, which plan, when it renews. |
| ChimpLink | Everyone's history before and after they're a member — the sales pipeline, and a permanent record of every event. |
| New Members App | A member's live, current profile — the thing this document is about. |
| Mailchimp | A read-only view for staff, and the engine behind existing automated emails. Owns nothing itself. |
Signing In
You never give us your password
The new app doesn't have its own password system at all — signing in happens entirely through Memberful, the same account you already use.
Steps 2–3 happen on Memberful's own site — your password is typed there, never seen by the Members App at all.
This is a standard mechanism called OAuth — the same pattern behind every "Sign in with Google" button you've ever clicked. The one-time code from step 3 is useless on its own (it expires almost immediately and only the Members App can exchange it), and the "real token" from step 5 only lasts 15 minutes before it needs refreshing — so there's nothing long-lived floating around that could be misused if intercepted.
Getting Your Existing Information
The one-time pull — the moment you first sign in, and never again
The very first time anyone logs in, the Members App asks ChimpLink one question: "what do you already know about this person?" — and copies across whatever comes back (company, job title, industry, and so on) to seed their new profile, so nobody starts from a blank page.
Purely by Memberful's own internal member number. The moment someone actually pays and becomes a member, ChimpLink permanently attaches that number to their applicant record — a mechanism built months ago specifically to survive people changing their email address along the way. So the Members App never has to guess; it just asks ChimpLink "got anything for member number 556689?"
Two honest details worth knowing:
- This only ever happens once, on someone's very first login — never re-checked or re-run after that.
- If ChimpLink genuinely has nothing for that person (an older member from before this system existed, for example), that's treated as a normal, expected outcome — not an error. Their profile just starts blank instead of pre-filled.
Staying In Sync
The ongoing push — how access turns on and off instantly
Separately from the one-time pull above, ChimpLink also tells the Members App, in real time, whenever someone's subscription status changes — renewed, lapsed, cancelled, payment failed. This is what actually controls whether someone can get into the app at all.
No polling — the Members App doesn't repeatedly ask Memberful "is this person still active?" on every single request. It just waits to be told, and acts the moment it is.
Relying on a single mechanism for something as important as access control is a little fragile — a missed message, however rare, would leave someone's access stale. The plan is to add a periodic double-check directly against Memberful as a backup, so a missed update can never last longer than that check interval. Not built yet; today it's the push mechanism alone.
Status
What's built, and what's still to come
- Built Signing in, exactly as described above
- Built Seeding a new profile from ChimpLink on first login
- Built Keeping access in sync as subscriptions change
- Built A home page and your own profile, including a photo
- Built Editing your own profile — changes send back to ChimpLink and Mailchimp automatically, so nothing goes stale
- Built Finding and connecting with other members — a searchable, filterable member directory
- Built Messaging — real-time, with a LinkedIn-style panel that stays available wherever you are in the app
See Project Progress for the up-to-date, full-project view of this alongside everything else in flight.
For The Curious
The technology underneath, briefly
The backend (the part that talks to Memberful and ChimpLink, and stores everyone's profile) is written in Python, using a framework called FastAPI, with a Postgres database. The part you actually see and click on is built in React. Both run as small, independent pieces that can be updated or scaled on their own — a pattern chosen specifically to match ChimpLink's own setup, so the same skills and tools carry across both.