Segment Level Costing
Segment Level Costing (SLC) is the engine at the heart of FreightMath. It takes every dollar in the General Ledger — already standardized through MapLedger — and distributes it down to the individual operational segment that drove it. The result: true profitability visibility at the load, lane, and network level, grounded in actual GL costs rather than estimates or averages.
The Big Picture
The objective of segment-level costing is straightforward: take every dollar in the GL and distribute it to the individual operational segment that caused it — so the carrier can see true profitability at the load and lane level.
(via MapLedger)
Engine
Costs
Network OR
This pipeline requires two inputs working together:
- The Pool (GL Costs) — MapLedger has already translated the client's unique GL into FreightMath's Standard Chart of Accounts. Costs are organized into Hourly buckets (overhead), Mileage buckets (variable), and supporting metrics (miles, hours, trailer counts). A workday calendar is applied for forecast months.
- The Activity (Orders & Segments) — Orders are the revenue event; Segments are the operational work. Every segment carries FM-standard practical miles and collared transit hours, which become the Costing Miles and Costing Hours denominators used in allocation. Three deadhead models (PRE, SPLIT, POST) run in parallel, and forecast POST segments are synthesized when a truck doesn't yet have its next destination.
The Five Allocation Methods
Every cost in the GL is routed through one of five allocation methods. Each method uses a different activity driver to distribute costs to segments — ensuring that the allocation reflects how costs were actually incurred in the operation.
The combination of these five methods means no single blended rate is applied across all costs. Time-driven overhead (insurance, admin) is allocated by hours under power. Mile-driven variable costs (fuel, maintenance) are allocated by costing miles. Direct charges skip the engine entirely and are assigned straight to the segment. This precision is what separates FreightMath from traditional per-mile cost models.
Pre-Standard Carve-Out
Some costs belong to a specific segment from the start — owner-operator settlements, custom driver agreements, and direct load-specific charges. These are Pre-Standard costs: they skip the general allocation engine and are applied directly to segments based on client-defined logic.
To prevent double-counting, Pre-Standard amounts are subtracted from the distribution pool before the general allocation runs. The final segment value combines both the general allocation and any Pre-Standard amount already assigned:
Final segment value = X_COST + PRE_X_COST
Hourly Buckets — Overhead Distribution
Overhead costs are distributed based on each segment's share of total costing hours. The core formula applies to most hourly buckets:
The pool for each bucket equals the GL amount minus the Pre-Standard amount — preventing double-counting of direct costs. Two buckets have specialized treatment:
- TRACTOR_CO — Uses an effective-hour Cost Per Hour (CPH) multiplied by segment hours, with a team premium applied for team-operated segments.
- REEFER — Uses Temperature Categories to distribute CPH so that only temperature-controlled loads absorb refrigeration costs.
Full Hourly Bucket Reference
| Bucket | Description | Note |
|---|---|---|
| DRIVER_RECRUIT | Driver recruiting & retention | Standard hourly share |
| FIXED_OH | Fixed overhead | Standard hourly share |
| NONDRIVER_COMP | Dispatch, admin, management | Standard hourly share |
| PERMIT_LICENSE_TAX | Operating permits & licenses | Standard hourly share |
| TECHNOLOGY | Systems & platforms | Standard hourly share |
| TRACTOR_CO | Company tractor costs | CPH × hours (team premium) |
| REEFER | Refrigeration unit costs | % of reefer costing hours only |
| TRAILER | Trailer ownership | Pool + Gen-Pop split (see below) |
Mileage Buckets — Variable Distribution
Variable costs are distributed based on costing miles, but the specific pattern depends on the cost type and labor group. FreightMath uses three distinct mileage allocation patterns:
COSTING_MILES / MILEAGE_ALL_MILES × pool
COSTING_MILES / GL_MONTH_COSTING_MILES × pool
COSTING_MILES × CPM × team_premium
Full Mileage Bucket & Pattern Map
| Bucket (Mileage_…) | Pattern | Note |
|---|---|---|
| DRIVER_COMP_CO | C | CPM × miles, team premium |
| DRIVER_COMP_LP / _OO | B | By labor group share |
| FUEL_ALL | B* | CO+LP only (OO excluded) |
| FUEL_CO / FUEL_LP | B | By labor group share |
| INSURANCE_ALL / _CO | A / B | All miles / CO miles |
| MAINTENANCE_TRACTOR_CO / _LP | B | By labor group share |
| MAINTENANCE_TRAILER_ALL | A† | Zero if not company trailer |
| MAINTENANCE_INDIRECT_ALL | A | All costing miles |
| TOLLS_ALL | — | By actual toll dollar share |
| ESCORT / FINES / LUMPER / SCALES | A | All costing miles |
| PERMIT_GENERAL / PERMIT_OVER | A | All costing miles |
| PURCHASED_TRANS / VARIABLE_DRIVING | A | All costing miles |
Trailer Cost — Two Paths
Trailer cost is the only bucket with branching distribution logic. The total trailer GL pool (HOURLY_TRAILER_ALL_COST) splits into two paths based on whether the segment touches a drop-pool location:
Segment origin OR destination is a drop-pool location. Daily pool trailer-days are rolled up from the pool detail view. Cost = HOURLY_TRAILER_DAY_COST × TRAILER_DAYS. Distributes within the pool by segment's share of pool hours. Segments touching both pools split 50/50.
Company trailer with NO pool affiliation at origin or destination. Gen-Pop sub-pool = total trailer cost − sum of pool costs applied. Distributes by segment's share of gen-pop costing hours. Customer-owned trailers (IS_COMPANY_TRAILER = 0) absorb zero trailer cost.
Forecast & Logistics Paths
Not every period or segment type fits the standard allocation model. FreightMath handles two special cases with dedicated logic:
Forecast Months (No GL Yet)
When MapLedger hasn't closed the month yet, FreightMath uses forecast-based allocation:
- Hourly costs — Recent-month average, scaled by PctWorkdaysComplete from the Workday Model.
- Mileage costs — Rebuilt as cost-per-mile × current-month costing miles.
- Fuel — Gets an FSC_PCT_CHANGE multiplier to adjust for diesel price movement since the last closed month.
- Synthetic POST segments — Inserted for orders still in-flight, using a 28-day area average for deadhead estimation.
All forecast data is flagged IS_GL_ACTUAL = 0 so downstream consumers know the costs are estimated rather than GL-based.
Logistics Operations (Brokerage)
Brokerage operations have no trucks and no assets — just carrier pay. Standard mile/hour allocation doesn't fit, so FreightMath uses alternative drivers:
- Hourly costs — Spread evenly per segment: X_COST / SEGMENT_CT
- Mileage costs — Distributed by percentage of carrier pay: SEGMENT_CARRIER_PAY / GL_CARRIER_PAY
This lets brokerage operations contribute to OR without distorting the asset-based math used for the carrier's own fleet.
What Finally Lands on the Segment
After all allocation paths have run, the final write to the CLIENT_ORDER_SEGMENTS table combines general allocation and Pre-Standard amounts:
- General allocation + direct Pre-Standard — combined in the stored bucket, with PRE_* columns preserved separately for full transparency.
- ALLOCATED_REVENUE — Each loaded segment receives its prorated share of order revenue, weighted by loaded costing miles.
- ALLOCATED_ORDER_RELATED_COSTS — The same prorate applied to direct order costs (bill-to fees, commissions, financing upcharge).
- Order-level roll-ups — Values in CLIENT_ORDER_COSTS are simply SUMs back up from segments.
- Loaded / empty splits — Preserved at every level, enabling Core OR, IB OR, OB OR, and FM OR to all pull from the same foundation.
Related Knowledge Base Pages
- FreightMath Data Schema — View Data Schema
- MapLedger — GL mapping methodology and Standard COA (coming soon)
- FreightMath Glossary — View Glossary
Source: FreightMath Segment Level Costing methodology, KSM Transport Advisors. This page reflects the current production allocation engine as documented in the SLC Deep Dive presentation materials.