Evidence Pack Spec v1.0

The canonical schema for a VettedHaul Evidence Pack. One artifact per booking decision. Versioned, opinionated, grounded in Montgomery v. Caribe Transport II, FMCSA's four-check baseline, and the Federal Rules of Evidence on business records.

spec_version 1.0.0 · published 2026-05-21 · status: draft · license: CC-BY 4.0

VettedHaul Evidence Pack Spec v1.0

Spec version: 1.0.0 Spec URL: https://vettedhaul.com/specs/evidence-pack/v1.0 Status: draft Last updated: 2026-05-21 Editor: Tom Pinder, VettedHaul (Startvest LLC)

---

What this spec is

The Evidence Pack is the artifact VettedHaul produces for a single carrier vetting event. One artifact per booking decision. The pack is what gets handed to defense counsel the day a demand letter arrives.

This document specifies the structure, content, and admissibility guarantees of that artifact. v1.0 is opinionated and minimal. Later versions extend; they do not remove fields.

Why an opinionated spec instead of customer-by-customer

Schema-by-committee produces ten incompatible packs that no carrier discovery process can compare against each other. A single versioned spec produces packs that defense counsel can read on sight, that insurance underwriters can validate against a checklist, and that opposing counsel cannot dismiss as ad-hoc.

The spec is grounded in three convergent constraints:

  1. The Montgomery v. Caribe Transport II standard. State-law

negligent-hiring claims now proceed against brokers on the merits. The merits turn on what the broker checked at the moment of booking and what the broker can produce in discovery.

  1. The FMCSA four-check baseline. Safety rating, CSA scores (across

the seven BASIC categories), certificate of insurance, and operating authority status are the four data points FMCSA itself publishes and the four points industry convention treats as the floor.

  1. Federal Rules of Evidence 901/902 + 803(6). For the pack to be

admissible as a business record, it must be authenticatable, the custodian must be identifiable, and the record must be made contemporaneously with the event.

Everything in the schema below ties back to one of those three sources.

---

Document anatomy

An Evidence Pack v1.0 is a single logical document with five sections. It is exported as a paired PDF + JSON artifact. The JSON is the canonical form; the PDF is a deterministic render of the JSON.

```

  1. Pack Identity (who/what/when of the capture)
  2. Subject (the carrier being vetted)
  3. Four Checks (rating + CSA + insurance + authority)
  4. Decision (the booking action and rationale)
  5. Authentication (hash, timestamp, custodian attestation)

```

Optional sixth section for Defender-tier monitoring:

```

  1. Continuous Monitoring (delta events post-decision)

```

---

1. Pack Identity

Captures who created the pack, when, and on whose behalf. Required for FRE 803(6) custodian identification.

FieldTypeRequiredNotes
spec_versionstringyesMust equal 1.0.0.
spec_urlstring (URL)yesResolves to this document.
pack_idUUID v4yesGlobally unique pack identifier.
captured_atISO-8601 with timezoneyesWall-clock time of capture.
captured_byobjectyesSee below.
workspace_idUUIDyesVettedHaul workspace (brokerage).
workspace_legal_namestringyesLegal entity name of the brokerage.
workspace_usdotstringyesBrokerage's own USDOT/MC number.

captured_by object:

FieldTypeRequiredNotes
user_idUUIDyesVettedHaul user ID.
user_emailstringyesEmail of the capturing user.
user_rolestringyesdispatcher, broker, admin, etc.
client_ipstringyesIP address at capture time, for chain-of-custody.
user_agentstringyesBrowser/client identifier.

2. Subject

The carrier being vetted. Pulled from FMCSA SAFER + the broker's input.

FieldTypeRequiredNotes
usdot_numberstringyesPrimary FMCSA identifier.
mc_numberstringconditionalRequired if carrier holds motor carrier authority.
legal_namestringyesAs filed with FMCSA.
dba_namestringoptionalDoing-business-as, if any.
physical_addressobjectyesstreet, city, state, zip, country.
mailing_addressobjectoptionalSame shape if different from physical.
entity_typestringyesCarrier, Carrier/Broker, Broker, Freight Forwarder.
operation_classificationstring[]yesAuthorized For Hire, Interstate, Hazmat, etc.
power_unitsintegeroptionalSelf-reported by carrier; from MCS-150.
driversintegeroptionalSelf-reported by carrier; from MCS-150.

3. Four Checks

The four data captures that satisfy the FMCSA-baseline negligent-hiring defense. Each check carries its own source URL, fetched-at timestamp, and response hash so the underlying data can be re-fetched and re-verified in discovery.

3a. Safety Rating Snapshot

Source: FMCSA SAFER (https://safer.fmcsa.dot.gov).

FieldTypeRequiredNotes
ratingenumyesSatisfactory, Conditional, Unsatisfactory, Unrated, None.
rating_dateISO-8601 dateconditionalRequired when rating is not Unrated/None.
last_review_dateISO-8601 dateoptionalMost recent compliance review.
source_urlstring (URL)yesExact URL fetched.
source_fetched_atISO-8601 datetimeyesWhen VettedHaul retrieved the data.
source_response_hashstring (SHA-256)yesHash of the raw upstream response body.
source_response_archive_urlstring (URL)optionalVettedHaul-hosted archive of the raw response.

3b. CSA Scores Snapshot

Source: FMCSA SMS (https://ai.fmcsa.dot.gov/SMS). All seven BASIC categories captured in a single snapshot. A carrier missing any category is still captured with a null percentile and a data_insufficient flag.

FieldTypeRequiredNotes
sms_data_dateISO-8601 dateyesThe SMS "data through" date.
categoriesobject[]yesSeven entries. See below.
source_urlstring (URL)yesExact URL fetched.
source_fetched_atISO-8601 datetimeyesWhen VettedHaul retrieved the data.
source_response_hashstring (SHA-256)yesHash of raw response.
source_response_archive_urlstring (URL)optionalArchived raw response.

Each categories[i] object:

FieldTypeRequiredNotes
basicenumyesUnsafeDriving, HoursOfService, DriverFitness, ControlledSubstances, VehicleMaintenance, HazmatCompliance, CrashIndicator.
percentilenumber or nullyes0-100; null if data insufficient.
thresholdnumberyesAlert threshold for this BASIC.
alert_statusenumyesOverThreshold, UnderThreshold, NoData.
measure_valuenumber or nulloptionalRaw measure value.
data_insufficientbooleanyestrue if FMCSA reports insufficient data.

3c. Insurance Snapshot

Two-source check. (1) Carrier-supplied certificate of insurance (parsed PDF) and (2) FMCSA L&I database (insurance on file). Concur or diverge.

FieldTypeRequiredNotes
coi_pdf_hashstring (SHA-256)yesHash of the COI PDF received.
coi_pdf_archive_urlstring (URL)yesVettedHaul-hosted immutable archive of the PDF.
coi_parsed_atISO-8601 datetimeyesWhen VettedHaul extracted fields.
coi_parser_versionstringyesE.g. vh-coi-parser@1.0.0.
coi_parser_confidencenumberyes0-1.0. Below 0.85 forces human review.
liability_carrierstringyesInsurance company name on the COI.
liability_policy_numberstringyesAs shown on the COI.
liability_each_occurrenceinteger (USD)yesSingle-occurrence limit.
liability_aggregateinteger (USD)optionalAggregate limit, if shown.
liability_effective_dateISO-8601 dateyesPer the COI.
liability_expiration_dateISO-8601 dateyesPer the COI.
cargo_carrierstringconditionalIf cargo coverage listed.
cargo_limitinteger (USD)conditionalIf cargo coverage listed.
certificate_holderstringyesThe broker named on the COI.
issuer_namestringyesAgent/broker who issued the certificate.
issuer_addressstringoptionalIssuer mailing address.
fmcsa_li_concurenumyesConcur, Diverge, LIDataMissing.
fmcsa_li_carrierstringconditionalRequired when fmcsa_li_concur != LIDataMissing.
fmcsa_li_policy_numberstringconditionalAs on FMCSA L&I.
fmcsa_li_effective_dateISO-8601 dateconditionalAs on FMCSA L&I.
fmcsa_li_source_urlstring (URL)yesExact L&I URL fetched.
fmcsa_li_fetched_atISO-8601 datetimeyesWhen VettedHaul fetched L&I.
fmcsa_li_response_hashstring (SHA-256)yesHash of L&I response.
fmcsa_li_response_archive_urlstring (URL)optionalArchived L&I response.

A Diverge result is a flag, not a fail. Documentation of the divergence is part of the defense; ignoring the COI in favor of L&I is a separate operational policy.

3d. Operating Authority Snapshot

Source: FMCSA L&I (https://li-public.fmcsa.dot.gov).

FieldTypeRequiredNotes
authority_typestring[]yesMotorCarrierProperty, MotorCarrierHHG, MotorCarrierPassenger, Broker, FreightForwarder.
authority_statusenumyesActive, Inactive, NotAuthorized, RevokedPending.
authority_grant_dateISO-8601 dateconditionalWhen status is Active.
bond_or_trust_on_filebooleanconditionalRequired for Broker authority.
bond_amountinteger (USD)conditionalIf bond_or_trust_on_file.
source_urlstring (URL)yesExact L&I URL fetched.
source_fetched_atISO-8601 datetimeyesWhen VettedHaul retrieved the data.
source_response_hashstring (SHA-256)yesHash of raw response.
source_response_archive_urlstring (URL)optionalArchived raw response.

4. Decision

What the broker did with the four checks. The decision is the act the litigation will turn on.

FieldTypeRequiredNotes
decisionenumyesBooked, Rejected, MonitorOnly.
decision_atISO-8601 datetimeyesWall-clock at the decision moment.
decision_byobjectyesSame shape as captured_by.
decision_rationalestringconditionalRequired when decision is Rejected. Free text.
load_referencestringoptionalThe broker's internal load/booking ID.
shipper_referencestringoptionalShipper name or reference, if disclosable.
decision_policy_refstringoptionalReference to the brokerage's written vetting policy.

5. Authentication

Three layers: hash of the canonical JSON, RFC 3161 trusted timestamp, and a custodian attestation statement. Maps to FRE 901 (authenticity), FRE 902(11)/(12) (self-authenticating business records), and FRE 803(6) (records of regularly conducted activity).

FieldTypeRequiredNotes
canonical_json_hashstring (SHA-256)yesHash of the deterministically-serialized JSON of sections 1-4 (and 6 if present).
hash_algorithmstringyesSHA-256 for v1.0.
serialization_specstringyesRFC8785 (JCS canonicalization).
rfc3161_timestampobjectyesSee below.
signatureobjectoptionalEd25519 signature; required in v1.1.
custodian_attestationobjectyesSee below.
chain_of_custodyobject[]yesAppend-only event log. See below.

rfc3161_timestamp:

FieldTypeRequiredNotes
tsa_urlstring (URL)yesTrusted Timestamp Authority used.
tokenstring (base64)yesThe RFC 3161 timestamp token.
token_hashstring (SHA-256)yesHash of the token, for inclusion in the pack hash.
obtained_atISO-8601 datetimeyesWhen the TSA token was acquired.

custodian_attestation:

FieldTypeRequiredNotes
attestation_textstringyesBoilerplate business-records statement (template below).
custodian_namestringyesLegal name of the custodian (brokerage operator).
custodian_titlestringyesRole within the brokerage.
custodian_signed_atISO-8601 datetimeyesWhen the attestation was acknowledged.
custodian_signature_methodenumyesClickThrough, Wet, DigitalCertificate.

chain_of_custody[i]:

FieldTypeRequiredNotes
eventenumyesCreated, Sealed, Exported, MonitorEvent, Amended.
atISO-8601 datetimeyesWhen the event occurred.
bystring (user_id)yesActor.
notestringoptionalHuman-readable detail.
prior_hashstring (SHA-256)conditionalHash of the prior chain entry, forming the chain.
entry_hashstring (SHA-256)yesHash of this entry.

Default custodian attestation text

I, the undersigned, am the custodian of business records for [WORKSPACE_LEGAL_NAME]. The information contained in this Evidence Pack was recorded at or near the time of the events described, by a person with knowledge of those events, in the regular course of the brokerage's vetting activity. Records of this kind are kept in the regular course of business. The Evidence Pack and its constituent data captures have not been altered since the time stamps recorded herein.

6. Continuous Monitoring (Defender tier)

Optional section. Present when the pack covers a load with continuous monitoring through delivery.

FieldTypeRequiredNotes
monitor_started_atISO-8601 datetimeyesWhen monitoring began.
monitor_ended_atISO-8601 datetimeconditionalRequired if monitoring closed.
monitor_check_intervalstringyesE.g. PT6H (ISO-8601 duration).
eventsobject[]yesDelta events; see below. May be empty array.

Each events[i]:

FieldTypeRequiredNotes
atISO-8601 datetimeyesWhen VettedHaul observed the delta.
delta_typeenumyesRatingChanged, CSAAlertEntered, CSAAlertExited, AuthoritySuspended, InsuranceLapsed, OutOfService.
beforeobjectyesSnapshot fragment of the prior state.
afterobjectyesSnapshot fragment of the new state.
source_response_hashstring (SHA-256)yesHash of the upstream response that produced this delta.
notifiedobject[]yesWho/when was notified within VettedHaul.

---

Canonical serialization

The JSON is serialized using RFC 8785 (JSON Canonicalization Scheme):

  • Object keys in lexicographic order.
  • No insignificant whitespace.
  • Numbers as the shortest exact decimal representation.
  • UTF-8 throughout.

The canonical_json_hash covers sections 1-4 (and 6 if present), with section 5 hashes computed last so they can reference the prior hashes.

Export envelope

Each Evidence Pack exports as a pair:

  • vettedhaul-pack-<pack_id>.json — canonical JSON.
  • vettedhaul-pack-<pack_id>.pdf — deterministic PDF render of the JSON.

The PDF includes:

  • Cover page: pack ID, capture timestamp, custodian, subject carrier.
  • Sections 1-6 rendered in document order with the same table structure.
  • A final page reproducing canonical_json_hash, the RFC 3161 token

hash, and a human-readable verification instruction: how to re-hash the JSON and confirm a match.

PDF renderer is versioned (pdf_renderer_version) and the renderer output is deterministic for a given JSON input. Two renders of the same pack at different times produce byte-identical PDFs.

Compatibility, versioning, deprecation

  • The spec version follows semver. Field additions are minor (1.x).

Field removals or semantic changes are major (2.x).

  • A v1.0 pack is forward-compatible with v1.x readers.
  • VettedHaul retains historical renderers so a v1.0 pack rendered today

can be re-rendered byte-identically in 7 years (the retention floor).

  • Deprecated fields stay in the schema with a deprecated: true flag in

the spec; they are not removed mid-major.

Open items for v1.1

These are deliberately deferred to keep v1.0 shippable:

  • Ed25519 signature (required in v1.1; optional in v1.0).
  • Multi-custodian co-attestation (when two parties sign the same pack).
  • Schema for TMS-integrated booking references (Defender Pro tier).
  • Schema for non-US-domiciled carriers (Mexican, Canadian cross-border).

License

This spec is published under CC-BY 4.0. The schema is freely implementable. Use of the "VettedHaul Evidence Pack" name requires a conformance test pass; non-conforming implementations may use the schema but not the name.

Changelog

  • 2026-05-21 - v1.0.0 (draft). Initial publication. Five required

sections + optional Continuous Monitoring. RFC 3161 timestamp required. Ed25519 signature deferred to v1.1.

Conformance is what makes the pack defensible.

Any implementation may use the schema. Only conforming implementations may use the “VettedHaul Evidence Pack” name. Conformance tests publish with v1.1.

Get early access