PRODUCTION2026
Epsom Platform
The ProblemCoaching, courses, jobs, and university prep were siloed, and payments between students, coaches, and recruiters happened outside any platform with no tracking or accountability.
The SolutionA shared backend permission system across four modules (Courses, Coach, Talent, Admissions) with a unified data layer. Stripe Connect handles milestone payments, payouts, failure handling, and wallet transfers, with idempotency enforced in the database rather than in application code.
The OutcomeAll six roles work on one platform with payments, chat, and progress tracking integrated. Recruiters pay students milestone by milestone in platform, and parents have full visibility into their child's activity.
Epsom puts career coaching, courses, job placements, and university admissions in one platform. Six roles share the same backend: Student, Coach, Parent, Recruiter, Admin, and Academic Coach. I designed the permission system that governs what each role can see and do, built the admissions pipeline with a Kanban workflow and recruiter contracts, and built the Stripe Connect integration end to end, including milestone payments, payouts, an internal wallet, and webhook processing made idempotent at the database level so a retried webhook can never double charge.
Node.jsTypeScriptPostgreSQLSupabaseStripe ConnectReactFlutter