AI Talks, Code Calculates: Who Should Price Your Freight?
Code should price your freight, not the chatbot. Let the chatbot collect the lane, weight, equipment and dates, then hand them to a calculator in code that applies your rate card, fuel surcharge and accessorials. That split lets you answer quote requests at any hour without sending a price you can’t stand behind.
Anthropic’s own documentation says identical inputs to its AI models “may produce different outputs”, so a price that comes straight from the model can’t be defended. The rule: AI talks, code calculates, a person decides anything off the rate card.
This article is about who calculates the number. If your problem is the quote request that arrives half-finished at 9 PM, start with how to answer freight quote requests 24/7.
Why can’t the chatbot just work out the price itself?
Because a freight price has to be the same for the same load, and AI models don’t promise that. The glossary in Anthropic’s developer docs states it plainly: “Even with temperature set to 0, the results will not be fully deterministic and identical inputs may produce different outputs across API calls” (Claude Platform Docs).
Now think about what a freight price involves. A base rate for the lane. A fuel surcharge that changes. A border fee on cross-border loads. A reefer uplift. Weight breaks for LTL. Each step is a place where a model can round, skip or use last month’s surcharge, and the customer has no way to tell.
And the customer will rely on it. In Moffatt v. Air Canada, British Columbia’s Civil Resolution Tribunal held the airline responsible for what its website chatbot told a customer (2024 BCCRT 149). We cover what that case means for a small business in who is liable when your chatbot gets it wrong. This is general information, not legal advice.
What does “AI talks, code calculates” look like on a freight quote?
Each job goes to whoever does it reliably. The AI handles language. Code handles numbers. A person handles commitments.
| Step | Who does it | Why |
|---|---|---|
| Understand “two skids to Chicago, Thursday” | AI | Customers don’t write in rate-card format |
| Ask for what’s missing (weight, dimensions, dry or reefer, pickup date, liftgate) | AI | A calculator can’t run on half a request |
| Look up the lane rate | Code, from your rate card | Same input, same output, every time |
| Add fuel surcharge, border fee and accessorials | Code | Each line can be checked by your team |
| Show the total with its breakdown | AI, reading out the calculator’s result | The customer sees how the number was built |
| Spot rates, unusual freight, discounts, exceptions | A person | These are judgment calls and commitments |
The important line is the fifth one. The chatbot repeats the calculator’s result. It doesn’t recalculate it, round it or “improve” it. If the calculator and the chat ever disagree, the calculator wins and the chat is broken.
How do you check that the chat and the calculator agree?
Run a parity test before customers ever see the chat:
- Pick lanes from your rate card. Include a short local run, a cross-border load and a reefer lane.
- Run each one through your calculator and write down the total and each line of the breakdown.
- Ask the chat for the same lanes, in the words a customer would use.
- Compare. The totals must match exactly, to the cent. The breakdown must show the same lines.
- Repeat after every change to your rates or fuel surcharge, because that’s when stale numbers creep in.
We ran this test on a demo we built for a fictional Ontario carrier. The company isn’t real, and the demo says so on screen. We asked the chat assistant and the pricing calculator to quote the same full-truckload lane, and we got the same number in both, with the same base rate, fuel surcharge and border fee. That’s a demo on invented rates, not a customer result. It shows the design works. It doesn’t say anything about your lanes until you test them.
What should the chatbot say when a lane isn’t on the rate card?
It should say it can’t quote that lane and pass it to a person. No ballpark, no “usually around”, no range. A guessed number is still a number the customer heard from your website.
What it should still do is the intake work: collect the origin, destination, freight details and timing, and hand your team a request they can price in one pass. That’s the capture side, covered in answering quote requests 24/7. The two articles fit together: the chat captures every request, quotes only what the calculator can price, and hands off the rest.
What should you ask a vendor before a chatbot quotes your freight?
Five questions, and the answer to the first one decides the rest:
- Where does the number come from, the AI model or a calculator? If the answer is “the model works it out”, stop there.
- Will the same request get the same number tomorrow? It should, unless your rates changed.
- Can the customer see the breakdown? Base rate, fuel surcharge, accessorials, border fee: each line visible.
- What happens when a lane isn’t on the card? The right answer is a handoff to a person, with the details already collected.
- When I change the fuel surcharge, when does the chat start using it? The calculator and the chat should read the same source, so the answer is “at the same moment”.
Can I see it work before I change anything?
Yes. Our AssistPro logistics demo runs on that same fictional Ontario carrier. Ask it for a full-truckload rate from Cambridge to Chicago and look at what comes back: the breakdown, not just a total. Every rate on that page is invented, so judge the behaviour, not the numbers. If you want the same set-up trained on your own rate card and lanes, the page explains how to start that conversation with us.
Next read: who is liable when your chatbot gets it wrong, for why a website chatbot’s answers count as yours. For the bigger picture, see AI for small logistics companies in Ontario, and if your shippers also ask for EDI and CO₂ numbers, read where a small carrier starts.
Sources checked on 1 October 2026. This article is general information, not legal advice. The demo carrier is fictional.
How we wrote this: drafted by the YourFirstAI team with AI assistance, sources checked on 2026-10-01, and reviewed against our editorial rubric before publishing. Examples are hypothetical unless they cite a source.
Frequently asked
Can I let an AI chatbot give freight quotes to customers?
Only if the number comes from your own rate calculator, not from the AI. The chatbot can collect the lane, weight, equipment and dates and read out the result, but the price itself should be calculated by code that applies your rate card, fuel surcharge and accessorials the same way every time. Anything off the rate card goes to a person.
Why can't the AI model just do the arithmetic?
Because the same question can get a different answer. Anthropic's documentation says that even with temperature set to 0, results will not be fully deterministic and identical inputs may produce different outputs. A price has to be the same for the same load, so it should come from a calculator.
How do I check that the chatbot and my calculator give the same price?
Pick lanes from your rate card, run each one through your calculator and through the chat, and compare. The totals should match exactly and the chat should show the same breakdown. Repeat the test whenever your rates or fuel surcharge change.
What should the chatbot do when a lane isn't on my rate card?
Say it can't quote that lane, collect the details, and pass them to a person. No ballpark and no 'roughly'. A guessed number is still a number the customer heard from your website.
Is this the same as answering quote requests after hours?
Related, but different. Capturing a complete request at 9 PM is about intake. This article is about who calculates the price once the request is complete. Our guide on answering quote requests 24/7 covers the intake side.