Joel Mercerproduct engineer
Placeholder photo: a MacBook on a desk with code on screen

Halyard.

Quoting a shipment without picking up the phone.

Halyard moves palletised freight for manufacturers across the UK and Ireland. When we started, their website could take a booking in theory. In practice, everyone rang.

clientHalyard, freight softwarerolesole engineer, with Halyard's ops leadstackrails, postgres, hotwireyear2023, four months
82%of quotes now priced and booked self-serve
60 secfrom route to a bookable price, was a next-day email
£1.4mof freight booked online in year one

The problem

Booking a shipment through Halyard's site meant a form with a field for everything any customer had ever needed. Tail lift? Dangerous goods class? Most customers gave up partway and rang the office instead, and the sales team had started apologising for the form on those calls.

The deeper issue was pricing. Rates lived in a spreadsheet only two people understood, so even a completed form couldn't show a price. Quotes were assembled by hand and emailed back, usually the next day. A customer comparing three carriers got two answers and a silence.

The approach

I spent the first week on the phones, listening to bookings being taken. The sales team asked about six things, in roughly the same order, and filled in the rest themselves. That call script became the design: a short flow that asks what a human would ask, and defers everything else until after a price is on screen. Four steps, and that is the whole idea.

The rewrite shipped incrementally, behind feature flags, to a slice of friendly customers first. No big-bang release, no migration weekend. When a step embarrassed us, we found out from twelve customers instead of all of them.

The pricing spreadsheet moved into the product as plain rate tables the ops lead edits herself. That was the least glamorous work of the project and the most valuable: once pricing lived in the system, an instant quote stopped being hard.

Stack-wise, nothing clever. Halyard already ran Rails and Postgres, so it stayed Rails and Postgres. The one addition was Hotwire for the quote screen, so the price updates as you change the shipment without a page reload.

The outcome

Most customers now quote and book without ringing the office. Not all, and that's fine: awkward, heavy or hazardous shipments still deserve a call, and now the sales team's day is made of those calls rather than retyping simple bookings.

Price changes go live in an afternoon instead of waiting for a release. And when a big manufacturer tenders for a freight partner, Halyard demos the booking flow live, which the sales director tells me has changed the tone of those meetings.

Looking back

I'd move the pricing tables first, not third. We spent two sprints building a nicer form in front of a spreadsheet that still couldn't answer it. The lesson has followed me to every project since: fix where the answer lives before you fix how the question is asked.

The phone still rings at Halyard. Now it's the complicated shipments, which is exactly what a sales team is for.

kate brennan, ops lead, still edits the rate tables herself

next case study

Sable & Rowe

colours