Skip to content
Case Study 01

BIIAB Training Management Platform

Replacing spreadsheet-based training operations with one product for bookings, payments, and reporting.

I built a multi-tenant system for BIIAB so staff and training centres could manage courses, orders, revenue, and permissions in one place instead of stitching the workflow together by hand.

ReactRemixTypeScriptPrismaPostgreSQLStripe

Project frame

Role
Built the product across frontend, backend flows, and admin UX.
Stack
Remix, TypeScript, Prisma, PostgreSQL, Stripe, AWS S3, Netlify.
Users
BIIAB staff, finance users, and training centres working inside one system.

Revenue processed

GBP 100k+

User roles

5 roles with scoped access

Reporting

Live filters and CSV export in product

The Job

The hard part was operational clarity, not visual flair.

This product had to make finance, reporting, and centre-level management easier to trust. That meant solving the workflow, not just wrapping it in a dashboard.

BIIAB needed one system for centres, courses, orders, payments, and reporting. The interface had to stay usable for training centres while still giving internal staff a reliable picture of revenue and operations.

  • Finance needed trustworthy payment and revenue data instead of spreadsheet cleanup.
  • Training centres needed scoped visibility into their own courses, venues, and orders.
  • Bookings, reporting, and email workflows had to live in one product instead of across separate processes.
What I Built

Four parts of the system carried most of the weight.

Payments and revenue logic

Stripe checkout, webhooks, VAT handling, and the BIIAB revenue share were built into the product instead of left to manual reconciliation.

A multi-tenant data model

The system supports global course templates, centre-specific delivery, role-based access, and finance-friendly reporting queries.

Admin screens that answer real questions

Dashboards, order detail views, and centre-level screens were designed to help staff understand what was happening without digging through exports.

Permissions that stay out of the way

Five user roles, route guards, and scoped data access let each user see what they needed without exposing the rest of the system.

Screens

Product screens that show the shape of the work.

Screens use sample data. The point here is the structure: what staff could see, what centres could control, and how reporting stopped living in spreadsheets.

Financial dashboard filtered by date, centre, course, and payment data.
Finance dashboard for filtering revenue and replacing spreadsheet reconciliation.
Order detail view with payment records, attendee data, and status history.
Order detail view that keeps payment, attendee, and status data together.
Centre overview with metrics across courses and revenue.
Centre-level view that gives providers a clear picture of their own operations.
Venue management screen with approval workflow and compliance data.
Venue approval workflow tied directly to scheduling and compliance rules.
Outcome

One system replaced a brittle mix of admin workarounds.

Staff could answer finance questions faster, centres could work inside their own space, and BIIAB had a clearer picture of revenue and operational activity. The value was not just the interface. It was the reduction in manual effort behind it.

This project is a good example of the work I like most: systems-heavy product work where data, permissions, reporting, and UX all have to hold together.

Revenue processed

GBP 100k+

User roles

5 roles with scoped access

Reporting

Live filters and CSV export in product