FreightMath Logo

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.

Core Concept Every GL dollar lands on exactly one segment — with a clear, reproducible trail from the General Ledger back down to the load. This is what makes FreightMath's Operating Ratio calculations defensible and actionable.

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.

GL Costs
(via MapLedger)
Allocation
Engine
Segment
Costs
Order / Lane /
Network OR
Figure 1: The SLC Pipeline. MapLedger-standardized GL costs flow through the allocation engine, land on individual segments, and roll up to order, lane, and network-level Operating Ratio analytics.

This pipeline requires two inputs working together:

GL dollars + segment-level miles/hours = the allocation math. The pool provides the numerator (what to distribute); the activity provides the denominator (how to distribute it).

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.

V
Variable
Driver: Total Miles
Fuel, maintenance, tolls, driver pay (CPM)
O
Overhead
Driver: Hours Under Power
Tractor fixed costs, insurance, admin
P
Pre-Standard
Driver: Direct to Segment
O/O settlements, load-specific charges
T
Toll
Driver: Lane Routing (Actual)
Loaded & empty toll dollars by segment
D
Trailer Pool
Driver: Per Loaded Hour by Location
Drop trailer ownership at O/D pool

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:

Distribution pool = X_COST − PRE_X_COST
Final segment value = X_COST + PRE_X_COST
Why this matters: The Pre-Standard dollar is already on the segment, so we don't distribute it again. The PRE_* columns are preserved separately in the output, providing full transparency into what was directly assigned versus distributed through the engine.

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:

Segment Cost = (Costing Hours / GL Hours) × (GL Cost − GL Pre Cost)

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:

Full Hourly Bucket Reference
Bucket Description Note
DRIVER_RECRUITDriver recruiting & retentionStandard hourly share
FIXED_OHFixed overheadStandard hourly share
NONDRIVER_COMPDispatch, admin, managementStandard hourly share
PERMIT_LICENSE_TAXOperating permits & licensesStandard hourly share
TECHNOLOGYSystems & platformsStandard hourly share
TRACTOR_COCompany tractor costsCPH × hours (team premium)
REEFERRefrigeration unit costs% of reefer costing hours only
TRAILERTrailer ownershipPool + 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:

Pattern A — All-Segment
Spread across every segment by share of all costing miles. Used for ALL-tagged buckets (insurance, maintenance-indirect, escorts, fines, lumpers, scales, permits, purchased transport, variable driving).

COSTING_MILES / MILEAGE_ALL_MILES × pool
Pattern B — Labor Group
Only segments in the matching labor group absorb it. Company driver (CO) segments get CO costs; owner-operator (OO) segments get OO costs. Used for driver comp (LP/OO), fuel by group, tractor maintenance by group.

COSTING_MILES / GL_MONTH_COSTING_MILES × pool
Pattern C — CPM-Based
Rate-based rather than share-based. A Cost Per Mile derived from effective miles is multiplied by segment costing miles. Team premium applies. Used for company driver compensation.

COSTING_MILES × CPM × team_premium
Key nuance: Owner-operator segments are excluded from company fuel (MILEAGE_FUEL_ALL) because owner-operators buy their own fuel. Tolls use actual toll dollar share rather than mileage share.
Full Mileage Bucket & Pattern Map
Bucket (Mileage_…) Pattern Note
DRIVER_COMP_COCCPM × miles, team premium
DRIVER_COMP_LP / _OOBBy labor group share
FUEL_ALLB*CO+LP only (OO excluded)
FUEL_CO / FUEL_LPBBy labor group share
INSURANCE_ALL / _COA / BAll miles / CO miles
MAINTENANCE_TRACTOR_CO / _LPBBy labor group share
MAINTENANCE_TRAILER_ALLA†Zero if not company trailer
MAINTENANCE_INDIRECT_ALLAAll costing miles
TOLLS_ALLBy actual toll dollar share
ESCORT / FINES / LUMPER / SCALESAAll costing miles
PERMIT_GENERAL / PERMIT_OVERAAll costing miles
PURCHASED_TRANS / VARIABLE_DRIVINGAAll costing miles
* OO labor group excluded — owner-ops buy their own fuel    † Zero for customer-owned trailers    — Tolls use actual toll $ share, not 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:

HOURLY_TRAILER_ALL_COST  (GL Pool)
Path 1 — Trailer Pool

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.

Path 2 — Gen-Pop

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.

Figure 2: Trailer Cost Branching. The GL trailer pool splits based on whether the segment touches a designated drop-pool location. The same zero-cost rule applies to trailer maintenance for customer-owned trailers.

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:

TOTAL_X_COST = X_COST + PRE_X_COST
Bottom line: Every GL dollar is accounted for on exactly one segment — with a clear, reproducible trail from the GL back down to the load. This auditability is what makes FreightMath's OR defensible across every analytical view: load, lane, customer, driver, and network.

Related Knowledge Base Pages

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.