Skip to content

Safety Buffer Parameters

Document ID: PLCY-BUF-001
Version: 1.2
Effective Date: January 21, 2026
Last Review: January 21, 2026
Owner: Hop And Haul Team


CONFIDENTIAL

This document is CONFIDENTIAL and for internal use only. Do not distribute outside the organization.

1. Purpose

This document defines the safety buffer parameters that govern when and how Hop And Haul may contact drivers. The core principle: never create the dangerous situation.

A driver in the middle lane of a busy highway, 0.5 miles from an exit they'd need to take, should never receive a squawk that requires mental processing or physical action.

All parameters are company-tunable to match fleet safety policies.


2. The Problem We're Solving

2.1 The Dangerous Scenario

Driver: 65 mph, middle lane, I-95
Exit needed for pickup: 0.4 miles ahead
Agent: "Hop And Haul. Transport nearby. Hold or pass?"
Driver: [Now must decide AND lane change AND exit]

This is unacceptable.

2.2 What We Must Know Before Contact

Data PointSourceWhy It Matters
Current speedSamsara GPSHigh speed = longer buffers
Current positionSamsara GPSProximity to maneuvers
Projected routeSamsaraUpcoming exits, turns
Traffic densitySamsara/externalCongestion = harder maneuvers
Time to next maneuverCalculatedDon't interrupt before critical actions
Lane positionSamsara (if available)Middle lane = harder exit

3. Buffer Types

3.1 Buffer Taxonomy

┌─────────────────────────────────────────────────────────────────────┐
│                        OFFER LIFECYCLE                              │
└─────────────────────────────────────────────────────────────────────┘

[MATCH IDENTIFIED]


┌──────────────┐
│ PRE-CONTACT  │ ← Can we safely contact this driver right now?
│ BUFFER       │   (speed, maneuvers, traffic)
└──────┬───────┘
       │ SAFE TO CONTACT

[SQUAWK DELIVERED]


┌──────────────┐
│ DECISION     │ ← How long until they need to respond?
│ BUFFER       │   (before offer expires or needs action)
└──────┬───────┘
       │ DRIVER HOLDS/ACCEPTS

┌──────────────┐
│ ACCEPTANCE   │ ← How long between "yes" and needing to act?
│ TO ACTION    │   (route change, lane change, exit)
│ BUFFER       │
└──────┬───────┘


┌──────────────┐
│ PICKUP       │ ← Safe approach, stop, passenger board
│ BUFFER       │
└──────┬───────┘


┌──────────────┐
│ DROP-OFF     │ ← Safe stop, passenger exit, re-merge
│ BUFFER       │
└──────────────┘

4. Pre-Contact Buffer (Gate Check)

4.1 Purpose

Before ANY contact (squawk, banner, notification), verify the driver is in a safe state to receive information.

4.1a Call Initiation Timing Requirement (per PLCY-COM-001)

POLICY REQUIREMENT

Per PLCY-COM-001 Section 3.2, ride opportunities shall only be presented when the routing algorithm confirms:

  • At least 15 minutes of buffer time before pickup
  • At least 15 minutes of buffer time before drop-off

This ensures drivers have adequate time to make decisions without time pressure and execute maneuvers safely.

4.2 Gate Conditions

ConditionCheckDefault ThresholdTunable
Speed gateCurrent velocityIf >70 mph, no contactYes
Maneuver proximityTime to next turn/exit on routeMust be >3 min awayYes
Recent maneuverTime since last turn/exitMust be >1 min sinceYes
Traffic densitySamsara/external traffic scoreNo contact in "heavy"Yes
Highway merge zoneWithin X miles of on-rampNo contact in merge zoneYes
Construction zoneGeofenced areasNo contactYes
Weather severityExternal weather APINo contact in severeYes

4.3 Pre-Contact Decision Flow

MATCH IDENTIFIED


┌─────────────────────────────────────┐
│ QUERY SAMSARA:                      │
│ • Current speed                     │
│ • Position on route                 │
│ • Next maneuver + distance          │
│ • Traffic conditions                │
└──────────────┬──────────────────────┘

       ┌───────┴───────┐
       ▼               ▼
   GATE PASS       GATE FAIL
       │               │
       ▼               ▼
   CONTACT         DEFER
   DRIVER          (re-check in 2 min)

4.4 Default Pre-Contact Parameters

yaml
pre_contact_buffer:
  speed_max_mph: 70
  time_to_next_maneuver_min_seconds: 180  # 3 minutes
  time_since_last_maneuver_min_seconds: 60  # 1 minute
  traffic_density_block: ["heavy", "severe"]
  merge_zone_buffer_miles: 1.0
  construction_zone_block: true
  weather_block: ["severe", "hazardous"]
  re_check_interval_seconds: 120

5. Decision Buffer

5.1 Purpose

After squawk delivery, give the driver adequate time to process and respond without pressure.

5.2 Parameters

ParameterDescriptionDefaultTunable
Response windowTime before offer auto-expires30 secondsYes
Silence = queueIf no response, don't expire—queue for stoppedtrueYes
No countdownNever communicate "X seconds remaining"EnforcedNo

5.3 Key Behavior

SQUAWK: "Hop And Haul. Transport nearby. Hold or pass?"

[0-5 sec]   Driver processing
[5-30 sec]  Waiting for response

IF response received → process
IF silence at 30 sec → queue for STOPPED state, no re-prompt

5.4 Default Decision Parameters

yaml
decision_buffer:
  response_window_seconds: 30
  silence_behavior: "queue_for_stopped"
  countdown_announcement: false  # NEVER
  re_prompt_allowed: false

6. Acceptance-to-Action Buffer

6.1 Purpose

After driver accepts, ensure they have adequate time and distance before needing to change lanes, exit, or alter course.

6.2 The Calculation

Required buffer = f(speed, lane_changes_needed, traffic, maneuver_type)
FactorImpact
Current speedHigher speed = longer buffer
Lane changes neededEach lane change adds time
Traffic densityHeavy traffic = longer buffer
Maneuver typeExit vs. turn vs. lane change

6.3 Minimum Buffers by Speed

SpeedMin Distance to First ManeuverMin Time to First Maneuver
<30 mph0.25 miles30 seconds
30-50 mph0.5 miles45 seconds
50-65 mph1.0 mile60 seconds
>65 mph2.0 miles90 seconds

6.4 Lane Change Penalty

For each lane change required:

Traffic DensityTime Added per Lane
Light+10 seconds
Moderate+20 seconds
Heavy+45 seconds

6.5 Offer Eligibility Check

Before presenting offer, calculate:

pickup_exit_distance = distance to exit for pickup
current_speed = from Samsara
lanes_to_cross = estimated from current lane to exit lane
traffic = from Samsara

required_buffer = base_buffer(speed) + lane_penalty(lanes_to_cross, traffic)

IF pickup_exit_distance < required_buffer:
    → DO NOT OFFER (driver would be forced into unsafe maneuver)
    → Try next candidate

6.6 Default Acceptance-to-Action Parameters

yaml
acceptance_to_action_buffer:
  base_buffer_by_speed:
    under_30_mph:
      min_distance_miles: 0.25
      min_time_seconds: 30
    30_to_50_mph:
      min_distance_miles: 0.5
      min_time_seconds: 45
    50_to_65_mph:
      min_distance_miles: 1.0
      min_time_seconds: 60
    over_65_mph:
      min_distance_miles: 2.0
      min_time_seconds: 90

  lane_change_penalty_seconds:
    light_traffic: 10
    moderate_traffic: 20
    heavy_traffic: 45

  enforce_buffer: true  # If false, offer anyway with warning

7. Pickup Buffer

7.1 Purpose

Ensure safe approach, stop, passenger boarding, and departure from pickup location.

7.2 Components

ComponentDescriptionDefaultTunable
Approach bufferTime to safely decelerate and position60 secondsYes
Dwell timeMinimum time at pickup for safe boarding120 secondsYes
Departure bufferTime to safely accelerate and merge60 secondsYes
Pickup zone typeAdjustments for truck stop vs. roadsideSee tableYes

7.3 Pickup Zone Adjustments

Zone TypeApproach BufferDwell TimeDeparture Buffer
Truck stop60 sec90 sec60 sec
Rest area60 sec90 sec60 sec
Designated pickup45 sec60 sec45 sec
Roadside (shoulder)90 sec180 sec120 sec
Urban street60 sec120 sec90 sec

7.4 Default Pickup Parameters

yaml
pickup_buffer:
  approach_buffer_seconds: 60
  dwell_time_seconds: 120
  departure_buffer_seconds: 60

  zone_adjustments:
    truck_stop:
      approach: 60
      dwell: 90
      departure: 60
    rest_area:
      approach: 60
      dwell: 90
      departure: 60
    designated_pickup:
      approach: 45
      dwell: 60
      departure: 45
    roadside_shoulder:
      approach: 90
      dwell: 180
      departure: 120
    urban_street:
      approach: 60
      dwell: 120
      departure: 90

8. Drop-Off Buffer

8.1 Purpose

Ensure safe stop, passenger exit, and driver's return to route.

8.2 Components

ComponentDescriptionDefaultTunable
Approach bufferTime to safely position for drop-off60 secondsYes
Dwell timeMinimum time for safe passenger exit90 secondsYes
Re-merge bufferTime to safely return to traffic flow90 secondsYes

8.3 Default Drop-Off Parameters

yaml
dropoff_buffer:
  approach_buffer_seconds: 60
  dwell_time_seconds: 90
  remerge_buffer_seconds: 90

  zone_adjustments:
    # Same structure as pickup

9. Total Route Time Impact Calculation

9.1 Why This Matters

When presenting offers, the "adds X minutes" must include ALL buffers, not just drive time.

9.2 Calculation

total_impact =
    drive_time_to_pickup +
    pickup_approach_buffer +
    pickup_dwell_time +
    pickup_departure_buffer +
    drive_time_with_passenger +
    dropoff_approach_buffer +
    dropoff_dwell_time +
    dropoff_remerge_buffer +
    return_to_original_route_time

9.3 What Driver Hears

"Adds about 25 minutes."

This 25 minutes INCLUDES all buffers. We do not tell driver "drive time is 15 min but we add 10 min for safety"—we just give the total.


10. Hours of Service (HOS) & ELD Compliance

10.1 Purpose

Hop And Haul transport matches must never cause a driver to exceed FMCSA Hours of Service regulations. The platform queries ELD data before any match offer and rejects matches that would violate HOS rules.

10.2 FMCSA HOS Rules (CMV Property-Carrying)

RuleLimitHop And Haul Enforcement
11-Hour DrivingMax 11 hours driving after 10 consecutive hours off-dutyTrip cannot exceed remaining driving hours minus buffer
14-Hour WindowCannot drive beyond 14th consecutive hour after coming on-dutyTrip must complete within remaining window
30-Minute BreakRequired after 8 cumulative hours of drivingMatch blocked if break due before trip completion
60/70-Hour LimitMax 60/70 hours on-duty in 7/8 consecutive daysWeekly hours validated before match
10-Hour Off-Duty10 consecutive hours off-duty required before drivingCannot match drivers still in off-duty period
34-Hour RestartResets 60/70-hour clockValidated in weekly hours calculation

10.3 ELD Data Requirements

Data PointSourceRequired for Match
Current duty statusSamsara ELDYes - must be "Driving" or "On-Duty"
Hours driven todaySamsara ELDYes - for 11-hour limit
Time since on-duty startSamsara ELDYes - for 14-hour window
Time since last 30-min breakSamsara ELDYes - for break rule
Hours in last 7/8 daysSamsara ELDYes - for 60/70 limit
Time of last 10-hour off-dutySamsara ELDYes - for rest validation

10.4 HOS Buffer Calculation

Before offering a match, calculate total trip impact:

estimated_trip_time =
    drive_to_pickup +
    pickup_dwell +
    drive_with_passenger +
    dropoff_dwell +
    return_to_route

HOS_safety_buffer = 30 minutes  # Mandatory
delay_buffer = 15 minutes       # Traffic, loading, etc.

required_driving_hours = estimated_trip_time + HOS_safety_buffer + delay_buffer

10.5 HOS Gate Checks

CheckCalculationPass Criteria
11-hour check11 - hours_driven_today>= required_driving_hours
14-hour check14 - hours_since_on_duty>= required_driving_hours
Break checktime_to_break_required>= required_driving_hours OR break available on route
Weekly check60/70 - hours_this_period>= required_driving_hours

10.6 HOS Validation Flow

MATCH CANDIDATE IDENTIFIED


┌─────────────────────────────────────┐
│ QUERY ELD:                          │
│ • Current duty status               │
│ • Hours driven today                │
│ • 14-hour window remaining          │
│ • Break status                      │
│ • Weekly hours                      │
└──────────────┬──────────────────────┘

       ┌───────┴───────┐
       ▼               ▼
   ALL PASS        ANY FAIL
       │               │
       ▼               ▼
   PROCEED        EXCLUDE DRIVER
   TO OFFER       FROM THIS MATCH

10.7 Default HOS Parameters

yaml
hos_compliance:
  # Safety buffers added to trip time
  hos_safety_buffer_minutes: 30
  delay_buffer_minutes: 15

  # Minimum remaining time to be eligible
  min_11_hour_remaining_minutes: 60
  min_14_hour_remaining_minutes: 60

  # Break requirements
  break_warning_threshold_hours: 7  # Warn if close to 8-hour break rule

  # ELD data freshness
  eld_data_max_staleness_seconds: 60
  eld_query_timeout_seconds: 10

  # Fallback if ELD unavailable
  eld_unavailable_behavior: "exclude_driver"  # Never assume compliance

11. Same-Day Trip Constraint

11.1 Core Principle

Hop And Haul matches are same-day, en-route only. No overnight trips.

A transport match must:

  • Begin and end within the same operational day
  • Complete before the pickup driver's duty day ends
  • Not require either driver to sleep in the cab together
  • Fit naturally within the pickup driver's existing route

11.2 Why This Matters

RiskMitigation
Cab sharing for sleepProhibited - no overnight trips
Personal safetyTrip ends same day, both drivers return to normal operations
HOS violationsTrip must fit within current duty cycle
Route deviation creepOnly en-route, same-direction matches

11.3 Operational Day Definition

operational_day_start = driver's on-duty start time (from ELD)
operational_day_end = operational_day_start + 14 hours (or earlier if HOS exhausted)

11.4 Trip Window Validation

CheckRequirement
Drop-off deadlineTrip must complete >= 60 minutes before driver's 14-hour window expires
Time of day capNo new matches initiated after 8:00 PM local time (configurable)
Duration capMaximum trip duration: 4 hours (configurable by company)
Same calendar dayDrop-off must occur on same calendar date as pickup

11.5 Trip Window Calculation

MATCH REQUEST RECEIVED


┌─────────────────────────────────────┐
│ CALCULATE:                          │
│ • current_time                      │
│ • estimated_trip_duration           │
│ • driver_14hr_window_remaining      │
│ • estimated_dropoff_time            │
└──────────────┬──────────────────────┘


┌─────────────────────────────────────┐
│ VALIDATE:                           │
│ • dropoff_time < 14hr_window_end    │
│ • dropoff_time < daily_cutoff       │
│ • trip_duration < max_trip_hours    │
│ • pickup_date == dropoff_date       │
└──────────────┬──────────────────────┘

       ┌───────┴───────┐
       ▼               ▼
   ALL PASS        ANY FAIL
       │               │
       ▼               ▼
   PROCEED        REJECT MATCH
   TO OFFER       (too late in day)

11.6 Default Same-Day Parameters

yaml
same_day_trip:
  # Maximum trip duration
  max_trip_duration_hours: 4

  # Daily cutoff for new matches
  daily_match_cutoff_time: "20:00"  # 8 PM local
  daily_match_start_time: "06:00"   # 6 AM local (quiet hours protection)

  # Buffer before 14-hour window expires
  window_end_buffer_minutes: 60

  # Calendar day enforcement
  require_same_calendar_day: true

  # Overnight explicitly prohibited
  overnight_trips_allowed: false  # CANNOT be changed

11.7 Ineligible Trip Scenarios

ScenarioOutcome
Drop-off would occur after midnightMatch rejected
Drop-off would occur after driver's 14-hour windowMatch rejected
Trip duration exceeds 4 hoursMatch rejected
Match requested after 8 PMMatch rejected (queue for tomorrow)
Driver has <2 hours remaining in duty dayDriver excluded from matches

11.8 En-Route Requirement

Matches are only offered when the pickup driver is already traveling in a direction that naturally passes the passenger's pickup and drop-off locations:

CriteriaRequirement
Route overlapPickup and drop-off within X miles of driver's existing route
Directional matchPassenger drop-off is in same direction as driver's destination
Minimal deviationTotal deviation from original route < 30% of remaining distance

This ensures matches are opportunistic, not destination-altering.


12. Company-Level Configuration

12.1 Configuration Interface

All parameters are configurable at the company level:

yaml
# Company: ACME Trucking
# Safety Buffer Configuration v1

company_id: acme_trucking
effective_date: 2025-01-15

safety_buffers:
  pre_contact:
    speed_max_mph: 65  # More conservative than default
    time_to_next_maneuver_min_seconds: 240  # 4 min, not 3
    traffic_density_block: ["moderate", "heavy", "severe"]

  decision:
    response_window_seconds: 45  # More time to decide

  acceptance_to_action:
    over_65_mph:
      min_distance_miles: 2.5  # More conservative

  pickup:
    dwell_time_seconds: 150  # More time for boarding

  dropoff:
    remerge_buffer_seconds: 120  # More time to merge

12.2 Parameter Governance

Change TypeApproval Required
Make more conservativeOperations Manager
Make less conservativeSafety Director + Legal
Disable a bufferNOT ALLOWED
Add new buffer typeSafety Director

12.3 Minimum Enforced Values

Some values have hard floors that cannot be reduced:

ParameterHard FloorRationale
Pre-contact speed max75 mphAbove this, no safe contact
Time to maneuver min60 secMinimum safe processing
Decision window15 secBelow this = pressure
Pickup dwell45 secMinimum safe boarding
Drop-off dwell30 secMinimum safe exit

13. Samsara Integration Requirements

13.1 Required Data Points

Data PointSamsara APIRefresh Rate
Current speedVehicle StatsReal-time
Current positionGPSReal-time
HeadingGPSReal-time
Route (if dispatched)Routes APIOn change
Next maneuverCalculated from routeReal-time
Traffic conditionsTraffic API or external5 min
ELD statusHOS APIReal-time

13.2 Data Freshness Requirements

Data PointMax StalenessIf Stale
Speed10 secondsBlock contact
Position30 secondsBlock contact
Traffic10 minutesUse "moderate" default
Route5 minutesRe-query before offer

13.3 Fallback Behavior

If Samsara data unavailable:

ScenarioBehavior
Speed unknownAssume 65 mph (conservative)
Position unknownBlock all contact
Route unknownCannot calculate buffers → block offer
Traffic unknownAssume "moderate"

14. Monitoring & Alerts

14.1 Safety Buffer Violations

If a buffer is violated (should never happen, but monitor):

ViolationAlert LevelResponse
Contact made inside maneuver windowCriticalImmediate review
Offer made without adequate exit distanceCriticalImmediate review
Pickup dwell under minimumWarningReview at shift end
Pattern of near-violationsEscalationParameter review

14.2 Audit Queries

  • All offers made with buffer calculations
  • Any offers deferred due to buffer gates
  • Buffer parameter changes over time
  • Violations and near-misses

15. Document Control

VersionDateAuthorChanges
1.0December 22, 2025Hop And Haul TeamInitial release
1.1December 22, 2025Hop And Haul TeamAdded HOS/ELD compliance (Section 10) and Same-Day Trip Constraint (Section 11)
1.2January 21, 2026Hop And Haul TeamAligned with PLCY-COM-001 v3.0: Added Section 4.1a documenting 15-minute pickup and 15-minute drop-off buffer requirements for call initiation per PLCY-COM-001 Section 3.2.

CONFIDENTIAL - Internal Use Only - Hop And Haul Policy Documentation