1 Dispatch
2 Route
3 Monitor
4 Optimize
5 Configure
6 Review
1 Dispatch & Map
2 Team & Settings
1 Dispatch Center
2 Route Optimization
Dispatch Dashboard
9:41
Dispatch
Today, Feb 24
Day Week
12 Assigned
3 Unassigned
4 En Route
5 Completed
Team
MJ
Marcus
TW
Tyler
KP
Kevin
RL
Rachel
Add
Unassigned Jobs 3 pending
Water Heater Replace
1422 Oak St • 10:00 AM – 12:00 PM
Panel Upgrade 200A
890 Maple Ave • 1:00 PM – 4:00 PM
HVAC Maintenance
345 Elm Dr • 2:30 PM – 4:00 PM
Active Jobs
Roof Inspection
Marcus J. • En route • ETA 12 min
En Route
Deck Refinishing
Tyler W. • On site since 8:15 AM
On Site

DispatchDashboard

useDispatch() • onAssignJob() • onToggleView()

Route Map View
9:41
Route Map
Marcus J.
Tyler W.
All
1
2
3
4
12 min
38 min
4
Stops
28.4
Miles
1h 42m
Drive Time
92%
On Time
Stops
1
Roof Inspection
1422 Oak St • 9:00 AM
Next
2
Gutter Clean-out
890 Maple Ave • 10:30 AM
Scheduled
3
Siding Repair
345 Elm Dr • 1:00 PM
Scheduled

RouteMapView

useRouteOptimization() • onOptimize() • onSelectDriver()


Assignment Detail
9:41
Job Assignment
Assigned
En Route
On Site
Complete
Roof Inspection
Job #3847
1422 Oak Street, Akron, OH 44302
9:00 AM – 11:00 AM (2h window)
Sarah Mitchell • (330) 555-0142
Service Type
Roofing Inspection Insurance
Crew Assignment
MJ
Marcus Johnson
Lead Technician
En Route
DK
Derek Kim
Apprentice
Assigned
Notes
Customer reports possible hail damage from last week’s storm. Check north-facing slope and gutters. Insurance adjuster may be present.

AssignmentDetail

useDispatch() • onUpdateStatus() • onNavigate() • onCall()

Speed Alerts
9:41
Speed Alerts
3 Critical Today
7 Warnings (7d)
Critical — 78 mph in 45 zone
Marcus Johnson • 8:47 AM
+33 mph
I-77 N near Ghent Rd exit, Akron
Warning — 52 mph in 35 zone
Tyler Ward • 8:23 AM
+17 mph
Market St near Main St, Akron
Info — 42 mph in 35 zone
Kevin Park • 7:55 AM
+7 mph
Portage Path, Akron
Critical — Hard Braking
Rachel Lee • 7:32 AM
-0.7g
W Exchange St & S Main, Akron
Warning — 61 mph in 45 zone
Marcus Johnson • Yesterday 4:12 PM
+16 mph

SpeedAlerts

useSpeedAlerts() • onDismiss() • onViewDriver() • onConfigure()


Team Overview
9:41
Team
All (6)
Available (2)
On Job (3)
MJ
Marcus Johnson
On Job
4 jobs today 87%
TW
Tyler Ward
On Job
3 jobs today 72%
KP
Kevin Park
Available
2 jobs today 45%
RL
Rachel Lee
On Job
3 jobs today 68%
DK
Derek Kim
Available
1 job today 22%
JS
Jake Sullivan
Break
2 jobs today 55%

TeamOverview

useTeamMembers() • onSelectMember() • onAddMember()

Route Optimization
9:41
Optimize Route
Before
2h 14m
42.8 miles
After
1h 42m
28.4 miles
Saves 32 min & 14.4 miles
Constraints
Time Windows Priority Jobs Vehicle Type Territory
Optimized Order
1
Roof Inspection
1422 Oak St • 9:00 AM
Priority
2
Gutter Clean-out
890 Maple Ave • 10:30 AM
8 min drive
3
Siding Repair
345 Elm Dr • 1:00 PM
14 min drive
4
Furnace Tune-up
72 Pine Ln • 3:00 PM
10 min drive

RouteOptimization

useRouteOptimization() • onApply() • onReorder() • onToggleConstraint()


Dispatch Settings
9:41
Settings
Dispatch Rules
Auto-Dispatch
Assign new jobs to nearest available crew
Auto-Optimize Routes
Re-optimize when new jobs are added
Late Arrival Alerts
Notify when crew is 10+ min late
Speed Monitoring
Speed Alerts
Monitor driver speed in real time
Warning Threshold 10 mph over
5 mph 25 mph
Critical Threshold 20 mph over
10 mph 40 mph
Work Hours
Start Time 7:00 AM
End Time 5:00 PM
Break Duration 30 min
Notifications
Push Notifications
Speed alerts, assignments, updates
SMS Alerts
Critical speed violations only
Territory Zones
Downtown Akron
5 mile radius • 3 crews
Cuyahoga Falls
8 mile radius • 2 crews
Hudson / Stow
10 mile radius • 1 crew

DispatchSettings

useDispatchSettings() • onToggle() • onSliderChange() • onEditZone()

Dispatch History
9:41
History
Feb 17 – Feb 23, 2026
All Drivers Marcus J. Tyler W. Kevin P.
47 Jobs Completed
94% On-Time Rate
312 Miles Driven
18.2h Drive Time
Friday, Feb 21
Marcus Johnson
100% on-time
Stops Completed 5 / 5
Total Miles 34.2 mi
Drive Time 1h 48m
On-Site Time 6h 12m
Friday, Feb 21
Tyler Ward
83% on-time
Stops Completed 5 / 6
Total Miles 41.7 mi
Drive Time 2h 05m
On-Site Time 5h 44m
Thursday, Feb 20
Marcus Johnson
100% on-time
Stops Completed 4 / 4
Total Miles 28.9 mi
Drive Time 1h 32m
On-Site Time 5h 28m
Thursday, Feb 20
Kevin Park
67% on-time
Stops Completed 2 / 3
Total Miles 22.1 mi
Drive Time 1h 15m
On-Site Time 4h 10m

DispatchHistory

useDispatchHistory() • onDateChange() • onFilterDriver() • onExport()


Speed Alerts Dashboard
9:41
Speed Alerts
12 violations this week
3 active drivers
7-Day History
Mon
2
Tue
1
Wed
3
Thu
1
Fri
4
Sat
1
Sun
0
Top Offenders
MT
Mike Torres
5 violations • Last: I-77 North, 62mph in 45 zone
JW
Jake Wilson
3 violations • Last: SR-8, 58mph in 35 zone
CL
Chris Lee
2 violations • Last: Main St, 42mph in 25 zone

SpeedAlertsDashboard

useSpeedAlerts() • onViewDriver() • onFilterWeek()

Violation stats dashboard with 7-day history. Top offenders ranked by frequency.

Speed Alert Detail
9:41
Alert Detail
MT
Mike Torres
Technician
Vehicle: Ford F-150 #127
Alert Details
Location
I-77 North, mile marker 142
Speed
62 mph
Limit
45 mph
Overage
+17 mph
Time
Today, 2:34 PM
Status
Unreviewed

SpeedAlertDetail

useSpeedAlerts() • onMarkReviewed() • onDismiss()

Per-alert detail with driver, location, timestamp, and review status. Team-scope restricted.

Speed Alert Settings
9:41
Alert Settings
Speed Thresholds
Residential Zones
25 mph limit, alert at +10 mph
Commercial Zones
35 mph limit, alert at +15 mph
Highway Zones
65 mph limit, alert at +10 mph
Zone Configuration
Default alert threshold
+10 mph
+
Over posted speed limit
Notification recipients All managers
Auto-suspend after
5 violations
+
Team-scope guard
Only team managers see alerts for their assigned drivers

SpeedAlertSettings

useDispatchSettings() • onToggleZone() • onUpdateThreshold() • onUpdateRecipients()

Configurable speed thresholds per zone type. Team-scope guard ensures managers only see their team’s violations.


Data Architecture

Schema tables, hooks, queries, and mutations powering the Dispatch & Route Management system.

Schema Tables

dispatchRoutes
Route plans for each driver per day. Links to driver, date, status, total distance/time, optimization score.
schema
dispatchStops
Individual stops within a route. Job ref, sequence order, ETA, actual arrival, time window, status (pending/en_route/on_site/completed/skipped).
schema
speedAlerts
Speed violation events. Driver ref, severity (info/warning/critical), recorded speed, speed limit, GPS coordinates, timestamp, deceleration g-force.
schema
teamMembers
Dispatch-specific team member data. Links to contractorUsers, current status (available/on_job/break/off), vehicle assignment, territory zone, utilization metrics.
schema
dispatchSettings
Per-contractor dispatch configuration. Auto-dispatch toggle, speed thresholds, work hours, notification preferences, territory zone definitions.
schema
territoryZones
Geographic service zones. Name, center coordinates, radius, assigned crew count, color code for map display.
schema

React Hooks

useDispatch()
Core dispatch hook. Returns today's jobs (assigned/unassigned/active), team status, KPI counts. Provides assign, reassign, and status update methods.
hook
useRouteOptimization()
Route optimization engine. Takes driver ID and stops, returns optimized order with before/after metrics. Supports constraint toggles (time windows, priorities, vehicle type).
hook
useSpeedAlerts()
Real-time speed monitoring. Subscribes to speed alert events, returns alerts by severity. Provides dismiss and acknowledge methods.
hook
useTeamMembers()
Team management hook. Returns all team members with status, utilization, and today's job count. Provides status update and assignment methods.
hook
useDispatchSettings()
Settings management. Returns current dispatch config with toggle/slider update methods. Handles territory zone CRUD.
hook
useDispatchHistory()
Historical dispatch data. Takes date range and optional driver filter. Returns completed route cards with stats and on-time percentages.
hook

Convex Queries

dispatch.getToday
Returns all routes and stops for the current date, grouped by driver. Includes KPI aggregates (assigned/unassigned/en_route/completed counts).
query
dispatch.getRouteByDriver
Returns a single driver's route with all stops, ETAs, and status. Used by Route Map View and Assignment Detail screens.
query
dispatch.getSpeedAlerts
Returns speed alerts filtered by severity, date range, and driver. Supports pagination for history view.
query
dispatch.getTeamStatus
Returns all team members with real-time status, GPS location, and utilization percentage for the current day.
query
dispatch.getHistory
Returns completed route summaries by date range. Aggregates stops, miles, drive time, on-site time, and on-time rate per driver per day.
query
dispatch.getSettings
Returns dispatch configuration for the authenticated contractor including all thresholds, toggles, and territory zone definitions.
query

Convex Mutations

dispatch.assignJob
Assigns a job to a driver. Creates dispatchStop, updates route totals, triggers push notification to driver. Validates time window constraints.
mutation
dispatch.updateStopStatus
Transitions stop status (assigned → en_route → on_site → completed). Records actual arrival time, updates route metrics.
mutation
dispatch.optimizeRoute
Runs optimization algorithm on a driver's stops. Considers time windows, priority, distance, and traffic. Returns reordered stops with before/after comparison.
mutation
dispatch.reorderStops
Manually reorders stops in a route. Recalculates ETAs and total metrics. Used by drag-reorder UI in Route Optimization screen.
mutation
dispatch.recordSpeedAlert
Records a new speed violation event from the driver's device. Calculates severity based on threshold settings. Triggers notifications per config.
mutation
dispatch.updateSettings
Updates dispatch configuration. Handles toggles, threshold sliders, work hours, notification prefs, and territory zone CRUD operations.
mutation
Dispatch & Map View
9:41
Dispatch
Today’s Schedule
8
Jobs
5
Assigned
3
Unassigned
Jobs Queue
HVAC Install — 123 Main St
Jake M. • 9:00 AM
Furnace Repair — 456 Oak Ave
Sarah L. • 11:30 AM
Plumbing — 789 Elm Dr
Unassigned • 2:00 PM
Route Map
Interactive route map with live tracking
Team & Settings
9:41
Team & Settings
Team Members
Jake Martinez
Lead Tech • 3 jobs today
Online
Sarah Lewis
Technician • 2 jobs today
Online
Tom Rodriguez
Apprentice • Off today
Offline
Dispatch Settings
Auto-Assign
Speed Alerts
Route Optimization
Dispatch History
Dispatch Center
https://app.3bids.io/contractor/dispatch
3Bids
Schedule ⌘1
Map ⌘2
Team ⌘3
Routes ⌘4
Alerts ⌘5
History ⌘6
MK
Mike Kowalski
Contractor

Dispatch Center

8
Today’s Jobs
5
Assigned
3
Unassigned
3
Techs Online
Job Queue
HVAC Install — 123 Main St
Jake M. • 9:00 AM
Furnace Repair — 456 Oak Ave
Sarah L. • 11:30 AM
Plumbing — 789 Elm Dr
Unassigned • 2:00 PM
Live Map
Route Optimization
https://app.3bids.io/contractor/dispatch/routes
3Bids
Schedule ⌘1
Map ⌘2
Team ⌘3
Routes ⌘4
Alerts ⌘5
History ⌘6
MK
Mike Kowalski
Contractor

Route Optimization

47 mi
Total Distance
-12 mi
Optimized
1h 12m
Drive Time
$18
Fuel Saved
Optimized Route Map