Car service network, 40 branches
Forty paper calendars replaced by one availability engine — front desks take 60% fewer calls and online bookings are up 88%.
Where we started
Forty branches booked customers however each one found convenient: 33 workshops kept a paper calendar at the front desk, five used a spreadsheet on a shared drive, and two ran a Windows application from 2011 whose vendor no longer exists. Head office had no visibility of bay utilisation — the only data arrived monthly from the parts system and covered components consumed, not time sold. The largest branches took 110 to 130 calls a day with an average call length of 4 minutes 20 seconds. Roughly one in three of those calls was somebody asking whether their car was ready, not a booking or a sale.
Online booking technically existed: the network site had a contact form that sent a message to a shared branch inbox, from which somebody was supposed to call back and agree a slot. Median response time was 6 hours, and 34% of submissions never received a reply at all, because during busy periods the inbox was simply ignored. Meanwhile each branch manager ran their own Google Business Profile: 11 locations had duplicate profiles, 17 had wrong opening hours, and three listed an address from before a relocation. The network was paying for campaigns that drove people to listings giving them out-of-date information.
The hardest part, though, was the absence of a shared vocabulary. The same job was called 640 different things across the network — front pads, front brake pads, brakes front set — with different durations and different prices depending on the region. Capacity was planned per mechanic, even though the real bottleneck is the lift bay: a workshop with six mechanics and three lifts cannot service six cars at once. Without a normalised service catalogue and a capacity model, no shared booking system would have had anything to calculate.
What we did
- 01
A service catalogue and a capacity model
We collected 640 service names from every branch and reduced them to 128 catalogue entries with consistent descriptions, standard durations and required resources. Prices were regionalised into three pricing zones rather than unified across the network, because trying to harmonise rates everywhere would have stalled the project at regional management level. The planning unit stopped being a mechanic and became a bay: each service reserves a bay type for a defined duration, with a mechanic assigned as a secondary resource. This stage took nine weeks instead of the planned four, and it is the part that decided whether everything else would work.
- 02
A booking app with a real availability engine
The front end is Next.js, the data sits in PostgreSQL, and free slots are computed by an engine that accounts for bay type, mechanic skills, standard job duration and buffers for vehicle handover. Customers pick a branch, a service and a slot in three steps with no account required — we offer the account after booking, which lifted funnel completion by 23% against a version that demanded registration up front. Front desks work in the same system in a day view and can manually override any slot, because without that escape hatch the workshops would not have accepted the tool. Availability is computed live over a 90-day horizon and branch calendar queries stay under 120 ms.
- 03
A mobile app for drivers
We built the app in React Native with Expo: customers see repair status in four steps, their vehicle's service history, and reminders for inspections and seasonal tyre changes. The most useful feature turned out to be additional work approval — the mechanic sends a photo of the worn part with a quote, the customer approves with one tap, and the workshop does not lose 20 minutes trying to reach somebody who is at work. A push notification when the car is ready removed most of the status calls from the front desk on its own. The app was installed by 31% of customers who book online, which is less than the client hoped for but enough to show up clearly in call volume.
- 04
Forty location pages and a listings cleanup
Every branch got its own page with unique content: brands serviced, workshop equipment, photos of the floor, public transport directions and the team by name. We deliberately avoided templated text — 40 near-identical pages are the fastest route to cannibalisation and weak local rankings. All Google Business Profiles were consolidated under one owner account, 11 duplicates were merged, names and categories were normalised, and opening hours are now synced from the booking system through the API so they stop drifting. After each completed visit the system sends a review request with a 48-hour delay, which took the network from 2,100 to 6,800 reviews over the year.
- 05
Rolling out in waves, not in one switch
The pilot covered three branches of different sizes and ran alongside the paper calendar for six weeks — we accepted the duplicated effort deliberately, to find gaps in the availability model without putting customers at risk. Subsequent branches went live in waves of five, each with two days of on-site training and a week of chat support from our team. Six workshops, mostly those with the longest-serving managers, resisted until head office tied part of the bonus to a bay utilisation metric that only exists in the new system. Two branches took three times longer than average because they ran a separate fleet servicing operation with entirely different billing logic that was not in the original scope.
Results seven months after full rollout
Inbound calls to front desks fell 60% per service visit, and average call length dropped from 4 minutes 20 seconds to 2 minutes 50 seconds because status conversations largely disappeared. Online bookings went from 12% to 41% of all visits, which in absolute volume is an 88% increase. For the first time head office can see bay utilisation in real time: the network average is 71%, and the 34 percentage point spread between the best and worst branch turned out to be far wider than anyone assumed.
No-shows fell from 19% to 7% after we added an SMS reminder 24 hours out and a push notification 2 hours out; the SMS accounts for most of that effect and push added roughly 2 percentage points. Traffic from Google Business Profiles grew 54% in direction requests, although three branches in smaller towns saw no change at all — local search simply does not generate demand there, and we carried that conclusion into how the advertising budget is now allocated. Mobile app adoption plateaued at 31% and we see no realistic way to move it much higher: most customers visit a workshop twice a year and have no reason to keep an app installed.
- −60% front-desk calls per service visit
- Online booking share 12% → 41%, an 88% volume increase
- 40 branches onboarded in 7 months, in waves of five
- No-show rate 19% → 7%
- 640 service names reduced to 128 catalogue entries
- Google reviews 2,100 → 6,800; direction requests +54%
For the first two months every manager told me the system did not understand how a workshop works. One in five was right, and those points went into the backlog. The rest went quiet once we showed them how many hours their lifts stand empty on Tuesdays.
Work
See all →D2C home furnishings brand
A furniture and home accessories brand was stuck on a WooCommerce build that took six seconds to render a product page on mobile. We moved the front end to Next.js, rebuilt the product feed and restarted the Google Ads account from zero.
Read the case studySaaS · B2BB2B SaaS platform for workforce scheduling
A four-year-old B2B product grew entirely on outbound and paid, with 900 organic sessions a month to show for it. We rebuilt the information architecture, built four topic clusters and made the multilingual setup actually work.
Read the case studyIt starts with an audit
Tell us in two sentences what you want to achieve. We reply within one business day.