Fleetly is a luxury car storage and servicing platform spanning three separate products: a consumer app for booking and managing service, an employee app used by field detailers and their managers, and a management portal for franchise and user administration.
I was brought in after the team had already built out these apps, with a specific brief: review what existed against usability best practices and flag what needed to change before the product moved further into development. I audited all three apps screen by screen — registration and onboarding, the home dashboard, subscriptions and checkout, job scheduling for detailers and managers, and the franchise/user admin tools — and documented specific, actionable findings for each.
The Consumer App
Several smaller frictions added up: CTA copy that leaned too technical ("Request OTP" instead of "Register"), oversized service images crowding out content hierarchy, redundant vehicle cards showing inconsistent information from screen to screen, and multi-step flows (address, vehicle, date, payment) with no indication of how many steps remained or a persistent order summary to anchor the user.
The Employee App
The Manager view needed clearer job-status labeling and a plan for what happens once the visible list of upcoming jobs grows past what fits on screen. The Detailer view's primary action — starting or completing a job — wasn't positioned as the clear, static priority it needed to be on the page, and its status colors didn't match the color language used in the Manager view for the same status.


Cross-App Patterns
Cross-App Patterns
Once I'd gone screen by screen, a second layer of findings emerged — issues that weren't about any single flow, but about the three apps not being designed as one system:
No shared design system. The Consumer app, Employee app, and Management Portal had each drifted into their own visual language. Buttons, status indicators, and card patterns looked and behaved differently depending on which app you were in, even when representing the same concept (a job's status, for instance).
Inconsistent navigation patterns. Some flows used a close (X) affordance, others used back, without a clear rule for when each applied — and neither consistently answered the question of whether in-progress information would be lost.
Missing confirmations on destructive actions. Deleting an account, deactivating a franchise unit or user, removing a saved address — none of these had a confirmation step, raising real risk of accidental, unrecoverable actions.
Status color without a label. Job status across the Manager and Detailer views was communicated by color alone, which fails for colorblind users and isn't consistent between the two apps to begin with.
From Findings to Fix
From Findings to Fix
The review wasn't the deliverable — it was the input. Once the findings were signed off, I applied them directly into the designs, prioritizing the changes with the clearest usability payoff: step indicators through the multi-page purchase and checkout flows, a consistent (and accessible) status system — color paired with a text label — used identically across the Manager and Detailer apps, confirmation steps added before every destructive action, and a shared component vocabulary across all three apps so a button or card meant the same thing everywhere a user encountered it.
I also pushed for a few product-level suggestions beyond pure UI: a live status update on service progress for the consumer app, similar to a delivery-tracking experience, so customers aren't left wondering what stage their car is at.
Once the designs were updated, I handed the final files directly to the development team.
