Case Study
Brawn
Small group strength training, sold to gyms — and the booking, billing and trainer payouts behind it.

About Brawn
Brawn is a UK company that sells strength training to gym operators rather than to consumers. Its model puts four to six members with a personal trainer for a structured block of sessions, so a gym can offer coaching to members who would not book it one to one. The company describes itself as “the all-in-one growth engine for your gym”, one that “finds the members you're missing, keeps the ones you have, and turns both into PT revenue”. It says it is trusted by more than 50 gyms across the UK, among them The Gym Group, UltraFlex, 6Fit and Bad Company.
Members book and track their sessions in the Brawn app, which sets out to help people “Lift Better, Lift Together” through booking, digital strength challenges and progress tracking with suggested weights. Underneath that sits the part a gym never sees: subscriptions, credits, session scheduling, trainer earnings and payouts, all of it running across several gym brands at once.
Bitcube has worked as part of Brawn's engineering team on that platform since July 2025.
The Challenge
The platform was five and a half years old by the time this work started, and it was already taking money from paying members, so there was no quiet period in which to change it. Billing state lived in two places at once, in Brawn's own tables and in Maxio, the subscription service it charged through, and the two had to agree on ten different membership statuses resolved by priority and then by date. When they disagreed, a member was charged for sessions they could not book or booked sessions nobody was charging for, and nothing in the system said so out loud. Trainers were paid out of the same numbers, so a billing error became a wrong payout to a self-employed person who noticed. Each gym operator carried its own branding, pricing and payment account, which meant no fix could assume one configuration. And four separate applications ran against one API — the member app, the public booking site, an onboarding app for trainers and the internal admin panel — so a change to the booking rules had to hold in all four at once.

Our Solution
Phase 1 — Credits as the unit of booking
The first epic replaced ad-hoc booking with a credit system, adding billing cycles and booking credits as first-class tables so that every booking traced back to a payment and every payment to a number of sessions. Preview endpoints were built alongside it for booking, cancelling and moving a session, each returning a typed response, so the apps could show a member what a change would cost before it happened rather than after. Slot and availability management landed in the same stretch with conflict validation, which stopped double-booked trainers at the source. Each gym brand also got its own payment configuration, so an operator takes money on its own account instead of through a shared one. The credit, cross-week booking and billing reconciliation epics all closed on 22 August 2025.
Phase 2 — An onboarding app for trainers, built in parallel
While the billing work ran, a separate Next.js application was built from nothing to bring self-employed trainers onto the platform: an invite system, account setup, professional profile, availability, legal agreements, payment details and the admin tools to manage all of it. Ten epics closed together on 5 September 2025, which meant Brawn could recruit trainers without the process touching the API team.
Phase 3 — Moving live block purchases onto Maxio components
Existing block memberships had to move onto Maxio's component billing without interrupting anyone mid-block. The migration was rehearsed against a seeder covering 30 scenarios before it ran, and shipped with payment validation, duplicate prevention, credit synchronisation, transaction safety and retries. The rehearsal is what allowed it to run against live subscriptions at all.
Phase 4 — Making the invisible visible
A health check service and dashboard arrived in November 2025 and grew to 21 checks — duplicate cycles, gaps, wrong credit counts, orphaned credits, bookings without credits, Maxio price points that no longer matched. Each one names a way billing had previously gone wrong quietly, and several gained a one-click repair beside them.
Reporting ran alongside all of it: PT earnings by brand and month with CSV export, payout summaries, then per-credit revenue, a monthly profit and loss view, and finally a revenue recognition schema reconciled against Maxio and refreshed live on its webhooks. Membership administration was built out in the same stretch — upgrades, reactivation, and moving a member between a block and a recurring plan, each with its credit and billing consequences handled by the system. In June 2026 dependency vulnerabilities were cut from 52 to 2, with no critical or high remaining.
Key Features
- ✓Credit-based booking — every booking traces to a payment, and back to sessions
- ✓Preview APIs — a member sees what a change costs before making it, not after
- ✓Trainer onboarding app — invite to payment details, built alongside the billing work
- ✓Per-brand payment configuration — each operator takes money on its own account
- ✓Live migration onto Maxio components — rehearsed against 30 scenarios before it ran
- ✓21 automated health checks — each one a way billing used to fail silently
- ✓One-click repair — out-of-sequence and over-subscribed credits fixed from admin
- ✓Revenue and payout reporting — per-credit revenue, monthly P&L, PT earnings by brand
- ✓Dependency vulnerabilities cut from 52 to 2, none critical or high
The Results
Brawn kept trading throughout. Nothing in this period required taking the product offline, and the live migration of block memberships onto Maxio components ran without interrupting members mid-block.
Billing stopped failing quietly. Twenty-one health checks now name each way membership, cycle and credit records can drift apart, and the ones that recur can be repaired from the admin panel in a click instead of by hand in the database. The disagreement between Brawn's tables and Maxio, which used to surface as a member complaint or a wrong trainer payout, surfaces on a dashboard first.
Brawn can also now see the money. Per-credit revenue, a monthly profit and loss view, and PT earnings by brand and month are reported from the platform itself, and revenue is recognised against Maxio and refreshed as its webhooks arrive. Questions about what a membership earned, and what it cost in trainer time, are answered from the platform instead of by hand.
Trainers came onto the platform through a route of their own from September 2025, without the API team in the middle. Members can be moved between blocks and recurring plans, upgraded, paused and reactivated from the admin panel, with the credit and billing consequences worked out by the system rather than by an administrator remembering them.
Client
NAME
Brawn Power Ltd
LOCATION
United Kingdom
INDUSTRY
Fitness & Gym Technology
Services
Tech Stack
Ready to Start Your Project?
Let's talk about your goals and find the best path forward together.
Get in Touch