All Case Studies
Multi-Tenant SaaS Platform

BizOS

One white-label operating system for any business — a client's entire app assembled from a 108-module registry, with an AI brain wired across every module.

The three Hubs, KLIQT and an HMRC agent collapsed into a single codebase. BizOS is a white-label business operating system that assembles a client's whole app — care, compliance, sales, finance, workforce, payroll — out of a registry of plug-in modules, with JonnyAI watching every one of them and taking action behind a confirm step. Not a prototype: live in production, in use with clients.

108Modules registered
8Verticals
233RLS-secured tables
172DB migrations
59JonnyAI actions
bizos.jonnyai.co.uk
BizOS

The Thesis — Stop Building Apps. Assemble Them.

Every business I'd built software for — care homes, facilities managers, motorcycle shops, tradespeople — needed 80% of the same machinery: customers, jobs, quotes, invoices, staff, rotas, compliance, documents, an audit trail. Rebuilding that per client is how agencies die. BizOS is the answer: one white-label operating system where a client's entire application is assembled, not developed.

Every capability is a module with a stable id — O01 Work Orders, X04 Gas Safety, V02 Medication, B05 Point of Sale — declared in one config package with its label, dependencies, the Supabase tables it owns, its vertical lock, and the context it feeds the AI. A tenant is simply a named set of enabled modules resolved through a dependency engine. Standing up a new business becomes assembly in seconds, not a project measured in weeks.

One Codebase, Five Products

BizOS is the consolidation point for work that previously lived as separate apps. Compliance Hub, FM Control Hub and Care Hub, the KLIQT workforce tooling, and an HMRC/tax agent all merge into a single Next.js 15 / Supabase monorepo (pnpm + Turborepo, TypeScript strict throughout).

The module library spans ten families: 21 vertical-specific modules (V), 14 compliance (X), 12 operations (O), 10 sales/CRM (B), 10 tax/HMRC (H), 9 core (C), 9 finance (F), 8 workforce/KLIQT (K), 7 assets/estates (A) and 7 people/HR (P). Turn on a module and its dependencies come with it; core is always on; vertical locks are enforced by the engine.

The Breadth — What's Actually In It

This isn't a thin CRUD skin over a database. Each module ships a pure engine, a pluggable store, a board UI and its own tests — and the recent build cadence shows the depth:

  • Finance: run-rate, year-end budget forecasting; SLA attainment trend charts with threshold-alert banners; a late-fee engine with an editable policy, escalating chase reminders and server-side clamping; client statements with card payment; and bank-feed reconciliation.
  • Workforce & contractors: contractor ratings with a preferred-supplier list; per-user email notification preferences; sign-in history and push-device management on the account.
  • Compliance & assets: EPC portfolio analytics on top of the full statutory suite — gas, fire, electrical, legionella, asbestos, COSHH, CQC and more — carried over from the Hubs.
  • Sell-side: a portal lead inbox with signature-verified webhooks, campaign engagement-rate analytics, and the public storefront, booking and quote pages.

Every one of those is a real, shipped, live-verified card — not a roadmap bullet.

Multi-Tenant, RLS-First

Self-serve sign-up, pick an industry — Facilities Management, Care, Hospitality/Resorts, Construction, Manufacturing, Education, Automotive collision-repair, or Generic — and onboarding provisions a workspace with that vertical's preset in seconds. Owners retune their module set live in the Section Builder, and every change is audited.

Security is the data model, not a UI layer. Row-Level Security is enabled on all 233 public tables, backed by a single capability catalogue, a table-ownership manifest, and a regression gate that rejects any new "generic member can mutate" policy before it can ship. 172 versioned, idempotent SQL migrations carry the RLS and grants with them — the schema is defensible by construction.

Money In, Money Out, and Public Sell-Side Pages

The commerce spine runs end to end: customers → pipeline → appointments → projects & jobs → point of sale → invoice. Quotes carry public accept/decline links; invoices carry Stripe pay-online links with payments auto-recorded by webhook; recurring invoices run on anchored schedules; an overdue-chase cron does the follow-ups. Money out covers staff expenses (mileage + VAT) and supplier bills. Exports to Xero, QuickBooks and CSV.

Crucially, BizOS ships no-login public pages that do real work: /pricing, /shop/[slug] (a storefront with card checkout at order time), /book/[slug] (booking straight into the diary), and /quote/[token] (quote acceptance). Every public write path trusts nothing — prices are re-resolved server-side, tokens are possession-based, GETs never mutate.

JonnyAI — The Brain Across Every Module

JonnyAI is embedded, not bolted on. Every one of the 108 modules feeds it context, so "Ask JonnyAI" is grounded in that module's live data — total coverage, audit-enforced. A workspace snapshot triages the business risk-first. 59 executable actions run behind a confirm step with active-tenant binding and action-level capabilities, so the AI can do work without ever acting unsupervised. Each tenant gets a Monday-morning digest written for their business and emailed to staff.

The AI backend is pluggable — Anthropic (Claude), a local Ollama model, the JAIOS FastAPI supervisor, or a deterministic local fallback — selected by config, so the platform is never hostage to one provider.

It Runs Itself

Eleven scheduled automations run on the VM without anyone logging in: weekly digest, policy chase-ups, overdue-invoice chase, deal reminders, escalation rules, appointment reminders, recurring invoices, social publishing, bank-feed sync, a weekly integration sync, and a nightly private-attachment reconciliation. Cross-module wiring flows through a single event bus — one call fans out to the audit log, the notification centre, and critical-alert email.

There's a real Capacitor mobile shell (Android and iOS projects committed) wrapping the live app, plus tooling that makes the platform maintainable: a tenant-provisioner (new client → dependency-complete config), a module generator that scaffolds to the house template, and a registry-sync that regenerates seed SQL from config.

Hardened Continuously

Security on BizOS is an ongoing campaign, not a one-off pass — the most recent months of work have been almost entirely hardening:

  • The capability-boundary programme (M04m–M04p) is systematically eliminating every "generic member can mutate" policy in the schema — locking down sales & marketing, the industry verticals, and the core/shared tables one module family at a time, each slice gated by a live pgTAP acceptance harness run against production (384/384 green on the repair-controls slice alone).
  • Portal isolation (M05) walls the contractor/portal surface off completely: portal-facing tables are staff-only by default, every portal row is per-user owned, and the portal identity was migrated off mutable email so a changed address can never expose another tenant's data.
  • Inbound webhooks verify Svix signatures before anything is trusted; public write paths re-resolve prices and clamp inputs server-side; secrets stay out of the repo (even the local MCP config is git-ignored).

The bar is enforced, not claimed: 100% mechanical repository conformance, 224/224 tests, eight typecheck packages and a dependency vulnerability scan — all green on CI before anything ships. Deploys are deliberate: migration, apply, verify RLS advisors, run all four gates, then build and restart.

And where something is deliberately not finished, it says so: the Tax/HMRC modules are draft/simulated and human-gated — nothing ever calls a real HMRC endpoint. A platform this broad earns trust by being precise about what is production-grade and what is staged.

Trust, Compliance & Cover

BizOS handles other businesses' operational data — and, in the care vertical, special-category data — so the governance around it is real, not decorative:

  • The company behind it, Aleejy AI Ltd, is registered with the ICO and is both fully insured and cyber-insured.
  • Data protection is covered end to end: a live Privacy Policy and Terms, plus a client Data Processing Agreement, a care-sector DPIA and a Cookie Notice.
  • Data lives in Supabase (EU region) with Row-Level Security on all 233 tables, an automatic audit trail on every write, and private-first storage served only through signed URLs.
  • Continuity is planned, not hoped for: a documented disaster-recovery runbook and automated database backups mean a bad day is a restore, not a catastrophe.

The Outcome

Live in production at bizos.jonnyai.co.uk — Next.js 15 on a GCP VM behind Caddy with Let's Encrypt, Supabase for data/auth/RLS, Stripe for both platform billing and customer payments, Resend for email, and the JAIOS agent runtime alongside. In use with clients.

Platform billing is real Stripe: five plans plus a founding-launch offer, 14-day trials, plan caps on seats/sites/AI-actions, top-up packs and a customer portal, with fail-open enforcement so a billing glitch never hard-locks a tenant out of their own business. BizOS is the long-term home everything else folds into — one platform, any vertical, assembled per client.

Let’s build

Ready to build something real?

Brand, website, app, content and automation — or production software that runs inside your business and does the work. Tell me what you need and I’ll come back with a clear, fixed-price plan.