Ahmed.Idris
All projects
Multi-brand automotive retail group · CanadaUNDER NDA

Vehicle Operations Platform

A platform for a car dealership group with forty stores. Every store had its own forms, spreadsheets and process. This gives them one record per car and one way of working.

Role
Lead product designer & researcher
Team
Two designers, then just me, then three
Timeline
Oct 2024 – late 2026
Status
In testing. Rollout has not started.
FIG 01The register the group works from, the whole screen. Both status controls sit in the row.Recreated for this portfolio. Names, identifiers and the marque are invented.
Outcome
~1hour a dayOne person gets that time back.It comes from three jobs that used to be done by hand. Reports are read and approved in the screen instead of being emailed on. Reporting sits inside each module, so answering a question no longer means asking three people.
2tabs, down from fourwas 4 sheet tabsThe filters took over from the tabs.The Garage Register Sheet had four: one for filtering, one for new and lease vehicles, one for pre-owned, rental, factory demo and trade-in, and one for archive. The register has Live and Archive. Condition, date range, vehicle status and document status are filters above the table, so one list does what two tabs did.
~40% off a routine taskThe job itself is the same.A person still stocks a car in and still approves a cleanup request. They no longer have to hunt for the record, switch between tabs, or check the same thing twice.
The hour a day and the 40 per cent are my own estimates. I worked them out by comparing the steps a person took in the old process with the steps the platform asks for. Neither was measured in use.
The problem behind the brief

The brief was to replace the spreadsheets. They were accurate, though. Whoever kept one was out in the lot with the cars.

What made the job hard was the number of places it was spread across. One car moving through cleanup meant a form, a sheet, a tab for the cleanup request and another for stock out. Whoever was doing it had to remember where the car had got to. Anything outside Google’s tools was done by hand. To reach the dealer system or the finance platform you picked up the phone. The tables keep the part of the spreadsheets that worked, which was colour you could read without opening anything, and put the rest on a screen people are already in.

My part

Research with service advisors, cleanup managers and reception, the model of the stages a car goes through, the table and Get Ready screens, the print layouts, and the shared set of parts they are all built from.

The team

I started with a junior UX designer I was tutoring. She left as the Cleanup module finished and Get Ready began. I carried on alone, then brought another designer up to speed. They moved to a different project soon after, and I was on my own again. Two more joined near the end. Four changes, and each one meant going back over the vocabulary and the stage model from memory.

Confidentiality

Everything on this page is a recreation. The client is not named; their branding, real identifiers, customer data and internal documents are replaced with fictional equivalents built for this portfolio. Figures appear only where they describe my own process, and anything commercially sensitive is left out.

The platform’s own name is confidential, so “Vehicle Operations Platform” is my description of what it does. The marque, vehicle identifiers, branch names, customer records and staff names on these screens are invented, though the screens behave the way the real ones do.

Field research

The situation

Each store had its own way of working: its own forms, its own spreadsheets, its own process. Everything reached the same place at the end, but each store got there differently, and almost nothing was standard across the group.

The spreadsheets updated live, so that was not the problem. The problem was how many places a person had to look. On an ordinary day someone here worked across ten or more open tabs: cleanup request forms, stock in, stock out, and the sheets behind them. The number of clicks, scrolls and tab switches depended on how many of those tabs the task touched, and anything the screens did not show was remembered. The work was spread out, and keeping track of it took attention people needed for the rest of their job.

The work was done in three places, and a single job usually touched all three.
The lot spreadsheetWhere the car physically was, who moved it, and what it still needed. Colour-coded by hand, read at a glance.
The service queueCleanup and prep requests, in separate forms, each defining finished differently.
Everything outside GoogleThe dealer system and the finance platform. No sheet connected to either, so the information was passed on by phone.
Four things the old way could not do. Most of the project’s value came from these four.
by handWork that had to be done by handExporting reports, raising invoices, and emailing both to accounting, which runs on a different platform. A Get Ready job added after the original request had its cost worked out by hand as well. Assignment was manual too. The cleanup manager handed every job to a cleaner and every move to a driver, by phone or in person. He kept his own paper record of who had what.
unmeasuredNothing was measuredHow long a request took to be acted on, how much each store got through, and where work piled up. None of it was recorded, so there was no way to see who was doing well or where the delays were.
no logNo record of who did what, or whenWith no log of who did what, a delay could not be traced. It was argued over instead of checked.
store by storeRoles defined store by storeEvery dealership used Google Groups in its own way to define its employees, their roles and their ranks, so the same job title could mean different permissions at two stores.

What replaced it is one platform of five modules (Garage Register, Get Ready, Cleanup, Sales and Admin), opened from a landing dashboard once you sign in. Most of this page is the Garage Register: stocking a car in, its record, documents, licensing, stocking it out, and the compliance audit view the group’s provincial vehicle-sales regulator requires.

FIG 02The landing dashboard after signing in: the modules this account can open, beside the group’s announcement slot.Recreated for this portfolio. The group is not named and the announcement is invented.
Discovery

User feedback

The project started on a big shared board, not in a design file. We mapped the existing operation step by step across five dealerships and one cleanup centre, from a car arriving on a truck to a customer being handed the keys. Next to it we wrote down the tool they already had: a form feeding a read-only spreadsheet with four tabs, exactly as it worked in practice, including its standing instructions.

What changed the design came out of remote working sessions with the people doing the job: service advisors, cleanup managers and dealership receptionists. This was not lab research and there is no sample to quote. The people who would use it said what went wrong, in their own words. Two of them are quoted below.

One of the things that came out of those sessions was about blame. When a car was late, cleanup was usually blamed, because cleanup is the visible stage: the car is parked there and clearly not finished. A cleanup manager often has less information than anyone else involved. Cars arrive with keys and nothing else, requests are changed afterwards by someone they never speak to, and there is no view of what is coming next week. The delay usually started earlier, and there was no way to show that.

If the car on queue and there is driver to pick it up and bring it to the cleanup center. And no team assigned yet. But the service advisor made adjustment on the cleaning request and added more cleaning service, in this case I’ll not be able to know what changes were made!
Cleanup managerVERBATIM
If i received a car by 4pm and the cleaning process takes 2h and an extra cleaning request was added to the existing one, normally i inform the manager that it will take more time but still will be received by today. And then the responsible cleaner will work on it and all hours will be calculated.
Cleanup managerVERBATIM

This is why the platform records who did what, and when. A cleanup manager can show that a delay started before the car reached them. A request that is raised and then changed is recorded, so the change can be checked instead of disputed.

FIG 03Stock History: every car with its latest event, who caused it and when.Recreated for this portfolio. Names and stock numbers are invented; the VIN is masked in the design itself.

One finding changed a whole module. A car finishes cleanup, a driver brings it back, and the keys end up on a sales manager’s desk, and some go missing there. Each store had handled this differently: a biometric key cabinet at one, a wooden board with names written on it at another. We could not change the buildings, so the system keeps the record instead. Key status sits on the vehicle. Reception ticks a box to confirm the keys came back before the row is archived. The driver's name is recorded at handover.

We also kept a list of the questions nobody had answered yet: whether cleanup needed a digital check-in, how signing in and roles would work, what factory invoicing should block. Each was written as the decision it would settle rather than as a topic, so it could be closed with an answer.

Model definition

One record, three sets of states

Three of the five modules keep a vehicle record, and each needs different information from it. The register holds what the car is to the business: stocked in, stocked out, delivered, or void. Get Ready holds what still has to happen to it. Cleanup holds what the cleanup centre is doing with it.

So each module has its own set of states, and nobody is shown one they have no use for. A stocked-in status is not shown in Cleanup, and a cleaning status is not shown in the register. The one state that appears twice is the handover: Get Ready sets Ready For Cleanup, and that is the state Cleanup picks the car up in.

Each module also has its own way of writing off a record. The register voids a car. Get Ready cancels a job. Cleanup can do either, and can also mark a request as a duplicate. A duplicate is not the same as a cancellation, and duplicates only happen where requests are raised.

Garage RegisterWhat the car is, for the business
Stocked InStocked OutDeliveredVoid
Get ReadyWhat still has to happen to it
Ready For ServiceIn ProcessReady For CleanupCleanup OngoingCleanup DoneCancelled
CleanupWhat the cleanup centre is doing with it
Ready for CleanupReceivedIn ProcessCompleteDuplicateCancelled
Ringed: the one state two modules share. Get Ready hands a car over by setting Ready For Cleanup, and that is the state Cleanup picks it up in. Everything else belongs to one module only.
FIG 04The same car in Cleanup: who is assigned, what was asked for, when it was promised.Recreated for this portfolio. Names, identifiers and the marque are invented.
Interface design

The register, and the modules around it

Each team opens the module it works in and sees the same car the others see. Every action on a car is recorded against the person who made it: the vehicle record shows the last one, and the log shows all of them.

Cancelling a job, sending a car back to stock in and voiding a record each ask for confirmation, and say plainly that the action cannot be undone. The machines are shared, but each person signs in with their own account, so an accidental change is recorded under the name of whoever was signed in.

It is a desktop system, and that was deliberate. Almost everyone here works at a desk for hours, so the tables are dense: many rows on screen at once, small buttons, keyboard shortcuts assumed. Drivers are the exception. They move cars between stores all day and never sit at a desk, so their screen is built for a phone. The rest of the system stays on the desktop.

The cleanup manager no longer assigns anyone. The client asked for that. A car joins a queue the moment a dealership requests it, soonest delivery date at the top, and a driver takes the next one down. What the driver’s page shows is deleted five minutes later. He can still mark a car picked up. He just does not decide who goes.

FIG 05The vehicle record: everything about one car on a single screen, with the right-hand edge cut off.Recreated for this portfolio. Everything identifying is invented.
FIG 06Stock In opens over the register, so the list you were working from stays behind it.Recreated for this portfolio. Every value in the form is invented.
Interface language

The look changed twice

The first build used Material Design, because the client asked for it by name. After the first module shipped they said it felt dated and asked for something more modern, and they were right, though not for the reason they gave: that library is built for consumer apps, and its shadows, spacing and animation are wrong for a table somebody reads for eight hours.

So we evaluated alternatives and rebuilt on a variation of shadcn/ui, drawing most parts from scratch. That component set was then used beyond this project. It became what the reseller platform was built from, and later an internal design system.

Trade-offs

Key decisions

Three decisions, below. The first two settled an argument between two groups of users who both had a case. The third was mine, and it was wrong.

Decision 1

Edit in the row, not in a modal

Lot managers wanted spreadsheet speed; compliance officers wanted a form that could not be half-filled. Simple attributes like status, location and tag could be changed straight in the row. Documents, notes and anything that has to be traceable stayed on the car’s own page. The table therefore has two ways of editing, deliberately.

Decision 2

Colour the row, then colour the control

The first build coloured whole rows. The spreadsheets being replaced were colour-coded by row. That is how staff had learned to read hundreds of vehicles. Keeping it meant the table worked on day one for someone who had never been trained on it. When the interface was rebuilt on our own system, the colour moved. Status became a tinted control inside the row. The rows alternate between white and a light grey. Rows can still be read by colour, and a screen of forty vehicles is no longer filled with it.

Rejected direction

Individual salesperson dashboards

I designed per-person activity views, targets and a leaderboard. Targets are set at store level, so the per-person numbers were an invention of the interface. Dropped, and the leaderboard changed to percentage of store target, taken from the group’s own commitment sheet.

FIG 07Key status and vehicle status are controls in the row. Anything auditable happens on the record instead.Recreated for this portfolio. The values in the row are invented.
N25TA118MERIDIAN CANADA INC.2024, MERIDIAN, ARCA (CV) LAND, NEW

An animated loop of one register row moving through Stocked In, Stocked Out and Delivered. The row tint and the status control change together. The same information is written out in the vehicle-states panel earlier on this page.

FIG 08One row, looping through the three states a car passes before it leaves. Stops for anyone who has reduced motion switched on.Recreated for this portfolio. The values in the row are invented.
Testing

What testing changed

Ten rounds of testing ran throughout the project, remotely, with the people who would use it. One was what the front-desk lead called a chaos test: several receptionists working the same screens at once, at the volume of a real delivery morning. It was the first time the system was used by more than one person at a time, and that changed what we found.

By the later rounds the problems listed at the top of this page were no longer coming up. No tab switching, no work done by hand, no missing record of who did what. What came up instead were ordinary usability problems, and those were fixed in turn. This is what testing showed, not what a store has reported. The system is still in deployment testing and has not shipped.

Most of the changes were about physical things: keys, paper and the desk itself.
A VIN search that matches how people read a VINStaff identify a car by its last digits, never the full seventeen, and the length they quote depends on who they are talking to. The record copies the whole VIN, the last seven or the last ten, and the search takes any of them, so nobody retypes seventeen characters to find a car.
A sign-out button you can findOne machine at the desk, a different person on it every hour, each signing in as themselves. The risk is that someone forgets to sign out and the next hour’s work is recorded under their name. Signing out is therefore a red button at the bottom of the sidebar, under the name of whoever is currently signed in, rather than an item inside an account menu.
Fewer buttons on the detail viewTesters described the detail screen as too many buttons. Secondary actions were grouped and demoted; nothing was removed, but the screen now has one obvious thing to do.
Copy the last seven or the last tenNobody reads a VIN out loud in full. The record copies all seventeen digits, the last seven or the last ten, because those are the lengths people quote to each other.
FIG 09The VIN row of the record. The highlighted digits are the tail people read; the three buttons copy the whole VIN, the last seven, or the last ten.Recreated for this portfolio. The VIN is invented.
Signing in and signing out on a shared terminalThe terminal at the desk is shared; the account is not. Whoever is signed in has their name at the foot of the navigation, with a red sign-out button right under it rather than an item buried in a menu. The risk here is someone walking away without signing out, not someone trying to break in.
FIG 10The foot of the navigation.Recreated for this portfolio. Staff names are invented.
Retrospect

What I’d do differently

The brief was three months and narrow. The project has run two years and the scope is still growing. We were helping the client work out what they wanted as we went. It started with three days to mock up a “what if we built this for you” version. They accepted it. Most of what I would do differently comes from that.

None of these are about a screen. They are about the order things were done in, and about not planning for a project that was always going to grow.

four things I would change
order of work
Build the register first, not the cleanup moduleThe project manager wanted the cleanup module first. The scope was narrow, the timeline was short, and a cleanup manager was the one person we could test with, so it was a reasonable choice at the time. But cleanup is the last step before a car is stocked out, and the register is where a car’s record starts. Building the last step first meant the earlier steps had to be fitted to it afterwards. I should have seen that sooner, and I should have argued against it.
working with the client
Open a shared workspace on day oneApprovals and feedback ran over email, which is too slow for working a design out with someone. Halfway through I suggested a shared Google workspace so we could work through ideas in a day instead of a week. It should have been there from the start.
planning for growth
Design for a scope that will growWe did not know how large this would get, so each section was designed to the scope of that moment, then reopened and redesigned when the scope changed. With this client the growth in scope was predictable. I would design for it from the beginning instead of treating every expansion as a surprise.
standards
Build the design system alongside the productThe rules were not written down. That was manageable with one other designer. It was not manageable once people kept arriving and leaving. Three separate handovers, each one me explaining the same conventions again, with no written source to refer anyone to. Starting the design system properly came late, and catching up cost more than building it early would have.
Next projectReseller Licensing Ops