AI Freight Quoting: Turn Customer Emails Into Draft Quotes

Coding Liquids tutorial cover featuring Sagnik Bhattacharya for AI Freight Quoting: Turn Customer Emails Into Draft Quotes.
Coding Liquids tutorial cover featuring Sagnik Bhattacharya for AI Freight Quoting: Turn Customer Emails Into Draft Quotes.

A freight forwarder can use AI to read an enquiry, extract the shipment details, find matching rates in an approved rate sheet and draft a quote. Keep the lookup and arithmetic traceable: route, mode, weight or volume, effective date, surcharges and margin rule must be visible. A person should confirm the service scope and approve the price before the email goes out.

The common failure is a credible-looking quote based on an incomplete enquiry. An AI model may fill a missing collection point or treat a rate that expired yesterday as current. Make “information missing” a legitimate outcome. A fast clarification is cheaper than an attractive price that the operations team cannot honour.

Follow me on Instagram@sagnikteaches

Define what counts as a quoteable enquiry

Choose a narrow starting service, such as one mode and a small set of repeat lanes. List the fields required to select a rate: origin and destination points, collection and delivery scope, cargo description, pieces, gross weight, dimensions, date, service level and any special handling. The exact fields vary by your service and tariff. Do not build an “all freight” intake form before observing the types of emails the desk actually receives.

Connect on LinkedInSagnik Bhattacharya

Keep the customer's original email and attachments linked to the request. AI can propose a structured record, but it should quote the phrase that supports each extracted value. If the email says “four pallets, around 800 kg” and an attachment says “five pallets, 920 kg”, flag the contradiction. Do not choose the more convenient number. The salesperson can ask a precise question and update the record when the customer confirms.

Subscribe on YouTube@sagnikteaches

A useful distinction is between a draft quote and a priced offer. A draft may contain confirmed facts, open questions and candidate rates. A priced offer has a reviewed scope, valid source and authorised margin. The system should display those states clearly. An email composed by AI must not sit in an outbox where one accidental click sends an unfinished price.

For a wider look at forwarder use cases, what AI handles well in freight forwarding sets the context. This tutorial concentrates on one controlled path from customer email to approved quote.

The Complete Excel Course with AI Integration thumbnail

The Complete Excel Course with AI Integration

From formulas and pivot tables to Power Query, DAX, VBA and AI with Copilot, ChatGPT and Claude — hands-on from the first lesson.

By Sagnik Bhattacharya and Virginia Thorn, Primetime Emmy Award winner

Buy now

Extract the shipment without filling the blanks

Give AI a fixed extraction schema and a rule to return UNKNOWN for absent values. Include the source phrase and page or attachment name for each field. Also capture the customer's requested response date and any stated constraints, such as a delivery appointment or restricted access. A commercial team can then see whether it has enough information to ask carriers or use a stored tariff.

Illustrative extraction instruction:
Read this customer enquiry and its attachments. Return origin,
destination, collection scope, delivery scope, mode, cargo,
pieces, gross weight, dimensions, ready date, deadline and
special handling. Quote the source text for each value.
Write UNKNOWN where absent. Flag contradictions. Do not
calculate a rate or write the customer reply yet.

An illustrative enquiry reads: “Please quote three crates of display stands, total 620 kg, ready next Tuesday. We need delivery to our warehouse before month end. Please include collection.” The output can capture three crates, 620 kg, collection requested and a relative ready date. It cannot infer crate dimensions, origin, exact warehouse address or whether the stated deadline fits the service. A reply should ask for those fields rather than generate a plausible all-in figure.

A separate example concerns terms. “Door to door” may sound complete, but it can conceal unloading, storage, customs work or a timed appointment. Ask the customer what is included in the requested service and compare it with your standard scope. AI can highlight terms that appear in the email; it must not interpret them as an agreed contract without human review.

Make the rate sheet searchable and date aware

Store rate rows with carrier or provider, lane, mode, equipment or weight band, service scope, currency, base amount, surcharge rules, minimums, issue date, effective dates and source document. Freightos's forwarder software, for instance, describes quoting from live rates, surcharges and account-specific markups held in one rate-management system; that establishes a possible software category, but a small firm can pilot with a controlled spreadsheet and manual approval. The critical requirement is one current source of truth, whichever tool holds it.

Rate extraction from PDFs is error-prone where tables have merged cells, footnotes and separate surcharge pages. Have a person compare extracted rows against the original. If one column heading says “per shipment” and another says “per unit”, a tidy spreadsheet can still be economically wrong. Rate-sheet extraction from carrier PDFs covers the upstream preparation in more detail.

Make expired rates unavailable by default. A row without a clear effective end date should not be silently assumed perpetual; mark it for confirmation based on the supplier's terms. Keep each revision rather than overwriting the old row, because you may later need to explain what was quoted on a particular date. The quote record should retain the source file and selected rate-row identifier, not just the final number.

Rate fieldIllustrative valueReviewer question
Lane and serviceDepot to depot, standard serviceDoes the customer require collection or delivery?
Base rate$480 per shipmentWhich source row and validity dates?
Fuel surcharge8% of baseIs it current and applied to the right items?
Handling$35 fixedDoes the service scope include it?

The values above are illustrative, not carrier prices. Their purpose is to show why a candidate rate must be accompanied by its basis. If the customer's request is door to door, a depot-to-depot row is not a match merely because the lane names look similar. The system should say “no matching all-in rate” and ask a person to source the missing legs.

Apply margin rules as arithmetic, not prose

Once a rate is genuinely matched, compute the buy cost from base rate, applicable surcharges, collection, delivery and other confirmed charges. Then apply the firm's approved pricing rule. State whether the rule is markup on cost, gross margin on sale price or a fixed contribution. Those are not interchangeable. Keep the calculation in a spreadsheet or quoting system where it can be inspected, rather than asking a language model to remember the rule from a paragraph.

The main illustrative worked example is a repeat lane request for two standard pallets. The current approved buy rate is $480, fuel surcharge is 8% of the base ($38.40), collection is $70 and handling is $35. Total confirmed buy cost is $623.40. The firm uses a 20% target gross margin on the selling price for this service, so the calculated sell price is $623.40 divided by 0.80, or $779.25. A person may round according to policy, but the system must show the unrounded basis and the final approved amount.

If someone instead adds 20% to cost, the result is $748.08. That is a 20% markup but only about a 16.7% gross margin. The difference of $31.17 on this illustrative quote is why the rule needs a formula and label. The reviewer should also check whether the 8% surcharge is applied only to the base or to other components under the provider's actual terms. AI must not decide the scope from habit.

Now add an illustrative exception: the customer asks for a timed delivery slot that costs another $90. Buy cost becomes $713.40, and at the same 20% gross-margin target, calculated sell price becomes $891.75. If the draft email still displays $779.25, the quote is stale. Require the calculation to rerun whenever a scope field changes. The approval screen should show the changed field and price difference before the salesperson sends anything.

Set floors and approval thresholds from your own business policy. A quote below minimum contribution, with an unfamiliar surcharge, or with a supplier rate expiring before the cargo is ready should route to a senior reviewer. Do not let AI “optimise” the margin by lowering it to win business without authorisation. For later analysis of whether accepted quotes produce the expected contribution, see lane margin analysis.

Draft the customer email with explicit scope

A quote template should state the customer request reference, cargo and service assumptions, origin and destination scope, price and currency, validity, inclusions, exclusions and what the customer must confirm. The exact commercial terms belong to the forwarder's approved wording and the provider's current conditions. AI can fill a template from confirmed fields and flag omissions; it should not invent an insurance promise, a transit time or a guarantee.

Illustrative draft wording: “Thank you for the enquiry for two standard pallets. Subject to the stated cargo details and availability, our draft price for the confirmed collection and delivery scope is $779.25. This draft is pending internal approval. Please confirm the ready date and whether a timed delivery slot is required.” The “draft pending approval” line is for internal review, not the customer. The final external email should use the firm's actual terms and an approved quote reference, with any unresolved customer questions answered first.

A second illustrative response shows the value of refusing a premature price: “We can prepare a quote once you confirm the crate dimensions, collection address and delivery appointment requirements. We have recorded three crates and an approximate gross weight of 620 kg; please confirm the final figures.” That reply is useful, accurate and faster than a later correction to a guessed rate.

When the quote includes several legs, present them in a way the customer can understand without exposing confidential buy rates. Internally, keep each buy component and margin calculation. Externally, show the approved sell structure and scope. The two views can derive from the same quote record, but only the authorised external view should be sent.

Build an approval trail before sending

The approver should see the raw enquiry, extracted fields with source phrases, selected rate rows, validity dates, calculation and draft email together. Ask them to confirm cargo, scope, date, rate source, charges, margin and terms. Record who approved and when. If any material field changes after approval, return the quote to draft status. A cosmetic correction to a customer's greeting need not recalculate price; a changed weight, destination or service date does.

Test a few deliberate failures. Feed the system an expired rate, a missing dimension, a contradictory attachment and a customer request for a service your tariff excludes. The desired result is a hold or clarification, not a confident quotation. In one illustrative test, an email subject mentions five pallets while the attached packing list shows six. The draft should display the conflict prominently and block a priced offer. If the model silently chooses the attachment, the review interface is hiding useful uncertainty.

Another failure is a customer asking for a quote in a currency different from the rate sheet. Do not let AI perform an unstated conversion. Use an approved exchange-rate source and policy, or quote in the rate currency with clear wording. Record the rate and date used if conversion is authorised. The same principle applies to any tax or charge whose treatment depends on the actual service and contract; get specialist review where needed.

A third case is a rate that is valid on the day of quoting but not on the planned shipment date. The system must compare the validity period with the cargo-ready and service dates. Flag it for a fresh supplier confirmation instead of assuming that a fast customer acceptance preserves a later carrier price. Keep the confirmation with the quote record.

Measure quote quality, not only response speed

Run the workflow in draft mode on a set of recent enquiries. Record time to first useful response, proportion needing clarification, rate-source errors, surcharge omissions, approval corrections and accepted-quote contribution. Review actual carrier invoices against accepted quotes to find missing charges. An invoice audit against the quote can reveal where the desk's assumptions did not survive execution.

For example, if 40 draft quotes take an average of ten fewer minutes to prepare but six need serious pricing corrections, the time figure alone is misleading. Classify those six: missing scope, stale rates, arithmetic, currency or wording. Fix the rate data or intake gate that caused them, then test another batch. If the same class persists, keep human drafting for that service while automating the safe extraction and clarification tasks.

Keep a weekly exception report with the unanswered customer fields, rate rows needing confirmation and overrides to margin rules. The pattern may show that one provider's sheets are consistently hard to parse or one customer routinely omits dimensions. Address those causes with a better supplier feed or customer request form. AI freight quoting succeeds when the team can explain every number, send a clearer response and stop an invalid draft before the customer sees it.

Give the quote desk a one-page operating instruction

A short policy makes the workflow usable when the usual salesperson is away. Define the permitted rate sources, who updates them, how effective dates are checked, the approved margin formula and which exceptions need escalation. State that customer emails and attachments are treated as evidence, while AI extraction is a draft interpretation. Give every request a quote ID even if it ends as “not enough information”, so the team can find the conversation again.

For an illustrative firm, the desk instruction might say: “Use only rate rows marked approved. Hold a request if cargo dimensions, ready date or delivery scope is missing. Apply the approved gross-margin formula after all buy charges. Escalate rates with less than seven days of remaining validity or any request involving special equipment. A salesperson reviews the customer wording; a pricing approver reviews any exception.” The seven-day threshold is an example policy, not an industry standard. Choose it from the firm's rate-change pattern.

Write down who can replace an approved rate row. A carrier email with a new surcharge may arrive after a quote has been drafted. The system should not silently apply it to every open request until a person validates the scope and effective date. Instead, quarantine the incoming sheet, compare it with the old one and flag affected drafts. An approver can then decide whether to refresh or honour each quote under the applicable terms.

Use a quote register to catch changes after approval

Keep a row for request received, clarification sent, rate selected, calculation completed, approval granted, quote issued, customer accepted and booking created. Include timestamps, not just checkboxes. This exposes a common failure: the customer changes the cargo after accepting a price, but operations sees only the original quote. The accepted service details should be frozen and compared with the booking request.

For example, a customer accepts the two-pallet quote, then sends a packing list showing three pallets. The system should create a change flag and block automatic booking under the two-pallet price. The desk checks capacity, rate band and any surcharge, then issues a revised quote or records an approved exception. Do not treat the acceptance email as authority for a materially different shipment.

Similarly, a supplier may confirm space but add a charge that was not in the original rate row. Record it as a new buy component and recalculate contribution. If the customer price cannot change under the accepted terms, the variance becomes a management decision, not a hidden adjustment in the spreadsheet. Keeping buy and sell versions separate lets the firm see where margin was lost.

Set a realistic pilot boundary

Start with one repeat lane and one service type where rate sheets are tidy and customer requests are familiar. Draft responses for a sample of historical enquiries, then compare with the quotes the firm actually sent and the invoices eventually paid. Record discrepancies, but remember that the historic quote may itself contain an error; use the source documents to adjudicate. Once the workflow handles the routine and awkward examples, extend it to another lane.

A useful pilot result might be 25 correctly extracted enquiries, four clarification requests and one blocked expired rate out of 30. That tells the team the intake is functioning. It does not yet prove the price is safe. Check the five most complex quotes line by line, including fuel, collection and delivery charges, minimums and validity. If the system cannot show the source row for any amount, keep the price step manual.

Freight quote drafting questions

Can AI quote directly from a customer's email?

It can extract stated shipment details and draft a response, but the price must come from an approved, current rate source and a checked calculation. Missing cargo dimensions, terms, accessorials or valid dates should trigger clarification, not an invented price.

Should a quote be sent automatically when the rate matches?

Begin with human approval. A correct base rate can still omit a surcharge, use the wrong validity window or assume the wrong service scope. Consider narrower automation only after you have measured these errors on real quote requests and defined exception rules.

How do I stop an old carrier sheet being used?

Store each rate with a source file, issue date, effective dates, service scope and owner. Exclude expired records from the lookup and require approval when a rate has no clear validity. The draft quote should display the rate source so the reviewer can confirm it.

Further reads

Sources: Freightos for Forwarders Sales Portal page (freightos.com/forwarders/sales-portal/); Freightos Rate & Quote product page (freightos.com/forwarders/rate-quote/).

Want your quote desk to draft from real rates?

On a 1:1 call we can map your inbox, rate sheets and approval rules, then design a draft-quote workflow with an auditable source for every price.

Book a 1:1 call with me