Menu
Members join digitally, match by contribution level, and follow a recorded payout sequence with no repeat winner in a cycle.
In much of the world, people save through a "committee" — a rotating circle where everyone pays in a set amount each month and, in turn, one member takes the whole pot.
For generations it has run on pure trust: paper records, personal reputations, and one organizer holding everyone’s cash. A fintech startup wanted to bring it online — and make it safe even for people who have never met.
I led the full build across three apps: a mobile app for iPhone and Android, a web dashboard for the operators, and the engine behind them.
Members join with only a phone number, set what they can afford each month, and get matched with savers at the same amount in a few swipes, until a full circle forms on its own.
Every point of human failure got engineered out. The draw that once depended on one person’s honesty is now rule-bound and genuinely random — never the same winner twice.
The cash that once sat in an organizer’s hands moves straight to the winner’s in-app wallet. And the trust that held it all together now lives on the record: every contribution and payout, logged and visible.
Confidentiality note: Client and company names have been changed or omitted for confidentiality. The work, my role, and project scope are real.
JazzCash contributions in, ballot payouts to wallets out — no organizer holding cash
Phone number plus a one-time code signs savers in — nothing to forget or reset
iOS and Android ship together from a single React Native codebase
The payout ballot is random but rule-bound — a past winner can never be drawn again
Savings circles traditionally run on personal trust, paper records, and one organizer holding everyone’s cash — digitizing meant earning that trust with transparency.
Phone-number sign-up with OTP on every login — no passwords at all, keeping entry friction near zero for a mass-market audience.
Monthly winner selection had to stay genuinely random while enforcing hard rules — a member who has received the pool can never be picked again.
Preference-based matching surfaces savers at the same monthly amount; members swipe right or left, and a pool forms automatically once enough matches are made.
Members needed savings partners committed to the same monthly amount — without knowing each other beforehand.
The NestJS backend randomly selects each round’s recipient under the no-repeat rule and disburses to in-app wallets, with JazzCash integrated for pay-ins and payouts.
Mobile app, admin dashboard, and backend had to ship together, staying consistent across iOS, Android, and web.
A Next.js dashboard records every user, match, action, and transaction for review, with built-in reporting — plus in-app group chat and DMs, in Urdu and English.
Muhammad led the build across mobile, web, and backend without dropping a thread. The matching and payout flows worked exactly as designed from the first release.
Client identity is confidential. This summary reflects verbal feedback shared with Muhammad and the project team.
Share what you are building or improving, and I'll help you identify a practical next step.
No comments yet. Be the first to share your thoughts.
Get insights on web development and building products that ship.