How HAULVANE works, in plain English.
No acronyms without an explanation, no numbers without a source, and an honest account of what this thing cannot do. If something here does not match what you see on screen, the screen is right and this page is a bug.
Getting started
The one idea
Every trucking data vendor sells you a list: here are the carriers, here are their phone numbers, good luck. A list tells you who exists. It does not tell you who is going to answer the phone in a buying mood.
HAULVANE works from change instead. It keeps a copy of the federal motor-carrier record every single day and compares today against yesterday. When something moves — a shutdown notice gets served, a fleet adds six trucks, a filing gets replaced, a safety score crosses a threshold — that becomes a dated event. Those events are what you work.
Your first five minutes
- Tell it what you sell. Top right, the control that reads I sell. Pick your offer. The entire universe re-ranks around it — the same carrier can be a great lead for a factor and a dead one for an insurance agent, and this is where that gets decided.
- Look at the Signal desk. The big number is how many carriers are in-market for your offer today. Underneath it, the queue, hardest deadline first.
- Read one card out loud. Every entry carries a sentence explaining why it is on your screen. If that sentence would not make sense on a phone call, we consider it a defect.
- Open the Prospector. This is the working surface — filter, sort, and call. Eight columns, explained below.
- Open the Renewal calendar. Twelve months of dated appointments, already written by the federal record. This is the screen that tends to sell the product.
Reading the lead table
The table has eight columns, on purpose. Competitors advertise "115+ data points"; every extra column is one more decision between you and the phone. Everything else lives on the carrier's detail page.
What HOT, WARM and WATCH mean
The score is 0–100. The word is what you do about it.
| Band | Score | What it means | What to do |
|---|---|---|---|
| HOT | 85–100 | A hard, dated event is firing and they fit what you sell. | Call today. |
| WARM | 70–84 | A real trigger, but either the deadline is further out or the fit is imperfect. | Call this week. |
| WATCH | 55–69 | Something moved. Worth a look when the hot list is worked. | Queue it, or set a monitor. |
| COLD | Under 55 | Fits your profile but nothing is happening right now. | Leave it. It will surface when something changes. |
Saving a search, and My Book
Save & monitor turns whatever you have filtered into a standing watch. When a carrier newly qualifies for it, it shows up. That is the difference between checking a database and being told.
My Book is the other half. Paste the USDOT numbers of carriers you already sell to and the same feed watches them for you: who replaced your filing with someone else's, whose safety record moved against you, whose renewal is coming, and who grew past what you sold them. Your book stays in your browser — it is never uploaded.
What an export contains
Every list you can see, you can take. Export CSV writes one row per carrier with
the columns below, in this order — the same columns from the demo, from the app and from
POST /api/export, because an export that changes shape between environments is
an export nobody can build a workflow on.
The last five are the provenance block. They are the reason you can hand this file to a compliance officer without a covering note: every row says which federal file it came from, how often that file moves, whether the date on it was filed or estimated, when we pulled it, and the live query that returns the underlying rows.
Signal reference
These are every event HAULVANE detects. The table is generated directly from the running engine, so it cannot drift out of date with the product.
The column that matters most is Date. Filed means the federal government published that date and we are repeating it. Estimated means we worked it out and could be wrong. Anyone who does not draw that line is hoping you won't ask.
Next to it, Cadence answers the other half of the same question: not how the date was arrived at, but how often the underlying federal fact is even allowed to move. The three classes are defined under Sources.
CSA BASICs, briefly
FMCSA scores carriers in seven categories called BASICs, using roadside inspection results from the last two years. Each carrier is ranked against a peer group and given a percentile: higher is worse. Cross the intervention threshold and FMCSA may come looking, and — more relevant to you — the carrier's insurance gets more expensive at renewal.
Most carriers have no BASIC scores at all. A percentile only appears once there are enough of the right kind of inspections, and a one-truck operator often never gets there. "No data" is the normal case, not a gap in our coverage.
How scoring works
Three parts, weighted. Nothing is hidden — the Playbook screen shows the exact weight of every signal for your current offer.
Trigger — is something happening?
Each signal has a weight specific to your offer. A shutdown notice is worth 100 to an insurance agent and minus 100 to a freight broker, because the broker does not want to put a load on a carrier about to lose its authority.
Weights decay across a ninety-day gap to about half. Which clock a signal runs on matters more than the curve, so each one declares its basis: deadline signals get more urgent as the date nears, recency signals get less urgent as the event recedes, and signals with no clock are never decayed — a safety score over the threshold is exactly as true today as it was last month.
The strongest single event leads, and a stack of soft signals cannot out-rank one hard
deadline. The combination is (best + 0.28 × everything else) ÷ 112, capped at 1.
Within a class, a signal carrying a filed date takes the headline over one without.
Flags that are not part of the score
A served shutdown notice, a lapse, a revoked authority or a dormant record raises a red flag on the row under any offer — including the ones whose profile gives that signal no weight at all. A fuel-card seller is not scored on insurance, but should still not put a card in the hands of a carrier that stops being legal in three weeks. These answer will they still be trading, not what is this worth.
Fit — are they your kind of customer?
Fleet size, interstate versus intrastate, cargo, tenure, inspection activity. Each offer defines its own shape: factoring wants small and new, driver recruiting wants larger and short-staffed, broker capacity wants clean and mid-sized.
Viability — will they still be here?
Tenure, recent roadside activity, whether coverage is currently in place, safety rating, and whether the fleet is shrinking. This is what stops you spending an afternoon on a carrier that is about to disappear. It is also why a lapsed carrier scores high on trigger but never hits 100.
The action window
The Call by date is the soonest hard deadline across all the signals that count positively for your offer. When nothing has a date, the column says so rather than inventing urgency.
Does the countdown work?
The whole product rests on one claim: when FMCSA serves an involuntary suspension notice, the carrier has thirty days and most of them do something about it. That is a testable claim, so we test it — every month, against what actually happened to every notice whose deadline has already passed.
Where the data comes from
Everything is public, free, and published by the Federal Motor Carrier Safety Administration on the US Department of Transportation open-data portal. No API key, no licence, no attribution requirement — it is a work of the United States Government.
Freshness, and what lags
The census publishes daily by noon Eastern from a database that is already 24 hours old, so real-world change reaches you in about one to two days. The Motus files — insurance, authority history, suspension orders — publish daily by 9:30 Eastern. Roadside inspection and crash counts update weekly on FMCSA's own pages, so anything derived from them lags further. Every signal in the app names its source, and the ones with estimated dates say so.
A source on its own does not tell you how fast a fact can move, so every signal also carries a cadence, and there are exactly three. A daily file is repulled every business morning: a change in the federal record reaches your screen inside a day or two. A monthly snapshot is the SMS safety posting — published around the middle of the month, describing roadside work that can already be six weeks old. Self-reported · biennial is the MCS-150: a truck count, a driver count or a mileage figure that changes only when the carrier files the form, which they are required to do once every two years. Hold that last class loosely. It fires when the carrier files a form, not when the fact changes — a fleet that bought six trucks in March may not say so until next spring, and a fleet that "grew" today may simply have got round to the paperwork.
One more thing belongs in a section about provenance, and it is the part we choose rather
than read: the blend. 0.52 × trigger + 0.30 × fit + 0.18 × viability is a
calibrated heuristic, not a fitted model, and we would rather say so than dress three
round numbers up as science. Each term has one job. Trigger asks whether something is
happening right now, and carries the most weight because a dated event is the only thing that
makes today different from yesterday. Fit asks whether this is your kind of customer at
all, and comes second because a perfect trigger on the wrong carrier is still a wasted call.
Viability asks whether they will still be trading when the contract starts, and carries
least because it works as a brake rather than an accelerator — it almost never promotes a
lead, it just stops the queue filling with carriers that are about to disappear. The three
numbers are visible, arguable and identical for every customer. What validates them is not our
opinion but the outcome study, which re-runs every month against what
the carriers actually did.
The thing most vendors get wrong
It is widely repeated in this market that FMCSA's insurance file gives you thirty days' warning before a carrier's coverage cancels. It does not.
Cancellation rows are written at or after the coverage has already stopped. On 14 August 2026 there were zero cancellation rows anywhere in that file carrying a future effective date. The future-dated rows that do exist are policy replacements — 659 of 661 — meaning the carrier is already re-insured and has just bought from somebody else. Treating those as distress signals gets you exactly backwards.
The genuine forward-dated countdown is the involuntary suspension notice, where the
effective date is exactly the serve date plus thirty days. HAULVANE is built on that one.
pipeline/verify.py re-tests all of this against live endpoints — run it.
Compliance posture
Three deliberate choices, and the reasoning:
- No bulk SMS, no autodialer. The census carries a cell-phone column, and the TCPA applies to wireless numbers whether or not the call is business-to-business — there is no B2B exemption in the FCC's rules. You get a click-to-call link, one number at a time.
- Public records only. Every field comes from a government file. California, Vermont and Texas all exempt information lawfully available from government records from their data-broker registration regimes; the moment you blend in purchased or scraped contact data, that exemption gets shaky. Provenance is displayed on every signal for exactly this reason.
- Flat subscription pricing. Never a share of bound premium. Several states treat revenue-sharing on insurance placement as unlicensed activity.
None of this is legal advice, and your situation is not ours. Run your outbound practice past your own counsel.