ACV Transport · Off-platform quote engine

Shipping a car shouldn't
start with a guess.

How I redesigned ACV's transport quote engine around what dealers actually need to book.

Role Lead product designerTeam ACV TransportUsers DealersStatus In build

Problem

Dealers picked a transport type before the system knew anything about their cars. If that option wasn't available, they hit an error and started over.

Solution

A quote that prices every option live as VINs are added, breaks costs down by vehicle, and only offers what can actually be booked.

Results

In build. We'll measure validation errors, Enclosed and Drive My Car bookings, and quote-to-order conversion.

ACV Transport quote engine screens

01 · The problem

Pick first, find out later.

Dealers got transport quotes from a cramped side drawer. Before entering a single VIN, they had to pick Open, Enclosed or Drive My Car from a toggle. Nothing had been checked yet, so choosing Enclosed for a car that couldn't ship enclosed led straight to an error. Back up, try again, hope for the best.

Pricing wasn't much clearer. Dealers saw one total with no way to tell which car was driving the cost. And because the toggle was hard-coded, there was nowhere to add expedited delivery without squeezing a fourth button into a control that was already overpromising.

02 · How I led it

The flaw was in the flow.

The evidence was already there. I audited every point where a quote could fail and found the root cause: a form asking dealers for a decision before it had the information to support it.

From there, I worked with my PM, dev manager, and front-end and back-end engineers to redraw it so pricing happens first. Together we landed on an approach that prices every option without bogging down the dealer's browser, and made sure no failure case ended in a dead end.

Updated quote flow: pricing every option before the dealer picks one
The updated flow. The biggest change: price every option before asking dealers to pick one.

03 · How it works

Prices that keep up with you.

We flipped the order and made it live. As soon as a dealer adds zips and a VIN, the backend prices every service type, and each new VIN updates the quotes in real time. Dealers watch their options take shape as they build the order, then choose at the end.

01Show every option up front

Each service type is its own card with a price, ETA and what's included. Expedited didn't need its own button; it lives inside Open as a same-day upgrade. When Transport adds a new service, it's just another card.

02Every vehicle, itemized

Each car shows its own cost, so one oversized SUV can't hide inside a 30-car total.

03Stop errors before they start

Most errors are caught as a VIN is entered, before the dealer ever hits submit. The ones that can't be caught early show up on the vehicle that caused them, with a clear next step.

A cleaner wholeA full-page flow, an address book for saved zips, bulk VIN upload and a shorter path to a confirmed order.

04 · The full flow

Quote to confirmed order, in five steps.

Try the prototype (opens in a new tab)
Start a quote: dealership, zips and VINs
Step 1 of 5

Start a quote

Pick a dealership, add pickup and delivery zips, and drop in VINs one at a time or in bulk.

Live quote cards for Open, Enclosed and Drive My Car
Step 2 of 5

Compare live quotes

Prices update live as each VIN is added, so dealers see every quote upfront.

Contacts, addresses and gate pass upload
Step 3 of 5

Add contacts + files

Pickup and delivery details pull from the address book, and gate passes upload in one spot.

Order review with per-vehicle costs
Step 4 of 5

Confirm the order

One last look at per-vehicle costs, fees and delivery details before booking.

Order created receipt with order ID
Step 5 of 5

Order created

An order ID and a full receipt the dealer can save, print and track against.

Sample error states

On the vehicle

Invalid, duplicate, already shipping or still in Marketplace. Each VIN tells the dealer what went wrong and what to do.

VIN error states shown on each vehicle card
On the price

When a quote can't be calculated, prices fall back to “$ –” with a clear next step instead of a dead end.

Unable to calculate quote state with prices shown as $ –

05 · Currently...

In build. Here's how we'll know it worked.

↓ ErrorsVIN and service-type validation errors
↑ BookingsQuotes that turn into booked orders

06 · What I'd tell you

Don't underestimate the simple flows.
Great experience starts even at the smallest project.

The flows that look simple are the ones people overlook most often, and that's where small details decide whether someone trusts the product. Give every flow the same care, no matter how small the project is.

More case studies

Thanks for reading.

Head back home, or browse the rest of my work.

Back to top ↑