Zeelo. Turning a compliance process held together by email and goodwill into something that works at scale.
01Overview
I knew nothing about bus operator compliance when this landed on my plate. Operator licences, OCRS records, insurance certificates: the paperwork stack that sits between a vehicle and a paying passenger. I learned it the way you learn most things in an ambiguous problem space, by talking to everyone who'd let me, building a picture from the edges inward, and slowly working out who actually owned what.
Results
230 operators onboarded self-serve.
No ongoing ops involvement in onboarding triage after launch.
~£800k–£900k in operator capacity unlocked.
Estimated from 230 operators and 1–2 week compliance delays removed.
~£26k/year in ops time recovered.
From manual chasing across the ops team.
02About
Zeelo runs corporate transport without owning a single bus. Operators bring the vehicles and drivers. Zeelo brings the routes, the clients, the coordination. By 2023 Zeelo was directing £40M+ a year in payments to UK operators.
03Problem
The brief was 'improve onboarding'. Discovery reframed it inside a week.
Ops tracked operator information across four parallel systems: Pipefy forms, spreadsheets, emails, Google Drive. None of them complete. Nobody could see where any operator stood at any point, so the default was chasing. The bottleneck wasn't the form. It was the visibility.
The operator portal connects directly into Mission Control, Zeelo's internal ops platform. Operators upload, ops approve or reject from the other side. Two platforms, one system. So this wasn't a standalone onboarding tool. It was the entry point to every operational relationship Zeelo depended on.
The stakes underneath the admin: operators occasionally ran trips before their compliance had been confirmed. Not an edge case, a known risk. In the US, if a driver is in an incident, the liability falls on Zeelo, not the operator's insurer. I only learned that during research. One uninsured incident, one expired licence missed, and the legal exposure dwarfed anything an admin tool was going to fix.
So the brief reframed itself: how do you build the trust layer between Zeelo and its operators, when nobody currently has a way to see what they're trusting?
We just need one place where everything lives instead of chasing emails.
Melissa Parnaby, Operations Specialist
Google Drive used for compliance document storage. Scattered files, inconsistent naming, no source of truth.
Pipefy used as a compliance history log. Unstructured, no consistent format, no single source of truth.
04Goal
Build a single source of truth for compliance state. Owned by operators, visible to ops, with feedback loops that close without phone calls.
The constraints that shaped it: sole designer, four-person squad, a two-sided system that had to stay in sync, two compliance regimes (UK and US), and a three-year operator product vision sat behind a phase 1 scope.
05Discovery
It was: what does this product look like in three years?
I spent time with that before narrowing to what could ship. A three-year operator platform would let operators self-manage drivers and vehicles, handle their own compliance, see performance data, allocate jobs without going through Zeelo ops at all. That vision shaped every scoping decision that followed. None of it works without a clean foundation. The first thing to design was the ground floor.
Discovery sessions with Melissa Parnaby (Operations Specialist), Alice Lane (Senior Operations Manager South), and Tom Kinsey (Senior Operations Manager North). Melissa described tracking operator information across four parallel systems simultaneously. The default was chasing: emails, calls, more emails. Sometimes operators started running trips before their compliance was confirmed.
The reframe came out of these sessions: onboarding wasn't a step to get through, it was the entry point to an ongoing compliance relationship. Design it as a form and you solve the first interaction. Design it as a system and you solve the relationship.
Before designing any UI, I mapped how compliance state would flow between the portal and Mission Control: what an operator profile must carry, what ops needs to see without opening a record, what happens when a document is rejected and why that rejection has to carry a reason. The model came first, the screens followed.
↳Competitor review
National Express operator platform reviewed during discovery. Outdated UI, difficult to navigate. The quality gap was clear.
↳Portal scope and JTBD map
Portal scope mapped before phase 1 was cut. Each section paired with JTBD statements to tie scope to operator needs.
First sketch of the three-year portal vision. Drawn before phase 1 was scoped to make explicit what was being deferred.
↳System and data architecture
Two-sided system mapped before any screens existed. Operator log-in through to Mission Control sync, with notification flow and data transfer at each stage.
HubSpot and Mission Control data flow. Operator data from onboarding feeds into Zeelo's systems bidirectionally.
06Design iterations
The riskiest unknown was whether operators would self-serve at all. Phase 1 had to prove that account activation could happen without an ops specialist holding hands. Phase 2 was operator-side compliance management, designed to be the next bet only if phase 1 earned belief. Everything else was deferred to subsequent phases, gated on what the foundation proved.
Ship the cheapest thing that validates the riskiest assumption first. Defer anything that adds moderation, legal or build overhead until the prior phase earns it.
Full compliance data upfront.
Killed in V1 testing. Asked for too much in one sitting. Moved to a dedicated portal phase post-activation.
Ops-assisted onboarding.
Felt safe. Was also the bottleneck producing the problem. Going self-serve required investing in notifications and an audit trail upfront, but kept the design honest to the long-term vision.
Driver-level compliance.
A natural next layer once operators were in the system. Deferred. The portal IA was scoped to accommodate it without rework.
Allocations self-management.
Where the three-year vision pays off: operators allocating drivers and vehicles to journeys directly, without ops routing the work. Out of scope for phase 1 because it depends on a stable compliance foundation first.
Granular ops triage states.
We explored more granular options with ops and simplified to four states that were actually actionable under real workload. Granularity nobody acts on is noise.
Hypothesis: operators would prefer to complete everything in one sitting and be done.
The first prototype asked for full compliance data during onboarding: insurance details, coverage amounts, expiry dates, vehicle documentation. Usability testing with four UK operators (Landflight, Centrebus, Wheelers, Charlise), run from a corner of the open office because no meeting rooms were available, killed it fast. Operators hesitated, got stuck, dropped off. Too much to have ready in a single session.
Hypothesis: separating activation from compliance would lift completion on both.
Onboarding collected only what was needed to vet and activate: account setup, contact details, fleet information. Compliance documents moved to a dedicated portal phase post-activation. The original approach had conflated two distinct moments, becoming an operator and staying compliant as one. Separating them made both better.
When a document failed validation, the original spec marked it Rejected and stopped. I pushed for a mandatory written note from ops explaining why. Engineering pushed back: we were close to the edge of what could ship in the first release.
I held on it. Without a reason, operators re-upload the wrong version. Another review cycle. Another round of emails. The note closed the loop without a phone call. It stayed.
UK and US compliance requirements differ enough that a single generalised form would have forced operators to self-identify applicable fields mid-flow. We built two flows, shared components, different requirements.
The asymmetry that mattered: in the US, if a driver is in an incident, it's on Zeelo, not the operator's insurer. That had to be reflected in what we collected. The US flow includes a Certificate of Insurance section with Zeelo's address pre-filled as certificate holder. Operators know exactly what to upload and why.
The three-stage structure held in testing. The specific language didn't.
MPOC ('Main Point of Contact') caused confusion across multiple participants. Nobody got the distinction between MPOC and MPOC for Quotes. The fix was progressive labelling: first instance showed the full term with the abbreviation in brackets, subsequent uses showed MPOC with an info tooltip on hover. Operators learned the term once and the shorthand worked from there. Fleet size terminology needed similar work – operators weren't sure whether 'coach' and 'bus' referred to the same vehicle type. Labels were clarified with plain descriptions. Both changes confirmed in testing before anything shipped.
↳Lo-fi wireframes
Lo-fi wireframe, log-in and initial form. Operator-side onboarding entry point before hi-fi.
Lo-fi wireframe, post-form checklist. What needs updating after account activation.
Lo-fi wireframe, contact details, compliance, and driver list. Early IA for the portal tabs before committing to hi-fi.
↳Final designs
UK contact details. Depot location address field. Structured step of the V2 onboarding form.
Vehicle stepper with fleet added. Quantity entry mapped to UK fleet taxonomy.
UK portal components. Form field and stepper detail from the V2 onboarding flow.
US additional info, option selected. Certificate of Insurance with Zeelo pre-filled as certificate holder.
US additional info, non-selected state. US flow improvements screen showing the empty entry state.
↳V2 engineering spec
Engineering spec for the onboarding form. Field rules and implementation detail written to communicate technical range to the squad.
↳Phase 2 operator portal
Phase 2 operator portal dashboard. Minimal navigation, first version of the post-onboarding operator surface.
Phase 2 notification centre. Compliance cards and deadline alerts visible on landing.
07Solution
The system shipped in three parts: an operator-facing onboarding flow, an operator portal for ongoing compliance, and an ops-facing pipeline view inside Mission Control. Each one fed the next.
Operator-side, phase 1. A gated three-stage form with progress saving. Built once, branched for UK and US.
Ops-side, Mission Control. The onboarding status pipeline turned the operator list from a static directory into a live worklist. Four states (Invited → Details required → Docs required → Compliant), filterable, scannable, actionable without opening individual records.
Operator-side, phase 2. Once operators are in the system, they land in the portal. Document uploads, deadline countdowns, and a full audit log in one place. Every document carries a timestamped record of who approved or rejected it, and why.
The history log wasn't in the original brief. It became obvious as I scoped requirements that both sides – operators and ops – needed a single source of truth they could refer back to. It moved from a nice-to-have to a load-bearing trust mechanic.
↳Ops side: Mission Control
Mission Control operator list. Onboarding pipeline on the ops side, filterable and scannable without opening a record.
Mission Control operator profile, compliance tab, top section. Approve or reject per document, in one place.
Mission Control operator profile, bottom section. Document status, history, and compliance state in full.
Approve docs modal. The other side of the review flow.
Reject docs modal. Ops required a written note before the rejection state could be set.
Insurance documentation with review notes. Approved and rejected states both visible.
08Results
230 operators onboarded self-serve over the 12–18 months following launch. Before this shipped, operators waited 1–2 weeks on average to clear compliance and run their first trip. Removing that bottleneck unlocked an estimated £800k–£900k in operator capacity, derived from a public Zeelo figure of roughly £17k/month per operator relationship.
~£26k/year ops time recovered.
Derived from internal estimate: 10–13 ops people, ~22 hours a week chasing documents across four platforms, fully-loaded cost of ~£25/hour. Capacity now going on work the platform handles without intervention.
Harder to quantify, still real.
Operators running trips before compliance was confirmed wasn't an edge case. The portal didn't tidy up an admin problem. It closed a liability that ops had been managing by hand.
Reported, not measured.
Customer Success noted a stronger first impression with new operators. Sales used the system directly when pitching enterprise clients as evidence of operational rigour. Whether either moved retention wasn't tracked.
09Reflection
The system shipped. The bottleneck moved. Ops stopped chasing. That's the win, and the part I'm most confident about.
What I'm less sure of sits underneath the headline. The £800k–£900k figure is the strongest one in the case study, and it's a derivation, not a measurement. The maths is defensible, but I never closed it against a finance-confirmed number. Worth knowing what the actual unlocked revenue was, and whether the delay-to-revenue assumption holds across all 230 operators or only the larger ones. I'd want that tied off before claiming the figure means what people assume it means.
The bigger gap is design, not measurement: the operator portal shipped without usability testing. The onboarding flow was tested and iterated – four operators, real sessions, specific changes made as a result. The portal itself, where operators manage compliance documents after onboarding, didn't get the same pass. It worked. But I designed a system for an ongoing relationship and only tested the entry point. Everything from document upload onwards was built on research inference, not direct observation. That's the part I'd go back to first.
And the cross-functional thing is still open. Compliance ownership at Zeelo was split across ops, customer success, and account management in ways nobody had written down. I reconstructed that map as I went. The system I built assumes ops own document validation, but that boundary was less stable than the design implies. A user who uploads a renewed licence and waits four days because the right person was on leave is a trust gap the portal can't close on its own. The feature tells people what's needed. It still depends on people behind the scenes to act on it.

