ADOPT AI PARTNERS
Insights / freight forwarding

AI for Sales Operations in Freight Forwarding

17 October 2026  ·  8 minute read  ·  Adopt AI Partners
a large warehouse filled with boxes
Photo via Unsplash

An enquiry arrives at twenty to ten. Two pallets of industrial pumps, collection from a town inland of the port, delivery to a named destination port, no dimensions, no gross weight, no Incoterm. The customer wants a figure today and is asking three forwarders. The analyst has a dozen more of these open and a carrier tariff that changed on the first.

Three lines of email and a price due by five

Almost no spot enquiry contains what pricing needs. The number depends on commodity and tariff heading, packing, piece count and dimensions, gross weight, stackability, dangerous goods classification, collection postcode and site access, ready date, Incoterm, port or door delivery, who clears customs, and insurance. Three of those and a town name is not a quote request.

An agent can read the thread and its attachments, extract what is present, normalise units, and return a structured quote request naming each missing field with a one-line reason why it moves the price. It can also tell when the enquiry is really a booking against a rate the customer already holds, and route it accordingly.

A rate base built from spreadsheets nobody designed for you

Buying prices arrive from three directions: carrier tariffs and contract rate sheets, agent rates for the destination leg, and haulage tariffs for the inland movement. They come monthly, as spreadsheets and PDFs, in formats that change without notice. A column shifts, a tab appears, port names are spelled out one month and UN/LOCODE the next, and a per kilo weight break becomes a flat minimum.

An agent can ingest these into the rate table, writing for each line the origin, destination, equipment type or weight break, currency, service, routing, validity dates, and the file and row it came from. A rate you cannot trace to a source document is one nobody will defend when the carrier invoice disagrees. Rows it cannot map confidently go to a person rather than a guessed column.

team meeting around a conference table
Photo via Unsplash

Exclusions and minimum quantities sit in the footnotes

The conditions that decide whether a rate is usable sit in the notes at the bottom, the covering email or an addendum, not in the grid. Validity windows ending mid month. Named account exclusions, where the sheet excludes the one customer you wanted it for. Minimum quantity commitments. Subject to space and equipment. Excluded commodities. Rates valid only via one transhipment hub.

An agent can capture those as structured conditions attached to the rate, so the quote build knows it is unavailable for this shipper, commodity or week. It can also compare a new sheet against the version it replaces and report what changed, which is how you notice a lane quietly gained an exclusion.

The base rate is rarely the part that is wrong

What the customer pays is a base rate plus a stack. Bunker and currency adjustment. Peak season. Congestion. Equipment imbalance. Low sulphur. Terminal handling at both ends. Documentation and ISPS. Hazardous, overweight and out of gauge handling. Inland haulage and customs entry. Then destination charges the consignee pays and the shipper never sees, where a cheap quote becomes a complaint from the far end of the lane.

Quotes go wrong at the surcharge, not the base rate. The base rate is negotiated and remembered; the surcharge is what changed two weeks ago while your spreadsheet stayed put. An agent can assemble a priced quote in which every line traces to its source, state the currency and conversion used, and mark each charge prepaid, collect or payable at destination, so the owner knows what the consignee will be billed.

Catching the expired line before the customer sees it

Three things should stop a quote going out. A rate whose validity ends before the shipment moves. A surcharge older than the publication cycle it belongs to. An announced increase covering the sailing, though not yet in effect.

An agent can check the age of every component against the intended shipment date and block or flag the build. The same watch works forwards: a list of components expiring in the next fortnight, grouped by the carrier or agent who owes you the update, means renewals get chased before quotes break.

cargo ships docked at a pier
Photo via Unsplash

Volumetric maths, and the pallet that grew at the depot

Price is charged on the greater of actual and volumetric weight, and the convention differs by mode. Air uses a fixed divisor, LCL sea trades on weight or measure, whichever is greater, and road is often loading metres or a per pallet rate. An agent can compute chargeable weight from the dimensions given, show the working, and flag when a few centimetres of pallet height crosses a weight break.

Then there is the gap between what was quoted and what was tendered. Pallets arrive taller than declared, a reweigh comes back heavier, an extra piece appears. An agent can compare the quoted basis against the measurements on the house bill and raise the requote while the shipment is still in your hands, rather than letting it surface as unexplained cost on the job file.

Hundreds of lanes, one template, three weeks

A large shipper issues a rate request across hundreds of lanes on its own template, with its own lane naming, service definitions and a deadline. Very little of the work is persuasion. Almost all of it is population and consistency under time pressure, by people who also run a quote desk.

Populating from the rate base, not from memory

An agent can map the shipper's lane descriptions to your own origin and destination codes, populate every line it can serve, apply the same assumptions throughout, and flag where the template asks for a charge structure you hold no rates in.

The lanes where cost is unproven

The real risk is winning a lane you cannot serve at the price. An agent can mark every line where cost is unproven, meaning no recent buy rate, no agent quote or a routing you have never run, so a human decides whether to price it, decline it or ask for more time. An unprofitable answer still wins the lane, and you are bound for a year.

Quoted margin and achieved margin are two different numbers

Quoted margin comes from the quote build. Achieved margin is what the job file says once everything lands. The gap has recognisable causes: reweighs, detention and demurrage, storage, a failed collection and redelivery, agent charges that were never in the quote, and currency movement between the day the price was given and the day it was invoiced.

An agent can reconcile the two per shipment and attribute the difference to a cause rather than reporting variance. Aggregated by customer, lane and trade, that is the only honest input to a rate review. It shows which accounts are priced correctly and losing money on execution, a different problem from being too cheap.

One shipper claimed by two offices and an agent

In a branch network with agents in every trade, the same shipper is often claimed by more than one desk. Two branches quote the same legal entity under slightly different names. A nominated account gives the overseas agent control. A co-load shares the revenue, and the commission split depends on who held the customer and who held the space.

An agent can keep the named account register current, resolve entities so a trading name, a registered name and an abbreviation are recognised as one customer, raise the duplicate before two quotes reach the same buyer, and prepare the commission split per shipment. Ownership stays a management argument, but the evidence underneath should not take a week to compile.

Nobody believes the quote log, and they are right

Most forwarders cannot state their quote to booking conversion, because the log is incomplete. Quotes go out by email and never get entered. Opportunities sit open months after the cargo moved with somebody else. A pipeline built on that is a guess with a decimal place.

An agent can write every quote it builds into the log, match bookings back to the quote behind them, close out quotes superseded by a revision, and ask the owner for a reason code when the record does not show whether a quote was lost, withdrawn or ignored. Conversion becomes a measurement rather than an argument.

The credit hold that arrives after the promise

The worst sequence is a price promised, a booking taken, then a credit hold. The cargo is ready, the customer has planned around the sailing, and somebody has to explain that terms are now pro forma.

An agent can surface the credit position at quote time, including unbilled exposure on open job files rather than only the ledger balance, warn the owner before a commitment on an account near its limit, and assemble the limit review request with trading history attached. Whether to extend credit remains a finance decision.

Where AI fails here

The price committed to a customer is a human decision. An agent should build it, trace it, check it and present it, then stop. Pricing carries judgement about what a lane is worth to you, what a competitor has probably quoted and what you will lose to win the rest of the account. None of that sits in the rate table.

Several other things belong with people. A rate sheet in a format the agent cannot map should go to a person, not be approximated. A new trade or a routing you have never run has no cost history to price from. A tender where the strategy is to buy a lane needs whoever owns that decision. Whether hazardous cargo is acceptable at all is a compliance question, as are restricted party and sanctions checks. Credit sits with finance, and a disputed charge is a conversation a person takes.

There is also a limit on inputs. The rate base is only as good as what reaches it, and if agents send rates buried in a mail thread, or a branch keeps a private spreadsheet of special deals, the system will be confidently incomplete. Fixing that is a working practice change no automation substitutes for.

Where to start

Pick one trade and one quote type. Load the current rate base for it, surcharge tables and conditions included, and have the agent build quotes in shadow against what the desk actually sent. Compare line by line. You will learn quickly whether the gaps are in the model or in your rate data, and usually it is the data.

Adopt AI Partners builds exactly this: enquiry reading, rate ingestion, traced quote assembly, tender population and margin reconciliation, running inside the forwarding system, rate tables and CRM your team already uses. If you recognise the quote desk described here, describe your own situation to hello@adoptaipartners.com and we will tell you what the first deployment should be.

Tell us what your teams keep redoing

One conversation is enough to say whether there is a system worth building, and what would make it fail.

Describe your process