
Aurora LMS
Kindle Academy's LMS was falling over at exam time. We rebuilt it as one platform for 80,000 students.
The work is running on spreadsheets and three subscriptions. We replace that with one SaaS product: tenants, billing, roles and the workflow your team already knows.
A SaaS product fails at tenancy, billing and permissions long before it fails at screens. We design those boundaries first so two organisations never see each other's data.
After the workflow is clear, we lock the technical choices that keep the product maintainable. These are the ones we use here:
Chosen because we have run it in production, not because it is fashionable.
From the first data model to a production deploy. Here is what we hand over.
Org onboarding, invites, roles and tenant data that cannot leak. The boring foundations a SaaS product cannot skip.
Courses, cohorts, video, quizzes and instructor grading in one product, instead of a portal plus a video host plus a spreadsheet.
Bookings, calendars, inventory and notifications shaped to your rules, so staff stop copying between three paid tools.
Separating Content Ownership from Enrollment State in LMS Tenancy
In multi-tenant learning management architectures, naive designs bind course content directly to tenant organization IDs, making content syndication across corporate branches a nightmare. We architected a decoupled entity model: content definitions exist as versioned immutable entities, while enrollment states, grading progress, and cohort schedules exist in separate tenant-scoped tables with PostgreSQL Row-Level Security. This eliminated data duplication while allowing instantaneous branch-wide curriculum updates.

Kindle Academy's LMS was falling over at exam time. We rebuilt it as one platform for 80,000 students.

Halcyon Fit was running bookings, billing and trainer pay in three tools. We replaced that with one gym operating system.

Strata Retail spent 35 hours a week reconciling supplier invoices by spreadsheet. We built one ops portal for 24 branches.

Forgeworks reps were fighting a bloated CRM instead of talking to buyers. We built a pipeline they update in seconds.
Ready to turn this into a product? Tell us what you need.