FreightMath Primer
A nine-part walkthrough of the FreightMath story — from raw TMS data to a network-aware Operating Ratio to pricing the next bid with BidRight. Click into the deck and use the arrow keys, or scroll down for the same material as reference text.
Presenting to a room? Open the deck full screen in a new tab → Each slide is interactive: clean the data rows, watch the allocation engine run, step through the four ORs on the map, and move the cost-model sliders.
Precision Activity-Based Costing for truckload carriers. FreightMath unifies your general ledger with your TMS — distributing every dollar of cost down to the individual load using the real activity that drove it: miles run, hours under power, and load-specific charges. The result is load-, lane-, customer-, and network-level profitability that reflects operational reality, not accounting approximations.
Costs from the general ledger, mapped by MapLedger. Loads, miles, and hours from the TMS — McLeod, TMW, Alvys, and more.
Five allocation methods assign every dollar to the load segments that consumed it.
True profit by load, lane, customer, and network. See exactly where margin is made — and where it is lost — load by load.
Allocating costs and measuring true profitability in a truckload network is a complex exercise. Carriers must start with credible data and practical logic — but most TMS data arrives with gaps and artifacts. FreightMath cleans it before a single dollar is allocated. The deck lets you resolve four typical problems one row at a time; here is what each one looks like.
| Problem in the TMS | What you see | How FreightMath resolves it |
|---|---|---|
| Inaccurate timestamps | Load #4892, OKC → MEM: delivery stamped before pickup — negative transit time. | Corrected with FreightMath continuity logic: 8.6 hours of transit over 462 miles, so cost is allocated on real activity. |
| Missing segments | Truck #287, 03/12–03/14: two loaded legs with 22 hours unaccounted for between them. | The gap is reconstructed — 14 hours of yard dwell plus a 38-mile deadhead to the shipper — so every hour and mile is accounted for. |
| Duplicate trucks | Load #5201, ATL → JAX: three truck assignments and two drivers on one load — TMS re-assignment artifacts. | Resolved to the actual asset: one truck, one driver for the full trip, clean linehaul and driver cost. |
| Phantom deadheads | Truck #104, MEM → DAL: 347 “empty” miles that were actually a loaded move with the wrong status code. | Matched to load #5318 and reclassified as a revenue move — $812.40 recovered and the OR drops 2.1 points. |
Every carrier’s general ledger is unique. FreightMath maps it to a common standard, then distributes costs to every load. The allocation engine runs in two stages.
Accounts like Fuel Expense, Driver Settlements, Insurance Premiums, Repairs & Maintenance, Tolls & Permits, Admin & Overhead, Benefits & Tax, and Depreciation flow through MapLedger into the FreightMath Standard Chart of Accounts:
Proportional share of loaded and empty miles — in the example, 65% loaded and 35% empty.
Distributed by loads, empty hours, and dwell hours — time under the company’s roof, not just miles.
Driver settlements, direct charges, and equipment costs allocated directly to the specific load that incurred them.
Direct and accurate toll costs, validated in near-time rather than averaged across the fleet.
A dedicated trailer-pool costing model, so pooled equipment is charged to the freight that uses it.
The deck walks a single load — Kansas City to Atlanta, with a Joplin deadhead in front of it — through four Operating Ratios. Each one answers a different question about the same freight.
One-way profitability from origin to destination: revenue against the variable and fixed cost of the loaded move plus its deadhead.
The composite of all three: the load’s total contribution to the network, not just its own P&L.
On the map slide, five sliders — loaded miles, deadhead miles, transit hours, loading time, and unloading time — recompute the Core OR live. The default trip is 800 loaded miles from Kansas City to Atlanta with a 160-mile deadhead from Joplin, 20 transit hours, and 1.3 hours each at the shipper and the consignee.
At the defaults the load runs slightly over 100 — the deadhead and 2.6 hours of dwell push cost past revenue. Move the deadhead slider down and watch the variable line shrink while revenue stays flat; add dwell at the consignee and the fixed line grows with every hour. That is the whole point of activity-based costing: the OR moves with the activity that actually drove the cost.
The FreightMath OR card updates with it: a weighted blend of the Core OR you are shaping with the fixed Inbound (98.2) and Outbound (92.5) market ORs, so a load that looks marginal on its own can still be a net contributor when the markets on either side of it are strong.
FreightMath tells you what a load costs. BidRight is where that number gets spent — annual bids, mini-bids, spot awards. It is built by Nussbaum Technology out of real carrier operations, and its Modeled OR runs on your cost per mile and cost per hour from the General Ledger, so the rate you defend to a shipper is the rate your P&L will actually show.
The deck prices two lanes out of Peoria. Rate per mile ranks them one way; Modeled OR and where the truck lands rank them the other way.
| Lane | Rate | Revenue | Modeled OR | Where the truck lands |
|---|---|---|---|---|
| Peoria, IL → Indianapolis, IN — 210 mi, live unload, back the next day | $3.10 | $651 | 97 | Indianapolis — outbound OR 104 |
| Peoria, IL → Columbus, OH — 350 mi, drop and hook, reloads same day | $2.75 | $963 | 89 | Columbus — outbound OR 88 |
The lane paying 35¢ less per mile earns more and leaves the truck somewhere it can get out of profitably. That is the whole argument for costing a network the FreightMath way: a rate is only good relative to the cost and the position it creates.
Set the rate and the Modeled OR moves with it — $2.70 gives 96, $2.85 gives 91, $3.00 gives 86. Or set the OR you want: target 90 and BidRight returns the rate you need, $2.88.
You enter one standardized rate per mile. BidRight carries the per-shipper differences into the number the shipper sees, so the money you meant to charge is the money you collect.
The spreadsheet version of a bid is eight steps, most of them in Excel: download the RFP, convert it to your template, run miles, run a pricing study, price it, email it for review, paste the rates back, upload to the portal. In BidRight it is four — drop the file in, mark the lanes you want, Auto Rate and adjust, export to the shipper’s own file.
The fifth slide links to the Sample FreightMath Dashboard, the live Power BI demo in these resources — synthetic carrier data, structured the way every deployment lands, with load-level OR and lane and customer profitability. Open it there for the full-width view and a guided list of what to look for.
Real outcomes from carriers running FreightMath, in their own words.
“KSMTA helps us think about our network strategically and operationally. Their data drives smarter decisions and gives us confidence we’re pursuing freight that truly benefits the network.”
Bob Elkins · Chief Operating Officer, Decker Truck Line
“This team brings more than data — they add a valuable human element by helping us understand what the numbers truly mean.”
Josh Urness · Sr. Director of Pricing, Bay & Bay Transportation
“FreightMath allows us to drill deep into lanes and markets to clearly see what works and what doesn’t, making our decisions more strategic and data driven.”
John Pemberton · President, Pemberton Truck Lines
“Before FreightMath, explaining our costs to clients was an uphill battle. Now, the data speaks for itself.”
Michael McGovern · Chief Operating Officer, Leonard’s Express
“Through FreightMath, KSMTA has helped institutionalize disciplined freight selection, pricing, capital deployment, and network optimization.”
Danny Crooks · Vice President, Corporate Transportation, Averitt Express