Price lists that quote themselves
By navichain team

Most carriers have a price list somewhere. A spreadsheet with a tab per customer, a laminated zone map behind the dispatch desk, a PDF a salesperson sent a customer two contract renewals ago. The list itself is rarely the problem — someone did the work of setting rates by zone, by weight, with a minimum and a set of surcharges. The problem starts the moment somebody has to apply it correctly, from memory or from a table with six tabs, in the thirty seconds between two phone calls.
A lookup table is only as good as the lookup
A carrier’s price list is rarely one number. It is a zone matrix — this origin zone to that destination zone — crossed with weight breaks, so the rate per kilo steps down as the shipment gets heavier. Underneath both sits a minimum, because a ten-kilo parcel still costs a stop, a driver’s time and a slot on the truck even when the weight-break rate would price it at almost nothing. On top sits a set of surcharges — fuel, a remote postcode, a tail-lift, dangerous goods — that apply or don’t depending on facts the person quoting has to notice and remember to add.
None of that is complicated in isolation. It becomes a lookup problem the moment a real shipment sits near a boundary: a weight that rounds either side of a break, a postcode that could plausibly belong to either of two zones, a customer contract with an exception nobody wrote into the main table. A price list read correctly nine times out of ten by a careful person is still a price list that quotes two different numbers for the same shipment on the tenth read, and nothing about that tenth read looks wrong from the inside. It looks like an ordinary quote.
“Call for a quote” solves the wrong half of the problem
Faced with that, most carriers draw a line: standard shipments get a published rate, anything that looks complicated gets “call for a quote.” It is a reasonable-sounding rule that gets the trade-off backwards.
The shipments that fit cleanly inside one zone and one weight break — the small, ordinary ones — are exactly the shipments a customer is least willing to pick up the phone for. A ten-pallet weekly lane justifies a phone call; a single box does not, and a customer who has to call and wait for a human-read quote on a shipment worth a few hundred kronor will often just not book it, or will book it with whichever competitor answers the phone first or publishes a number on a page. Adding friction here loses volume at exactly the end of the business where volume is the only thing that makes the margin work.
Meanwhile the shipments that genuinely need judgment — multi-drop, several weight breaks in one consignment, three surcharges stacking, a customer contract with a negotiated exception — are the ones handed to a person doing mental arithmetic across several tables while a customer waits on the line. That is precisely the situation most likely to produce a wrong number, and the two ways it goes wrong are both expensive: quote low and the shipment loses money the moment it is confirmed; quote high and a customer who checks around finds out, and the next tender goes elsewhere. “Call for a quote” routes the easy cases into friction and the hard cases into a rushed human doing the arithmetic the system should be doing.
Consistent pricing is not a discipline problem
The instinctive fix is more care: train the team, double-check anything near a boundary, keep the spreadsheet tidy. That helps, briefly, and it does not hold. Attention is not a control — the same experienced dispatcher who reads the zone matrix correctly all morning will misread it once, usually on the call that came in while they were already mid-way through another one. A price list that depends on a person noticing every weight-break boundary and remembering every applicable surcharge, every time, for every customer’s own version of the table, is a price list that will eventually be misread, and there is no amount of care that removes that eventually.
What actually holds is moving the zone matrix, the weight breaks, the minimum and the surcharges out of a document a person reads and into data a system applies — the same inputs producing the same number regardless of who is raising the quote, whether that is an operator on the phone, a salesperson quoting from memory, or a customer typing a shipment into a form themselves. That does not remove the need for a price list to be right; it removes the need for a right price list to be read correctly under time pressure, which is the step that actually fails. A stale price list applied consistently is still wrong — consistently wrong, in a way that is at least visible and correctable, rather than wrong on whichever call happened to land on the wrong tab of the spreadsheet. The list still needs an owner who revisits it as costs and zones change; consistency buys you a system that applies today’s list exactly, not a system that never needs a new one.
Where navichain stands
This is what a price sheet is for in navichain: per-customer price sheets, priced by weight, distance, time or geographic zone, held once as data rather than as a spreadsheet with a tab per customer and a memory of which tab is current. A quote drawn from that sheet goes from price sheet to posted invoice with no spreadsheet in the middle, so the number a customer is quoted and the number that eventually appears on the invoice are read off the same table rather than reconciled after the fact. And because a quotation becomes a booking on confirmation, with no re-typing between the offer and the job, the cases that genuinely do need a person to look — the multi-drop, the negotiated exception — do not cost a second round of data entry once that person has decided the number is right. The rest never need “call for a quote” at all: the same price sheet that produces a consistent number for a dispatcher produces the same number for a customer raising the shipment themselves.