Systems blueprint for a motor carrier AI readiness audit of TMS data, stop clocks, geofences, and telematics
Applied AI Systems Architecture

The Motor Carrier Executive Guide to AI Readiness

Auditing TMS data, telematics cleanliness, and real-world ROI. A carrier AI program is a data audit with a stop rule: do not buy a model until discovery, instrumentation, schema mapping, a latency budget, and an ROI gate have all passed on one named workflow.

Key takeaways
  • Most AI programs fail on the data, not the algorithm: wrong grain, late events, and fields with three writers.
  • Name one system of record per stop clock. Yard polygons and dock scans outrank radius geofences and EDI 214s.
  • Budget ELD event age in writing. Over a 3 minute p95, live recommendations stop.
  • Score six readiness dimensions on a read replica. One red cell holds the project.
  • Pilot one workflow a person still commits. Pricing and autonomous dispatch wait until the clocks are green.
5audit gates before any model is purchased
6readiness dimensions scored red, amber, green
90 daysof replica history behind every score
3 minp95 event-age ceiling for live use

This page is an independent educational framework, a feasibility audit, an architectural specification, and an advisory roadmap for carriers and 3PLs that are evaluating or adopting AI.

Strong Tower Consulting, LLC is the Minnesota freight systems consulting firm founded in 2008 by Scott Elliott (strongtoweronline.com). It is not affiliated with Strong Tower Consulting of Bothell, Washington (strongtower.consulting or strongtower.ai).

Why carrier AI programs fail before a model is trained

Most failed programs never reach a bad algorithm. They train on a file that cannot support the decision. Three defects show up in the first workshop.

Wrong grain

ETA, dwell, and detention are stop decisions. Margin is an order decision, and only after the invoice matches rated revenue. One row per order with a single arrival hides the stop that made a multi-stop, a relay, or a stop-off late. Join yard and status events on a stable stop id. Sequence is a display field. Mixing stop grain and order grain in one training table teaches a blended error, and the dispatcher still cannot see which appointment to fix.

Late events

An EDI 214 posted the next morning is a customer message, not a live arrival. A geofence row that lands after the driver was already sent to the next shipper cannot undo that empty mile. If the event was not on the board when the person decided, the label is hindsight. Historical scoring may use it after skew checks. A live recommendation may not.

Unowned fields

Detention reason, late reason, and OS&D codes often have three writers: the driver app, the dispatch board, and billing. The last write wins, and without change history the prior value is gone. The model learns whoever closed the load, not the dock. Name one writer. Everyone else proposes a change through that owner.

Audit sequence before any model is purchased

Run the sequence in order. A vendor demo is not a step. The carrier signs the gate before a license is discussed.

  1. Discovery workshops. Dispatch plus the ELD administrator, then billing plus the EDI map owner. One lane family and one workflow. The decision record names the decision, the human actor, the grain, the system of record, and the red conditions that stop the work. No vendor signs that page.
  2. Instrumentation inventory. Every clock that can stamp a stop: system, payload, poll or webhook, typical age, TMS table, writer account, timezone. Include a yard barcode or guard-shack sheet when that is the real dock clock.
  3. Schema mapping. Order, stop, commodity line, accessorial, invoice, settlement. Grain, join keys, and non-null columns. Flag recycled PROs and sequences that renumber when a stop is inserted.
  4. Latency budget. Written p50 and p95 ceilings. If a vendor needs fresher data than the carrier has, stop or fix the feed. The model gets no exception.
  5. ROI gate. Price the leak on the carrier's own counts. A red rubric on the clocks that workflow needs means do not buy a model.
Clock hierarchy for one stop
Dock scanBarcode or gate scan where the site actually scans
Yard polygonEnter and exit after the site minimum dwell
ELD tapCorroborates. Never the detention clock
EDI 214Customer message, not a live arrival
Left outranks right. Store the winning clock on the stop.

Stop timestamp integrity and the system of record

Five clocks compete for the same stop. They are not interchangeable. Geofence enter is the first position that satisfies the yard rule. Geofence exit leaves that rule. Dwell stays open until exit, or until a yard scan shows the trailer is still there after the tractor left. The driver ELD tap, usually a move to on duty not driving, happens when the driver remembers: at the fuel island, or after walking inside. The tap corroborates. It is not the detention clock. A dock barcode (lumper, yard jockey, or customer WMS) outranks a radius geofence wherever the site actually scans. An EDI 214, often an AT7 keyed later by a clerk, tells the shipper what you already know. Do not use it as live arrival, and do not train on-time labels from it when a better clock exists.

Store the system of record on the stop so a later project cannot invent a different one.

System of record by operational use. Corroborating clocks never replace the named clock.
UseSystem of recordCorroborates onlyReject for this use
DwellYard polygon enter to exit after the site minimum dwell. Drop lots use trailer telematics or a yard scan.ELD tap and dock barcodeA radius ping on the frontage road, or a tractor exit that abandons a dropped trailer
DetentionContractual free-time start stored on the stop, then the dwell arrivalGeofence and barcodeAn EDI 214 posted after free time has already run
On-timeAppointment window compared with the dwell arrival214 as a customer message onlyA backdated clerk edit inside a closed stop

Store event time and ingest time apart. A live rule may read the row only when ingest minus event is inside the latency budget. Historical detention may use event time after three replica tests. Future stamp: event time more than two minutes after ingest (device clock or timezone cast). Disagreement: the ELD fix nearest geofence enter differs from stop arrival by more than the p95 ceiling. Backdated edit: CDC shows arrival moving earlier, or a person writing arrival after departure. Completeness that ignores backdated edits is not green.

Do not infer arrival from on duty not driving. That status also covers fuel, a scale, and the wrong gate. Do not infer duty status from a geofence. Keep the hours clock and the yard clock in separate tables. Join them only by driver id or power unit id plus a time window, and label the join approximate.

Geofence accuracy, false arrival, and trailer dwell

A circle is not a yard. A half-mile radius on a geocoded office covers the frontage road and often the interstate, so a passing truck is stamped arrived. Minimum dwell still misses a slow roll inside the circle. Retire any radius that overlaps a highway or frontage road. Draw the polygon to the property, not the billing address. Pin error is the quiet form: the geocoder returns the office or the street centroid, the dock sits behind the building, the polygon never hits, and a typed arrival becomes the label. Treat a manual arrival with no polygon hit and no barcode as amber, not truth. Review pins for the top customers by stop count before any distance feature is trusted.

One GPS fix inside a polygon is not arrival. Urban multipath throws a point across the block. Require two consecutive fixes inside, or dwell at the site minimum. A spike that enters and leaves on one breadcrumb is a false arrival and a false departure. A common live-dock minimum is 8 to 12 minutes. A staffed gate that already scans uses the scan as the clock. About 200 meters of cluster radius is a review flag, not an auto-merge. A trailer pool and a live dock keep separate stop ids. ELD GPS is usually the tractor. When the driver bobtails out, that exit is power departure, not trailer dwell. Trailer telematics or a yard scan is the dwell clock. If neither exists, drop-and-hook dwell is red. Do not impute it from the tractor, and list the gap as a known defect.

ELD latency: poll, webhook, GPS age, and duty-status lag

Event age is ingest time minus GPS fix time, or minus the duty-status time on the device. A screen that refreshes every 60 seconds can repaint a 14 minute old point. The budget is on event age, not refresh. A poll every 1, 3, or 5 minutes puts p95 near that interval plus vendor queue time. A duty webhook can land in under a minute when the device is online and still leaves breadcrumbs on the poll. Score the two ages separately. A green duty status does not make the GPS green. A steel building queues events and flushes them on the way out. Ingest time is the flush. Event time is the device. Reading only event time pretends the board knew it live. Reading only ingest time places the arrival at the exit. The dictionary names which column each use case may read.

At 60 miles per hour, a 3 minute p95 is about 3 miles and a 15 minute p95 is about 15 miles, before routing error. That can consume a 30 minute pickup window. A driver who just went to sleeper can still show driving, so available hours are overstated. A driver who just started driving can still show off duty, so hours used are understated. Do not fire a recommendation or write a tender while the feed sits in that 3 to 15 minute band.

Latency budget. Ceilings are the green line. Over the ceiling, the action is mandatory.
Signalp50 targetp95 ceilingIf the ceiling is missed
GPS breadcrumb age (fix time to ingest)60 seconds180 secondsDo not compute a live ETA
Duty-status age30 seconds180 secondsDo not compute remaining hours
Geofence enter ingest delay60 seconds300 secondsDo not close on-time from that event
EDI 214Not a live signalSame calendar day is only a message SLANever treat a 214 as arrival for dispatch
Poll interval when no webhook exists60 seconds180 secondsA faster screen refresh does not make the fix fresh
Replica lag, if a live reader uses the replicaUnder 5 seconds60 secondsHistorical audit may continue. Live scoring stops.

Assignment history sits beside the feed. Join hours to the driver and GPS to the power unit assigned during that interval. A relay swaps the tractor. Do not attach a breadcrumb after the swap. The required columns are power unit, driver, start, and end, tied to the order or the stop. Gaps make ETA features red for those intervals. Feed design itself is covered in the ELD, HOS, and telematics API integration architecture. This page only sets the age budget that feed must meet.

Order-to-cash schema readiness

Predictive use reads six entities: order, stop, commodity line, accessorial, invoice, and settlement. A wrong join bills the wrong load and pays the wrong trip. Trust keys in this order: order id, stable stop id, stop sequence, PRO, then BOL. Order id joins the invoice. Stop id joins events. Sequence renumbers when a planner inserts a stop, so it is not a key. PRO is a key only when the 90-day sample proves it unique. Recycled PRO numbers attach an older invoice to this week's load. BOL joins only from a normalized column.

These fields must be non-null or the row is excluded. Do not fill a guess. Order: order id, equipment type, practical miles or stop-to-stop distance, rate basis, ship date. Stop: stop id, sequence, stop type, appointment start, appointment end, latitude, longitude, location id. Commodity line: weight, handling unit count, and a commodity code when rating or claims need it. Accessorial: code, amount, unit quantity, stop id, and source (contract rule or manual). Invoice: invoice id, order id, invoice date, total, match status to rated revenue. Settlement: settlement id, order id, payee, amount. A trip lump covering two orders is the wrong grain until an owner stores the split. A null latitude drops the stop from ETA and geofence features. A city centroid is a defect, same as a pin at 0,0. A null accessorial source is a billing queue, not a training row.

Time zones, appointment windows, and practical miles

Store events in UTC. Appointments are local to the stop. A UTC arrival minus a naive local appointment is wrong by the offset, and wrong again when the terminal leaves daylight time. Name the zone of every clock. ELD events are typically UTC. A 214 map that drops the local time-zone code is a defect. Display in terminal local time. Compute in UTC.

Practical miles sit on the leg, not in header billed miles. Billed miles include a minimum and sometimes an out-of-route deal, so they miss relays and stop-offs. The prediction distance is planned practical miles from sequence n to n+1, or a routing result on the stop from the reviewed pin. Header miles stay for rating. They are not the ETA feature.

Scored readiness rubric

Score the last 90 days on the replica. Red stops the workflow. Amber blocks automation and allows only a shadow display that shows event age and does not write an assignment. Green allows a pilot in which a person still commits the action. Publish the thresholds in the decision record so a vendor cannot swap them in a demo. A workflow inherits the worst dimension it uses. Detention needs timestamp completeness, geofence hit rate, and accessorial capture. A shadow ETA needs ELD event age and master data. Pricing needs invoice match. Do not average the six scores. One red cell holds the project.

Readiness rubric. Evidence queries run on the read replica for the last 90 days.
DimensionEvidence queryRedAmberGreen
Timestamp completenessShare of completed stops with both actuals non-null and departure on or after arrival, plus the CDC backdated-edit shareUnder 85 percent, or backdated edits over 5 percent85 percent up to 97 percent, and backdated edits from 2 to 5 percent97 percent or better, and backdated edits under 2 percent
Geofence hit rateAmong stops with a yard polygon, share with enter, exit, and dwell at or above the site minimum. Highway or frontage-road radius fences are defects, not hits.Under 70 percent, or top sites still use a highway-overlapping radius70 percent up to 90 percent90 percent or better, and the top 50 sites by stop count use a yard polygon
ELD event ageBusiness-hours p95 of ingest minus GPS fix time, and p95 of duty-status ageEither p95 over 15 minutesEither p95 from 3 minutes through 15 minutesBoth p95 values under 3 minutes
Accessorial captureShare of stops past contractual free time that have code, amount, stop id, and sourceUnder 60 percent60 percent up to 90 percent90 percent or better, and one writer owns the detention code
Invoice match rateDelivered orders whose invoice total matches rated revenue within dictionary tolerance, joined on order idUnder 90 percent, or PRO is the only join90 percent up to 98 percent on order id98 percent or better on order id, PRO unique or unused as the join
Master data (shipper/consignee lat-long)Share of stops whose location id has latitude and longitude, not 0,0, and not a city-centroid flagUnder 80 percent of stops80 percent up to 98 percent98 percent or better, pins reviewed for top customers by stop count

ROI gate, and what not to automate first

The gate uses the carrier's own stop counts, contract rate, and empty-mile cost. The figures in this section are illustrative audit calculations, not a measured result from any named carrier, and they are not a savings promise. Substitute real counts or do not use the illustration.

Illustrative audit math, not a customer result

Detention leak: 1,000 eligible stops, 0.75 hours excess dwell, 50 dollars per hour, 60 percent missing a usable clock.

1,000 x 0.75 x 50 x 0.60 = 22,500 dollars that month

Empty miles: 40 declined reloads, GPS age about 12 minutes, a false geofence exit, then 80 miles at 1.80 dollars.

40 x 80 x 1.80 = 5,760 dollars

If capture is red, fix the clock and the writer. Do not train on the 40 percent that was keyed. The pilot is a next-load suggestion a person accepts or rejects. The system does not send the tender.

Pilot first

  • Detention capture with a named clock
  • Shadow ETA that shows event age
  • Next-load suggestions a dispatcher accepts

Automate later

  • Pricing trained on unmatched invoices
  • Auto-tender on an amber duty clock
  • Anything that writes without a person

Do not automate pricing first. Invoice totals that miss detention teach the next quote the same hole. Invoice match must be green before freight rate and margin guardrails work starts. Do not automate dispatch first. Auto-assign, auto-tender, or auto-decline on an amber or red duty clock can send a driver to a pickup that is illegal or impossible. Timestamp completeness, geofence hit rate, and ELD event age must be green before a person-committed pilot. Pricing and autonomous dispatch wait longer.

Pilot one workflow. Baseline 6 to 8 weeks of the manual process on the replica. During the pilot a person still commits the action. Success is a change in that workflow with the rubric still green. If clock quality drops, stop. The model is fitting the outage. Score vendor claims later against the handoff package, using the carrier AI vendor due diligence checklist. A demo is not the gate.

Read replica, audit log, and change-data capture

The audit reads a replica or a nightly extract. It never scans the database behind the live dispatch board. The login is SELECT only, with a statement timeout around 30 seconds so a bad join fails instead of stalling the morning board. Land the extract in a warehouse schema or a dated file and record the row counts. Replica lag counts in the latency budget. Over the ceiling, historical scoring may continue and live scoring stops.

Change-data capture is the audit log. Capture insert and update of actual arrival, actual departure, both appointment fields, geofence id, and status, with before and after images and the writer (user id, ELD poller, EDI translator, or mobile app). Keep at least the same 90 days as the sample. A backdated edit is an arrival that moves earlier, or a person writing arrival after departure. Without CDC, completeness counts that row as filled and the defect disappears. A demo gets the extract or a read-only replica role with a timeout. It does not get production credentials. Decline a request to connect to the live board.

Handoff package before an AI vendor demo

The carrier builds this package. The vendor does not author it. If it cannot be built, the operation is not ready for a demo.

  1. Data dictionary. Table, column, grain, owner, null rule, and timezone. Name event time, ingest time, and the system of record for dwell, detention, and on-time. State whether PRO is unique.
  2. 90-day event sample. Orders, stops, duty status, GPS age or breadcrumbs, geofence transitions, 214s, accessorials, invoices, and assignment history. De-identify if it leaves the building. Same 90-day window as CDC. Print row counts.
  3. Known defect list. Frontage-road radius fences, pins at 0,0 or city centroids, reused PROs, backdated arrivals, poll interval, no trailer telematics on drop lots, and 214 maps that drop the time zone. Describe a site by geometry, such as a dock on a frontage road parallel to the interstate.
  4. Latency histogram. p50, p95, and p99 of GPS age, duty-status age, and geofence ingest delay, by hour of day. An average hides the morning peak.

With that package, ask the vendor to score the sample against the rubric. Without it, the demo is a slide. Related references, still behind this gate, include the BOL and POD document architecture, the predictive dispatch constraint guide, and the EDI 204, 990, 214, and 210 lifecycle. Vision models, constraint solvers, and rate models stay out of scope until the clocks on this page are green for the workflow that would use them.

Frequently asked questions

Why do carrier AI programs fail before a model is trained?

They fail on wrong grain, late events, and unowned fields. An order-level row hides which stop was late. An EDI 214 that posts the next morning cannot steer the board that already moved. A detention code that three systems overwrite teaches the model the last writer, not the dock.

Which stop timestamp is the system of record for dwell, detention, and on-time?

Dwell is yard-polygon enter to exit after the site minimum dwell. Detention starts from the contractual free-time clock stored on the stop, then uses that same arrival. On-time compares the appointment window to that arrival. The EDI 214 is a customer message. The ELD tap corroborates. Neither one outranks a sound polygon or a dock barcode.

What does a 3 to 15 minute ELD delay do to a dispatch recommendation?

At highway speed, 3 minutes is about 3 miles of position error and 15 minutes is about 15 miles. A duty status that stale can overstate or understate remaining hours. Do not assign a driver or promise a pickup from a recommendation inside that window.

What should a carrier refuse to automate until clocks are clean?

Refuse pricing and autonomous dispatch. A rate model trained on invoices that do not match orders learns the billing defect. Autonomous assignment on a stale duty clock can recommend a pickup the driver cannot legally or physically make. Clean stop timestamps and duty clocks, then pilot one workflow a person still commits.

What belongs in the handoff package before an AI vendor demo?

A data dictionary, a 90-day event sample, a known defect list, and a latency histogram. The carrier produces this package from its own read replica before any demo. A demo without it cannot be scored against a clock the carrier has defined.

Talk to an architect

Find out if your data is ready before you buy a model.

Strong Tower Consulting provides independent systems architecture, feasibility audits, and engineering roadmaps for motor carriers and freight brokers. Contact our advisory team or call 763-244-1373 to discuss your operational data and evaluate practical implementation paths for your fleet.

Published October 23, 2026 by Strong Tower Consulting, LLC. Founded 2008 in Minnesota by Scott Elliott.