Total Drivers
View all drivers →
Avg Overall Score
Amazon overall score →
Avg Safety
Netradyne score →
📅 Registration Expiring
Next 14 days →
🏠 Rentals Returning
Next 14 days →
🚨 Open Incidents
Need attention →
💬 Customer Complaints
This week →
📷 AI Damage Alerts
Open AI flags →
📦 Package Issues
Open today →
🤖
AI Weekly Coaching Briefs
Claude analyzes drivers and recommends coaching priorities. Saves ~1-2 hrs of Monday prep.
📅 Week
🎯 Who to analyze
Pick a week and a scope, then click "Generate Briefs" to get coaching recommendations.
Needs Attention
All clear!

No drivers need attention

Driver Stats
📊
No data yet

Add drivers to see stats

🏆 Top Performers — All Drivers Ranked
🏆
No drivers yet

Add drivers to see rankings

🔍
👤
No drivers yet

Click "Add Driver" to get started

JM
Driver
Loading...
Active
Overall Tier
🛡️ Safety ›
🎯 Quality ›
Packages
— Loading
Performance Summary

Loading trend…

Incident History

No incidents recorded

Coaching Log

No coaching notes yet

Loading clock status...
🚦
Start / End of Shift Check-In
Log your van, mileage, equipment, and any issues at the start and end of your shift.
📅 My Schedule This Week

Loading schedule...

📋 My Documents

Loading documents...

🚗 MVR Check

Loading...

⏱️ Attendance Points

Loading...

⚠️ Written Warnings

No written warnings on file

💬 Customer Complaints

No customer complaints recorded

🚨 Amazon-Reported Infractions

No infractions reported

🏥 OSHA Injuries (Form 300)

No OSHA injuries on file

📈 Daily Quality Trend

No daily quality data yet

🅿️ PPS Compliance

No PPS compliance data yet

🛡️ Safety Performance

Loading safety metrics…

🎯 Delivery Quality Performance

Loading quality metrics…

Recent (30d)
Pre-Trips
Post-Trips
Failed
Drivers w/o Pre-Trip
📋 Today's Inspections
No open incidents

All drivers are performing well

Total Vans
Passed Today
Failed Today
Not Inspected
Grounded
📅 Reg Exp <14d
🏠 Rentals <14d
Expiring <60d
🚐 Van Mgmt
🚐
No vans added yet

Click "+ Add Van" to add your fleet

📋 Recent Inspections
🔍
No inspections yet

Click "Start Inspection" to begin

Scheduled
Confirmed
Callouts
Open Shifts
⏱️
Total Hours
🕐
Overtime Hours (est.)
💰
Est. Wages · Set Rate ⚙️
💡 Drag to move · Shift+Drag to copy · Tap shift to edit
Past Due
Next 30 Days
Next 60 Days
Total Tracked
📅
Loading renewals…
📄
Loading…
📋
Loading…
💡 Points roll off after 6 months. Thresholds: 3 verbal · 6 written warning · 9 final warning · 12 termination eligible.
3-5 Points (Verbal)
6-8 Points (Written)
9-11 Points (Final)
12+ Points (Termination)
Drivers — Sorted by Points
📋
Loading…
Pending Signature
Signed
Total Issued
⚠️ All Warnings
📋
No warnings issued yet

Click "Issue Warning" to create one

📅 Today's Repair Cost
Tap to see vans →
🗓 This Week
Tap to see vans →
📆 This Month
Tap to see vans →
Loading…
Open Cases
Closed
Total Days Away
Recordable This Year
🏥
No injuries logged

Click "Log Injury" to create your first OSHA Form 300 entry.

📋 About OSHA Form 300: Federal law requires employers to maintain a log of work-related injuries and illnesses. Records must be kept for 5 years. The annual summary (Form 300A) must be posted from Feb 1 – Apr 30. DSPro provides the data — you're responsible for posting and reporting per OSHA guidelines.
🏆 Top Performers
🏆
No drivers yet

Add drivers to see rankings

Drop your weekly Amazon files here. Each tile knows what it expects.
👥
Driver Roster
AssociateData.csv
Your full station roster from Amazon Logistics. Adds new drivers, updates phones / emails / license dates, marks departures.
Drop file or click to browse
Routes to: Drivers tab
📋
Weekly Station Scorecard
DSPScorecard_*.pdf
Your station's weekly performance PDF — Overall Standing, Safety, Quality, per-driver metrics.
Drop PDF here
Routes to: Scorecards · Driver profiles · Leaderboard
📈
DSP Overview Dashboard
DSPOverview_*.csv
Station-level historical performance metrics with tier rankings.
Drop CSV here
Routes to: Historical scorecard data
📸
POD Rejects Report
*POD-Details.pdf
Photo-on-Delivery rejects per driver — blurry, no package detected, package in car, etc.
Drop PDF here
Routes to: Incidents (one per driver with rejects)
💬
Negative Customer Feedback
DSP_Customer_Delivery_Feedback_negative_*.csv
Customer complaints with feedback details (mishandled, unprofessional, wrong address, etc.).
Drop CSV here
Routes to: Driver profile complaints · Dashboard tile
🚨
Escalations / Infractions
Infractions_*.csv
Amazon-reported infractions — violations, defects, MDIs.
Drop CSV here
Routes to: Driver profile infractions section
⏱️
DVIC Inspection Times
*DVIC_Time_*.xlsx
Per-driver vehicle inspection durations. Flags inspections under 30 seconds (likely skipped).
Drop XLSX here
Routes to: Incidents (rushed-inspection flags)
💡 How it works: Drop a file on any tile. The Upload Station auto-detects the file type and routes the data where it belongs. Re-uploading the same week is safe — duplicates are replaced, not stacked.
📋
No scorecards yet

Upload your first Amazon scorecard to get started

Standing
Drivers
Packages
Shared
— / —
DA Viewed
— / —
Driver Scores
⚠️
Amazon Associate ID not yet configured. Click-throughs will use direct Amazon URLs (no affiliate commission). Apply at affiliate-program.amazon.com (1–3 day approval), then add your Associate ID in Settings to start earning commission.
🛠️
Catalog is empty

Click "+ Add Part" to start building your parts catalog. Or wait for the seeded mirror catalog to load.

📋 Check-Ins
🚦
Loading…
On Route
Confirmed
Callouts
Open Shifts
📋 Today's Assignments
📋
No shifts for this date

Add shifts on the Schedule page

💰 Weekly Bonus Calculator
Tier-based weekly bonus calculated from latest scorecard. Drivers with 6+ attendance points (configurable) don't qualify.
📅 This Week
Eligible
Disqualified
Total Payout
Already Paid
✎ Custom ›
Total Bonuses Awarded
View breakdown →
This Month
View breakdown →
Top Earner
View all →
⭐ Driver Points & Bonuses
🏆
No bonuses awarded yet

Award points and bonuses to recognize top drivers

⚙️ Auto-Bonus Rules
🟢
Fantastic Plus Week
+50 points
0️⃣
Zero Callouts Month
+100 points
💯
Perfect Safety Score
+75 points
🚀
Getting Started with DSPro
Welcome! DSPro is your all-in-one Amazon DSP management platform. This guide covers everything you need to run your fleet efficiently.

What is DSPro?

DSPro is a comprehensive operations platform built specifically for Amazon Delivery Service Partners (DSPs). It replaces the half-dozen tools most DSPs juggle — driver scheduling, van inspections, scorecards, attendance tracking, time clock, written warnings, incident reporting, document approvals, and team messaging — with one unified system that all your team uses.

Three Roles

DSPro has three user roles, each with their own view and permissions:

  • Owner — Full access. Sets up the station, invites managers and drivers, configures settings, sees billing.
  • Manager — Day-to-day operations. Can do almost everything an owner does (schedule, score, log incidents, approve documents) but can't change billing or invite other managers.
  • Driver — Self-service. Sees their own scorecard, schedule, attendance, and clock-in card. Can request shift changes, upload documents, and message the team.

First-Time Setup Checklist

1
Set your station location — Go to Time Clock → Station Setup. Click "📍 Use my current location" while standing at your DSP, then "💾 Save Station Settings". Drivers must be within the geofence radius (default 500ft) to clock in.
2
Set Performance ThresholdsSettings → Performance Thresholds. Defaults match Amazon's WTN2 station values; adjust if your station uses different cutoffs.
3
Add your first managerTeam & Access → + Invite Manager. Manager gets an email to set their password.
4
Add your fleetVan Mgmt → + Add Van for each van. Or use Bulk Upload if you have a CSV.
5
Add your driversDrivers → + Add Driver for each. Or + Bulk Invite to invite multiple at once.
6
Set hire dates — Dashboard banner appears: "X drivers missing hire dates" → click → set them all in one modal. Hire date is needed for tenure-based calculations.
7
Publish your first scheduleSchedule → click any cell to assign a driver. Save Draft to keep editing, Publish to notify drivers.
💡 Tip: The Dashboard shows colored "cockpit cards" highlighting items needing attention (registration expiring, MVR overdue, drivers missing hire dates, etc.). Check it daily.
📡
Upload Station Owner + Manager
One place to drop every weekly Amazon file. Each tile knows what it expects, where it goes, and asks for week/year up front.

📌 Why we built this

Before the Upload Station, files were scattered across the Drivers tab and Scorecards tab. Owners had to remember which file went where and used different upload buttons depending on type. The Upload Station is one futuristic-themed page where every file type has its own tile with clear instructions — drop it on the right tile and DSPro routes the data automatically.

📍 How to access: Sidebar → 📡 Upload Station (under the Performance section, above Scorecards).

🗂️ How it works

Each tile is organized by category — Roster & People, Performance, Defects & Quality, Fleet & Inspections. Click any tile and a modal opens with:

  • Specific instructions for that file type (what's in it, where to find it on Amazon)
  • Amazon Week Number + Year inputs (required for files that dedup by week, optional for others)
  • A drop zone showing the expected filename pattern
  • Inline status during processing — success or error messages right in the modal

📋 The 7 file types you can drop

Each tile is color-coded with a different glow on hover so it's easy to find at a glance:

👥 Driver Roster (cyan)

File: AssociateData.csv

From: Amazon Logistics → My Team

What it does: Adds new drivers, updates phones / emails / license dates, marks departed drivers as "flagged for review" (see Drivers section). Routes through the existing Roster Import preview so you confirm before changes apply.

📋 Weekly Station Scorecard (teal)

File: *DSPScorecard*.pdf

From: Amazon Logistics → Performance → Weekly Scorecards

What it does: Imports station-level Overall Standing, Safety, Quality scores, plus per-driver metrics. Populates the Scorecards page, driver profiles, and leaderboard.

📈 DSP Overview Dashboard (pink)

File: DSP_Overview_Dashboard_*.csv or .xlsx

From: Amazon Logistics → Performance → Supplementary Performance Reports

What it does: Amazon's authoritative weekly scoring file with each driver's official Overall Standing, Overall Score, and per-metric tiers. Two variants exist on Amazon's portal:

  • Weekly snapshot — single week's data (recommended for normal weekly uploads)
  • Trailing Six Week — 6-week rolling average (use only if you specifically want the average)
⚠️ Don't upload both for the same week — the second one overwrites the first.
📸 POD Rejects Report (orange)

File: *POD-Details.pdf

From: Amazon Logistics → Performance → POD Reports

What it does: Per-driver photo-on-delivery rejection breakdown — blurry, no package detected, package in car, etc. DSPro creates one Incident per driver who had rejects (the Incident appears on their profile under Incident History). Re-uploading the same week replaces previous incidents — no duplicates.

💬 Negative Customer Feedback (red)

File: DSP_Customer_Delivery_Feedback_negative_*.csv

From: Amazon Logistics → Performance → Customer Delivery Feedback

What it does: Imports per-driver customer complaints with feedback details (mishandled, unprofessional, wrong address). Powers the Customer Complaints dashboard tile and the complaints section on driver profiles.

🚨 Escalations / Infractions (deep red)

File: Infractions_*.csv

From: Amazon Logistics

What it does: Imports Amazon-reported infractions — violations, defects, MDIs (Multi-Defect Incidents). Displayed in the driver's profile infractions section.

⏱️ DVIC Inspection Times (green)

File: *DVIC_Time*.xlsx

From: Amazon Logistics → Operations → DVIC Reports

What it does: Imports per-driver vehicle inspection durations. DSPro flags drivers with rushed inspections (under 30 seconds — likely skipped) and creates Incidents. Helpful for safety coaching.

🎯 Pro tips

💡 Weekly routine: Every Friday after Amazon publishes new data, drop all your weekly files in one sitting. Set the Week Number once at the top of each modal — DSPro remembers it for the session.
💡 Re-uploads are safe: POD Rejects, DVIC, and Customer Feedback are idempotent — re-uploading the same week replaces previous data, no stacking.
⚠️ Hidden tiles: "Personalized DA Scorecards" and "Leaderboard CSV" tiles are hidden by default. The Leaderboard math is derived from the Weekly Station Scorecard mathematically, so you don't need to upload it separately.
📦
Amazon Uploads Owner + Manager
Where to find each report in the Amazon Logistics Portal, what file to download, and how to import it into DSPro.

📍 Where to Find Reports in Amazon

All Amazon DSP reports live in the Amazon Logistics Portal:

https://logistics.amazon.com/ ↳ Sign in with your DSP credentials ↳ Top nav → Performance / Reports / DA Management

Most reports are downloaded as CSV or PDF. Below is exactly what to download for each DSPro feature.

📈 Weekly Scorecard

📥 Download from: Amazon Logistics Portal → PerformanceWeekly Scorecard → "Download" button (top right of the report)

File names typically look like:

  • Week_NN_YYYY_DSP-Scorecard.pdf (e.g., Week_18_2026_DSP-Scorecard.pdf)
  • WTN2_DA_Performance_YYYY-MM-DD.csv
  • Older format: scorecard_weekly_NN.pdf

How to upload to DSPro: Sidebar → Scorecards → click 📁 Upload Scorecard → drag/drop the file. DSPro auto-parses both PDF and CSV formats.

⚠️ Pro tip: Download every Friday (when Amazon publishes the new week). Set a recurring calendar reminder.

📅 Daily DSP Report

📥 Download from: Amazon Logistics Portal → PerformanceDaily DSP Report → date picker → "Download CSV"

File name:

  • Daily_DSP_Report_YYYY-MM-DD.csv

What's in it: Per-driver daily metrics — DCR (Delivered Count Rate), DAR (Delivery Attempt Rate), POD (Photo on Delivery), Contact Compliance, packages delivered, route count.

How to use: Useful for spot-checking a specific day. Upload via Scorecards → Daily Detail tab.

🚐 Vehicle/Van Roster

📥 Download from: Amazon Logistics Portal → Vehicle ManagementFleet List → "Export CSV"

File name:

  • Fleet_Roster_StationCode_YYYY-MM-DD.csv
  • (e.g., Fleet_Roster_WTN2_2026-04-29.csv)

How to upload: Van Mgmt → 📁 Bulk Upload → select the CSV. DSPro maps columns: van_number, plate, VIN, make, model, year, registration expiration.

👥 Driver Roster

📥 Download from: Amazon Logistics Portal → DA ManagementActive DAs → "Export"

File names:

  • Active_DAs_StationCode_YYYY-MM-DD.csv
  • DSP_Driver_Roster_DSPName.csv

What's in it: Driver name, Amazon driver_id (transporter ID), email, phone, hire date, status.

How to use: Drivers page → + Bulk Invite or 📁 Bulk Upload CSV → select the file. DSPro matches existing drivers by driver_id and adds new ones.

🚗 MVR (Motor Vehicle Record) Reports

📥 Download from: Multiple sources depending on your provider:
  • Samba Safety: Reports → MVR Batch → Export
  • HireRight: Driver Reports → Download
  • Direct DMV portal: State-specific (Florida: FLHSMV)

File names vary, but DSPro accepts any CSV with these columns:

driver_id,full_name,check_date,status,notes EXMP001,John Smith,2026-04-15,clear,No violations EXMP002,Jane Doe,2026-04-15,suspended,License suspended 04/10

How to upload: Dashboard → MVR alert banner → "📥 Bulk Import" tab → upload CSV.

📊 Mentor Safety Report

📥 Download from: Mentor by eDriving → ReportsDriver Score Report → "Export CSV"

File names:

  • Mentor_Driver_Scores_YYYY-MM-DD.csv
  • Driving_Behavior_Report.csv

What's tracked: Speeding, harsh braking, distracted driving, FICO score per driver.

Note: Mentor scores are reflected in your weekly Amazon scorecard. No separate DSPro upload needed currently — just review them when coaching drivers.

📋 Compliance & Hire Date Reports

📥 Download from: Amazon Logistics Portal → DA ManagementCompliance Dashboard

File name:

  • Compliance_Report_StationCode.csv

What's in it: Per-driver hire date, license expiration, training completions, background check status.

How to use: Dashboard banner "📋 Hire dates needed" → click → Bulk Import tab → upload Compliance CSV. DSPro extracts hire dates automatically.

🎯 Performance Thresholds Reference

📥 Find at: Amazon Logistics Portal → SettingsDA Performance Thresholds

This is NOT a download — it's a reference page. Use it to verify your DSPro thresholds match what Amazon expects:

DSPro: Sidebar → Settings → Performance Thresholds → adjust each metric to match Amazon's published cutoffs for your station.

📦 Quick Reference: What to Download Weekly

  1. Friday: New weekly scorecard (PDF or CSV)
  2. Monday: Updated driver roster (catches new hires + departures)
  3. Monthly: Fleet roster + Compliance report
  4. Quarterly: MVR batch (every 90 days per Amazon requirement)
✅ Best practice: Save downloaded files in a dated folder (e.g., Amazon_Reports/2026-04-29/) for your own records, then upload the same file to DSPro.

🆘 Can't find a report?

Amazon occasionally renames reports or moves them. If you can't find something:

  • Check the Reports Library (left sidebar in Amazon Portal) — has every available export.
  • Some reports require permissions — your Operations Manager (Amazon) can enable them for your account.
  • Email support@dsproapp.com with the file name you have and we'll tell you which DSPro feature it pairs with.
📊
Dashboard Owner + Manager
Your daily operations cockpit. Shows what needs attention right now: drivers, vans, alerts, and tomorrow's coverage.

Cockpit Cards

The top of the Dashboard shows colored stat cards. Each is clickable and drills down to a filtered view:

  • 📅 Registration Expiring — Vans with registration renewal due in 14 days. Click to see them and start renewals.
  • 🏠 Rentals Returning — Rental vans due back in 14 days. Plan replacements.
  • 🚨 Active Incidents — Open incidents needing follow-up.
  • 📋 Pending Approvals — Driver-uploaded documents waiting for your review.

Banners & Alerts

Above the cockpit cards, you'll see colored banners when there's bulk work to do:

  • Yellow "📋 Hire dates needed" — X drivers missing hire dates. Click → bulk modal to type or upload CSV.
  • Purple "🚗 MVR checks needed" — Drivers needing a Motor Vehicle Record check (never run or 90+ days old). Click → drilldown.

Tomorrow's Coverage Widget

The Tomorrow's Coverage card shows a snapshot of your next-day staffing:

📅 Tomorrow — Wed, May 7 ✅ 18 of 20 routes covered ⚠️ 2 routes still need drivers 🚨 1 driver requested time off (pending)

Click the card → goes to the Schedule page on tomorrow's date so you can fix gaps.

💡 Tip: Make Dashboard the first thing you check each morning. If it's quiet (no alerts, all coverage green), your day starts smoothly.

💬 Customer Complaints Tile (NEW)

The cockpit grid now includes a 💬 Customer Complaints tile that surfaces aggregate negative customer feedback at a glance.

  • Color-coded: Gray (0 complaints) → Amber (1–4) → Red (5+)
  • Shows the count from the latest week with data — not the current calendar week (so you see real performance, not "no data yet")
  • Click the tile → drilldown opens with all drivers who had complaints, sorted by complaint count, with defect type pills (mishandled, unprofessional, wrong address, etc.)
  • Powered by uploads from the 💬 Negative Customer Feedback tile in the Upload Station
💡 Coaching workflow: Click the tile each Monday morning → review which drivers had complaints last week → use the editor's "📝 Add Note" to log a coaching conversation.
👥
Drivers Owner + Manager
Your driver roster — onboarding, license tracking, MVR checks, scorecard performance, attendance points, all in one place.

Adding Drivers

Three ways to add drivers:

  • + Add Driver — One driver at a time. Enter name, Amazon driver_id, license info, hire date.
  • + Bulk Invite — Paste a list of email addresses. DSPro sends each an invite link to set up their account.
  • 📁 Bulk Upload CSV — Upload a CSV with all drivers at once. Template download available in the modal.

Driver Profile

Click any driver to see their full profile:

  • Avatar — Photo or colored initial circle. Click to upload / change (deploy_358).
  • Performance card — Current scorecard tier (Fantastic+ / Fantastic / Great / Fair / Poor) plus key metrics.
  • License status — Active, Suspended, Revoked, or Expiring Soon.
  • MVR check status — Last check date, age, status pill (✅ Current, ⚠️ Due Soon, 🚨 Overdue).
  • Attendance points — 6-month rolling total. Color-coded by tier.
  • Time Clock card — Driver's current clock state (visible on driver's own profile).
  • Documents — Driver-uploaded files pending or approved.
  • Written warnings — Auto-generated and manually issued.
  • Schedule — This driver's published shifts.

Avatars (deploy_358)

Each driver has an avatar that appears everywhere their name is shown — drivers list, leaderboard, top performers, attendance lists, package reports, time clock entries. Until uploaded, DSPro shows a colored circle with the driver's initials (color is generated from their name so it's stable). Once uploaded, the photo replaces the circle app-wide.

  • Driver self-upload — Drivers can upload their own avatar from their profile page. Tap the big circle in the header → upload modal opens.
  • Owner / manager override — Owners + managers can upload an avatar for any driver. Same flow.
  • Use driver license photo — If a DL scan is on file, the modal offers a one-tap "🆔 Use my driver's license photo" button. Useful during onboarding.
  • Crop UI — 280px circular preview frame. Drag the photo to position the face, use the zoom slider (100-300%) or scroll wheel. Edges clamp so background never shows through.
  • Output — Saved as 400×400 JPEG to the avatars storage bucket. Cache-busted on save so the new photo appears immediately everywhere.
  • Remove avatar — Removes the file from storage and clears the avatar_path column. Driver goes back to the colored-initials circle.
💡 Why this matters: When you have 50+ drivers, scanning a list of names is slow but scanning a row of faces is fast. Avatars cut triage time on the dashboard, scorecard reviews, and "who clocked in late again" conversations.

Filtering & Sorting

The driver table can be filtered by:

  • Performance tier (top performers, at-risk, etc.)
  • License status (active vs suspended)
  • Hire date range
  • Search by name or driver_id
⚠️ Important: Removing a driver doesn't delete their historical data (incidents, warnings, scorecard history). Their profile becomes read-only and they can no longer log in.

🔒 Lock Contact Fields

When you re-import the AssociateData CSV from Amazon, by default it overwrites driver phone and email with whatever's in the CSV. If you've manually corrected a driver's contact info, you can lock the field so it survives future imports.

How to lock:

  • Drivers tab → click a driver → click the Edit button
  • You'll see 🔓 Auto pills next to the Phone and Email labels
  • Click the pill to flip to 🔒 Locked (turns amber)
  • Click Save
💡 Why this matters: Amazon's CSV often has stale or generic contact info ("dsp@logistics.amazon.com"). When you collect a real driver's personal phone, lock it so future syncs don't wipe it.

⚠️ Departed Driver Review

When you re-import the AssociateData CSV, drivers who exist in DSPro but aren't in the new CSV get automatically flagged for review. They may have left, been transferred, or be on temporary leave.

What you'll see:

  • An amber banner appears at the top of the Drivers page: "X drivers not in latest roster CSV"
  • Each flagged driver gets a ⚠️ Review pill next to their name in the table
  • Click Review → on the banner → modal opens with all flagged drivers

For each flagged driver, choose:

  • Mark Inactive (red button): driver leaves the roster permanently. Status switches to inactive, leaderboard auto-recomputes ranks (one fewer driver counted).
  • Still Active (green button): driver stays active, just clears the flag. Use this when a driver is on LOA, temporarily transferred, or accidentally missing from the CSV.
⚠️ Already-inactive drivers are skipped — DSPro never re-flags them. And re-imports of the same CSV won't double-flag — the original flag date is preserved.
📅
Schedule Owner + Manager
Weekly shift planning. Build the schedule, publish to drivers, handle change requests.

Weekly View

The Schedule page shows a 7-day grid (Sun–Sat). Each cell represents one route on one day. Use the prev/next arrows to navigate weeks.

Building a Schedule

1
Click any empty cell — A driver picker opens with your active roster.
2
Pick a driver — They're assigned to that route/day. Cell shows the driver's name.
3
Save Draft — Keeps your changes private. Drivers don't see them yet.
4
Publish — Sends notifications to all assigned drivers. They see the schedule on My Schedule + get a banner notification.

Driver Responses

After publishing, drivers can:

  • Acknowledge — Confirms they saw it.
  • Decline — Says they can't work the shift. You see this in the Schedule sidebar badge (red number).
  • Request change — Asks for a swap with another driver. You can approve or deny.

Schedule Settings

Click the gear icon to set:

  • How many routes per day your station runs.
  • Default shift start time.
  • Whether to send SMS in addition to in-app notifications.
💡 Tip: The "Just Scheduled" panel persists across pages so you can keep tabs on drivers you just assigned without losing your place.
🚐
Fleet Owner + Manager
Fleet management with daily inspection tracking, FMCSA-style checks, registration & rental return alerts.

Fleet Setup

Add each van to your fleet:

  • Van number — Your internal short ID (e.g., V12, ATX-005).
  • License plate + VIN — For DOT compliance and lookup.
  • Year/Make/Model — For maintenance tracking.
  • Registration expiration date — Triggers alerts at 14 days.
  • Rental return date — If it's a rental, set this; alerts at 14 days.
  • Status — Active or Grounded.

Stat Cards

Top of the Vans page shows clickable cards:

  • Total / Passed / Failed / Not Inspected — Today's status.
  • Grounded — Out of service.
  • 📅 Reg Exp <14d — Registration expiring soon.
  • 🏠 Rentals <14d — Returns due soon.
  • Expiring <60d — Wider lookahead.

Click any stat card → fleet table filters + page scrolls down to show results.

Running an Inspection

Click 🔍 Start Inspection:

  1. Pick the van being inspected.
  2. Pick the driver doing the inspection (or yourself).
  3. Step through the checklist (tires, brakes, lights, fluids, etc.).
  4. Mark Pass or Fail per item.
  5. If Fail, can attach a photo and notes.
  6. Final result auto-computed: pass if all items pass, fail if any item fails.
⚠️ Failed inspections auto-ground the van until it's re-inspected. The van shows in the Grounded stat card.
📷
Fleet Pictures Owner + Manager + Driver
Visual record of every van's condition. 4-photo daily inspection (front / back / driver-side / passenger-side) with AI-powered damage detection.

How It Works

When a driver runs a van inspection, DSPro asks for four photos covering all sides of the van. These photos are uploaded to the inspection-photos storage bucket and shown on the van's profile in a clean 2x2 grid.

Driver Photo Capture

  1. During the van inspection flow, driver is prompted for four photos.
  2. Photo 1 — Front, including the bumper, headlights, hood.
  3. Photo 2 — Driver side, full length.
  4. Photo 3 — Passenger side, full length.
  5. Photo 4 — Back, including bumper, doors, taillights.
  6. Photos are auto-resized client-side to 1600px on the long edge before upload — sharper thumbnails, smaller upload, faster mobile experience.

2x2 Photo Grid

On each van's profile, the most recent four photos render in a 2x2 grid. Tap any photo to view full-size. Each photo has a ⋮ menu in the corner with these actions:

  • 🔍 View full size — Open the photo in its original resolution.
  • ♻️ Replace photo — Upload a new image for that position.
  • 🤖 Compare with previous — Manually trigger AI damage detection between this photo and the previous one in the same position.
  • 🗑️ Delete photo — Remove from the grid (does not delete history).

🤖 AI Damage Detection

When a fresh set of 4 photos is uploaded, DSPro automatically calls the compare-inspection-photos Edge Function. The function pulls the previous 4 photos for the same van and asks Claude (Anthropic API) to identify any new damage — scratches, dents, cracked lights, missing trim, anything that wasn't there yesterday.

💡 8 photos at once — The AI sees both the old set and the new set side-by-side per position and highlights what changed. False positives are common with bad lighting or angle differences, so AI flags are surfaced as alerts, not blocking failures.

Where Damage Alerts Appear

  • A red 📷 AI Damage Alerts banner appears at the top of the Dashboard whenever there are open flags.
  • A permanent 📷 AI Damage Alerts stat card on the Dashboard shows the open count (gray = 0, amber = open, red = high severity).
  • Email notifications go out to whoever is configured (owner, managers, the responsible driver, plus any extra emails like fleet@… or accountant@…).
💡 See the next section for the full Damage Alerts review workflow.
⚠️ AI is a helper, not the truth — Always have a human review flagged photos before disciplining a driver or charging for damage. The AI compares pixels, not intent — a photo angle change or different lighting can produce a false positive.
🛠️
Parts Department Owner only
A curated catalog of common van replacement parts mapped to your fleet. Click → order from Amazon directly.

📌 Why we built this

DSP owners spend hours per week researching the right parts for their vans. Long-arm vs short-arm mirrors. Heated vs non-heated. Driver vs passenger side. Year-specific compatibility. Variants are a maze. Parts Department is a shared catalog where every entry is mapped to specific vehicle models, so you (or any DSPro owner) can find the right part for your fleet in seconds.

📍 How to access: Sidebar → 🛠️ Parts Dept (under Fleet Pictures, above Dispatch).

🗂️ How it works

The catalog is curated by DSPro. Every part is researched, fitment-verified, and tied to specific vehicle models so you don't have to wade through Amazon's listings hunting for the right driver-side mirror for your 2022 ProMaster. Just filter, click, order.

The page has two filter dropdowns at the top:

  • All Vans / Models — filter to parts that fit a specific van in your fleet
  • All Categories — filter by part type (Driver Mirror, Tire, Brake, etc.)

Each part shows up as a card with: category icon + label, part name, variant notes, vehicle compatibility ("Fits: Ford Transit Cargo (2015–2026)"), price, and an Order → button that opens Amazon in a new tab.

🪞 Mirror Categories

Mirrors are split into 3 specific categories so there's no ambiguity:

  • Driver Side Mirror — left exterior side mirror
  • Passenger Side Mirror — right exterior side mirror
  • Rear-View Mirror — interior cabin mirror

When you order a "Driver Side Mirror" you don't have to second-guess — it's exactly that side.

🚐 How parts get matched to your vans

The per-van filter only works if your vans have a year and make/model set in the Vans tab. When you add a van with Year and Make/Model, DSPro automatically links it to a fleet vehicle model entry, which is what the catalog uses to filter.

If a van's per-van filter shows "model not set", edit the van to add Year + Make/Model.

📬 Don't see a part you need?

The catalog is growing. If you need a part that isn't listed yet — different vehicle model, specific variant, an eBay-only item, anything — reach out and we'll research and add it. The catalog is a living product; your input shapes what gets added.

💰 How DSPro funds itself

The Amazon links in the catalog use the DSPro Amazon Associate ID. When any owner clicks "Order →" and buys from Amazon, DSPro earns a small commission (~3% of the purchase). This is how DSPro funds development of the platform — no price difference to you, your DSP doesn't pay anything extra.

By policy, we disclose this in our Terms of Service: DSPro is an Amazon Associate.

⚠️ Coming next: Phase 2 will add eBay-sourced parts, live price comparison, per-van order history, and reorder shortcuts ("same part as last time for Van 042").
🚨
AI Damage Alerts Owner + Manager
Review AI-flagged van damage, decide what to do about each one, and notify the right people automatically.

How an Alert Is Born

  1. Driver completes a post-trip van inspection with 4 photos (front / back / driver-side / passenger-side).
  2. The compare-inspection-photos Edge Function fires automatically.
  3. That function pulls the matching pre-trip photos (the 4 from earlier in the day), packages all 8 images, and sends them to Claude.
  4. Claude returns a JSON list of any new damage it sees — anything visible in the post-trip photo that wasn't in the pre-trip photo.
  5. Each finding becomes a row in damage_alerts with severity (low / medium / high), description, and photo paths.
  6. An email goes out to everyone configured in your Damage Alert Email settings.

Dashboard Surfaces

Open damage alerts surface in two places on the Dashboard, both visible only to owners and managers:

  • Red banner — appears above Tomorrow's Coverage when there are any open alerts. Shows count of alerts and number of vans flagged. Hidden when there are no open alerts.
  • 📷 AI Damage Alerts stat card — permanent in the cockpit grid, shows the open count, color-coded by severity.

The Review Modal

Click the banner or the stat card to open the review modal. Each alert shows:

  • The van's vehicle ID and which side was photographed (front / driver / passenger / back).
  • Driver name and timestamp of the inspection.
  • A severity badge (Low / Medium / High) color-coded gray / amber / red.
  • The AI's plain-English description of what it found.
  • A side-by-side photo grid: Before (the previous photo) and After (flagged) (the new photo where damage was detected). Look at the two carefully — the AI is right most of the time, but not always.

Four Actions Per Alert

  • ✓ Acknowledge — "I saw it, I'm aware." Marks the alert reviewed and removes it from the open queue. Best for cosmetic stuff you don't need to act on.
  • ✗ Dispute (false flag) — "AI is wrong, this isn't actually new damage." Confirms with a prompt, then resolves. Useful when lighting or angle made the AI hallucinate damage.
  • 💰 Charge Driver — Opens a sub-modal where you enter a charge amount and reason. Records to the damage_charges table for payroll. Note: this records the intent — actual payroll deduction must still be processed in your payroll system.
  • 🔧 Schedule Repair — Opens a sub-modal where you enter description, estimated cost, vendor, and scheduled date. Records to the repair_tickets table.
💡 Realistic mix — Most owners use Acknowledge for ~70% of alerts (cosmetic stuff), Dispute for ~20% (false positives), and Charge Driver or Schedule Repair for the remaining ~10%.

⚙️ Email Settings

Click ⚙️ Email settings at the top of the review modal to control who gets notified when AI flags new damage:

  • Owner — sent to your account email. Default: ON.
  • Managers — sent to all managers under your DSP. Default: ON.
  • Driver who took the photos — notify the responsible driver. Default: OFF (turn this on if you want drivers to know they were flagged).
  • Additional emails — comma-separated list. Useful for fleet@yourdsp.com, accountant@…, insurance contacts, etc.

Email Branding

Damage alert emails go out from alerts@dsproapp.com via Resend. The email shows a red header banner, a card per finding with the AI description and severity badge, before + after photos side-by-side embedded in the email, and a "Open DSPro to triage" button that takes the recipient straight back to the dashboard.

Setup Requirements (one-time)

  1. Storage bucketinspection-photos must be a public bucket in Supabase Storage.
  2. Edge Functions deployedcompare-inspection-photos and send-damage-alert-email must both be deployed and active.
  3. Edge Function secrets setANTHROPIC_API_KEY, RESEND_API_KEY, FROM_EMAIL (default: alerts@dsproapp.com), and APP_URL (default: https://dsproapp.com).
  4. Resend domain verifieddsproapp.com (or your custom from-domain) must be verified in Resend before any emails will deliver.
  5. Profile column — your owner profile needs damage_alert_email_enabled = TRUE (default). The send-damage-alert-email function hard-gates on this column and silently exits if false or null.

Real-World Behavior Notes

  • AI is conservative — by design. The prompt explicitly tells Claude to ignore dirt, lighting, reflections, and shadows, and to only flag clear new damage or foreign objects. Chrome / metallic tape may not register as damage because it can read as a reflection. White paper, neon tape, or anything visually distinct will reliably flag.
  • Photo positions — frontend stores 4 photos keyed front / back / left / right. The AI prompt and prompt-side aliases also accept driver_side / passenger_side as synonyms for left/right, so Claude can use natural language and the system maps it back correctly.
  • Photo size — photos are resized to 1280px on the long edge at 0.78 JPEG quality before upload. This is plenty of resolution for AI vision and keeps cellular upload fast (~350KB per photo vs. 4K originals at ~5MB).
  • Gmail anti-burst — sending 3+ near-identical test emails in quick succession can trigger Gmail's silent suppression (Resend reports delivered, but the email never appears in any folder). Production traffic with one email per real inspection rarely hits this. If testing, wait 5+ min between sends or whitelist alerts@dsproapp.com via Gmail filter.
  • Average flag rate — in our pilot, AI flags new damage on roughly 1 in 30 post-trip inspections. Most days will be quiet. When a flag does come in, it's usually real.
⚠️ Resend free tier limits — DSPro is on the free Resend plan: 3,000 emails/month, 100/day. If your DSP starts flagging more than ~3 vans/day on average, consider upgrading Resend ($20/mo for 50k emails).

Database Tables Created

  • damage_alerts — one row per AI finding, status workflow (open → acknowledged / disputed / charged / repair_scheduled).
  • damage_charges — one row per Charge Driver action with amount in cents, reason, payroll status.
  • repair_tickets — one row per Schedule Repair action with description, estimated cost, vendor, scheduled date.
💡 Audit trail — every alert keeps the full AI raw response (ai_raw_response JSONB column), the resolver's user ID, resolved_at timestamp, and a resolution_note. Nothing gets deleted on resolve — the alert just changes status.
📋
Vehicle Inspection All Roles
FMCSA-compliant pre-trip and post-trip vehicle inspections completed by drivers from their phones. Required before driving.

Why This Matters

Both FMCSA (federal) and Amazon (DSP contract) require drivers to inspect their vehicle before driving. A documented inspection program is your strongest legal defense if there's an accident — it shows due diligence on equipment safety.

DSPowner replaces paper inspection forms with a phone-based checklist that's faster, photographs failed items, and creates an immediate audit trail.

Where Drivers Submit Inspections

💡 Two paths, same result: The submission flow + AI damage compare are identical regardless of where the driver starts. The only difference is the entry point in their sidebar.
  • Time Clock ON (default): Drivers see a banner at the top of the Time Clock page — "⚠️ Pre-Trip Inspection Required" with a Start Pre-Trip button. Strict enforcement: drivers cannot clock in until pre-trip is done.
  • Time Clock OFF: Drivers see a dedicated Vehicle Inspection tab in their sidebar. The same banner appears there with the same Start Pre-Trip / Start Post-Trip buttons. No clock-in gating (because there's no clock-in to gate).

Where Owners + Managers See Submissions

The Vehicle Inspection sidebar tab is always available to owners and managers (regardless of Time Clock setting). It shows:

  • Today's submission count (pre-trips + post-trips)
  • Failed inspection count
  • Drivers without pre-trip — most useful: who's working today but hasn't done it yet
  • Full list of today's submissions with photos, time, van, result
  • CSV export

What's Inspected (25 items across 4 sections)

🚐 Exterior (11 items): Front + rear tires, headlights, brake lights, turn signals, hazards, mirrors, windshield, wipers, body damage check, license plate visibility

🪑 Interior (5 items): Seatbelt, horn, gauges/dashboard, cabin cleanliness, cargo secured

🔧 Mechanical (5 items): Brakes, steering, fluid leaks, engine sound, transmission shifting

⛑️ Safety Equipment (4 items): Fire extinguisher, first aid kit, warning triangles, registration & insurance present

Items marked ⚠️ Critical auto-ground the van if failed (tires, lights, brakes, steering, fluids, seatbelt, horn). The van is removed from active service until you re-inspect.

Driver Workflow

1
Open Time Clock page (TC ON) or Vehicle Inspection tab (TC OFF) — yellow banner appears: "⚠️ Pre-Trip Inspection Required" with a "▶ Start Pre-Trip" button.
2
Tap Start Pre-Trip — modal opens with all 25 checklist items grouped by section.
3
Pick van + odometer + fuel — driver selects from your fleet dropdown, enters odometer reading, picks fuel level (Full / ¾ / ½ / ¼ / Low).
4
Walk around the van — checks each item ✅ Pass or ❌ Fail. On fail: optional notes ("oil leaking under engine") + camera button (📷) for a photo.
5
Submit — banner turns green "✅ Pre-Trip Complete". If TC is ON, clock-in button becomes available. If anything failed: red banner "🚨 X Issues Reported · DSP notified".
6
End of shift — after clocking out, banner turns blue "📋 Post-Trip Inspection Required". Same checklist; documents any new damage or issues from the day.
💡 Tip: If the driver's van isn't in DSPro's fleet yet, they can pick "↪ Other / not listed" and type the van number manually. Owner can add the van later — historical inspections still have it referenced in the notes.

Owner / Manager View

Sidebar → Operations → Vehicle Checklists opens the management page with five clickable stat tiles:

  • 📋 Today's Inspections — Total count for today
  • 🚐 Pre-Trips — How many drivers completed pre-trip
  • 🏁 Post-Trips — How many completed post-trip
  • 🚨 Failed — How many had at least one fail item
  • ⚠️ Drivers Without Pre-Tripmost useful — who's working today but skipped or hasn't done it yet

The table below shows each inspection with: Driver · Type · Van · Time · Result pill · Issue count. Click "X issues 👁️" on any failed inspection → modal showing every failed item, criticality flag, and driver's notes.

📥 Export CSV — Downloads last 30 days for compliance records or sharing with insurance / Amazon audits.

What Happens on a Critical Failure

If a driver fails ANY item marked Critical (e.g., brake check, headlight, seatbelt):

  1. Inspection saves with `result: 'fail'`.
  2. The selected van is auto-set to status `grounded` in your fleet.
  3. Driver sees red banner: "🚨 Pre-Trip Complete · 1 Issue Reported · Speak with your manager before driving."
  4. Driver can still clock in (so they're paid for the time), but should not drive that van.
  5. Van shows up in your dashboard's Grounded count + Vehicle Checklists "Failed" tile.
✅ Compliance benefit: Every inspection includes a timestamp, driver identity, photos (if added), and detailed notes. If there's ever an FMCSA audit or accident investigation, you have searchable historical records — much stronger than paper forms in a binder.
🕒
Shift Check-Ins Owner + Manager (page) · Driver (submits)
A structured record of every shift start and end — who, when, which van, mileage, equipment checklist, any issues. Searchable, filterable, exportable.

📌 What it is

At the start and end of every shift, drivers tap a tile on their home screen and submit a quick check-in. The check-in captures the operationally important stuff: which van they're in, mileage, which equipment they have (mini-tote, bags, scanner, charger, key, etc.), and any issues that came up. Owners and managers see all of them on the 🕒 Shift Check-Ins page.

📍 How to access: Sidebar → 🕒 Shift Check-Ins. The sidebar shows a small count badge of today's check-ins so you can glance at it during dispatch and see how many drivers have actually clocked in.

👤 Driver Submission

On a driver's home screen there's a Start / End of Shift Check-In tile (always visible — they don't have to dig for it). Tapping it opens the form:

  1. Shift Type — Start or End
  2. Van # — which van they're using (auto-suggests recent vans)
  3. Mileage — current odometer reading
  4. Equipment Checklist — Mini-tote, Bag, Scanner, Charger, Key, etc. (checkbox grid)
  5. Issues — free-text field for any problems (van damage, missing equipment, traffic delays, anything worth noting)
  6. Photo — optional — handy for documenting issues

Driver hits Submit, the check-in is saved instantly, and they get a toast confirmation.

📋 Owner / Manager View

The Shift Check-Ins page is the central log. Top of the page has stat tiles (today's starts, today's ends, this week's check-ins). Below is a filterable table.

  • Filter by driver — pick from the dropdown to see one person's history
  • Filter by van — see who's been using van 1247 lately
  • Filter by date range — today, yesterday, this week, custom
  • Filter by type — Start only, End only, or both
  • CSV export — top right button, downloads the current filtered view as a spreadsheet

📱 Mobile-friendly

On phones, each check-in renders as a stacked card instead of a wide table row — driver name, van, mileage, equipment, issues, photo thumbnail. Tap any driver's name to jump to their full profile.

🔍 What you'll actually use it for

  • Morning roll call — quickly see who has and hasn't checked in for the day's shifts
  • Van handoff disputes — "Driver X says the van had 50,000 miles when they got it" — pull up that day's start check-in and read the actual recorded mileage
  • Equipment loss tracking — driver says the scanner is missing? Search their last check-in to see if it was logged then
  • Issue trending — filter by "Issues contains..." to find every check-in mentioning a recurring problem (van smoking, locked yard, ramp closure, etc.)
  • Audit trail — every shift has a documented start and end with timestamps
💡 Why it's better than the old Messages thread — Previously, drivers would type their check-in into a "🚦 Start/End of Shift" channel in Messages, and you'd have to scroll the chat log to find anything. Now check-ins are structured records in their own table — searchable, filterable, exportable, with proper data fields instead of free-form chat.
⚠️ Not a replacement for Vehicle Inspections — Shift Check-Ins are quick logistical reports (where, when, what equipment). Vehicle Inspections are the full pre-trip / post-trip with photos + section checks (exterior, interior, mechanical, safety). Drivers do both — check-in is fast, inspection is detailed.
📈
Scorecards Owner + Manager
Upload Amazon's weekly scorecard PDF/CSV. DSPro parses it, assigns tiers, and tracks every driver's performance over time.

How It Works

Each week Amazon publishes a scorecard for your DSP showing per-driver metrics: DCR, DAR, POD, Contact Compliance, Speeding events, Safety scores, etc. DSPro reads these scores, compares them against the thresholds you've set (or Amazon defaults), and assigns each driver a tier.

The Five Tiers

⭐ Fantastic+
Best
🏆 Fantastic
👍 Great
⚠️ Fair
🚨 Poor
Needs help

Uploading a Scorecard

From the Scorecards page, click 📁 Upload Scorecard. DSPro accepts:

  • Amazon's weekly scorecard PDF (most common format)
  • CSV exports from the Amazon Logistics Portal

DSPro auto-matches drivers by name + driver_id. Unmatched drivers are flagged for you to resolve.

Scorecard Detail Page

Click any driver row → drill into their full scorecard with:

  • Per-metric tier breakdown.
  • Week-over-week trend charts.
  • Comparison to peer averages.
  • Recommended actions (coaching points, escalation flags).
💡 Tip: Adjust your tier thresholds in Settings → Performance Thresholds if your station uses different cutoffs than Amazon defaults.

🔢 Bake Ranks (NEW)

The 🔢 Bake Ranks button on the Scorecards Week page persists the currently-displayed sort order as actual amazon_rank values in the database. Required for the Swap Rank feature to work properly when Amazon hasn't published per-driver ranks for the week (which happens often when only the Station scorecard PDF is available).

How to use:

  • Open Scorecards → click into a week
  • Click 🔢 Bake Ranks at the top of the page
  • Confirm the dialog — drivers without an Amazon-published rank will get assigned positions (1, 2, 3 ... in current sort order)
  • Drivers who already have an Amazon rank from the Personalized PDF are LEFT ALONE — Bake Ranks only fills gaps, never overwrites
💡 Bake once per week after uploading your scorecard. After that, ranks are anchored and the Swap feature works cleanly.

📝 Edit Menu — Per-Driver Actions (NEW)

Each driver row in the Scorecards Week table has an editor button (✏️). Click it for these actions:

  • 📝 Add Note — Save a coaching note for this driver. Includes context (week + year) automatically. Notes appear in the driver's coaching log on their profile.
  • 🔄 Swap Rank With... — Pair-wise rank swap. Pick a target rank → DSPro finds the driver currently at that rank → confirms the two-way trade. Both drivers update atomically. No duplicate ranks.
  • ⚙ Override Tier — Force a driver into a specific tier (Fantastic+ / Fantastic / Great / Fair / Poor). Use for appeals or special circumstances. Optional reason field. Override propagates to leaderboard, dashboard tier counts, and bonus calculator. Click again to clear and revert to Amazon's tier.
⚠️ Override audit trail: All overrides save who changed them and when (override_set_by + override_set_at). Helpful for compliance and team accountability.
🏆
Leaderboard Owner + Manager
Driver rankings based on combined performance score. Visible to drivers (motivates competition).

How Rankings Work

Each driver gets a composite score combining:

  • Latest scorecard tier (weighted heaviest).
  • Safety score / DCR delivery rate.
  • Attendance (low points = bonus).
  • Tenure (longevity bonus).

Drivers See It Too

Drivers see their own rank on their profile. They see the leaderboard top 10 (anonymized below their position to avoid singling out poor performers).

💡 Tip: Many DSPs project the leaderboard on a TV at the station for motivation.

👁 Last Name Privacy (NEW)

To stay compliant with Amazon's policy of keeping full driver names off public-facing documents, the leaderboard redacts last names by default. Drivers appear as "Jessica H." instead of "Jessica Howell".

How to toggle:

  • At the top of the Leaderboard page, click 👁 Show Full Names to reveal last names
  • Click 👁 Hide Last Names to redact again
  • Your choice is remembered across sessions (saved to your browser)
⚠️ Best practice: Keep redaction ON for any leaderboard you post publicly at the station, project on TVs, or share with drivers. Owner-facing screens (Drivers tab, Scorecards detail, Dashboard) always show full names regardless — those are internal management views.
💰
Bonus Calculator Owner + Manager
Tier-based weekly bonus calculator with attendance penalty. Defaults: $50/$30/$15 by tier, 6+ pts = no bonus.

How Bonuses Are Calculated

Each week, DSPro looks at each driver's:

  1. Latest scorecard tier (Fantastic+ / Fantastic / Great / Fair / Poor)
  2. Active attendance points (sum of non-rolled-off events)

Then applies the formula:

IF attendance_points >= cutoff (default 6) bonus = $0 (disqualified) ELSE bonus = tier_amount ($50 / $30 / $15 / $0 / $0)

Default Amounts

⭐ Fantastic+
$50
🏆 Fantastic
$30
👍 Great
$15
⚠️ Fair
$0
🚨 Poor
$0

Customizing Amounts

Click the ⚙️ Settings button on the Bonus & Points page to change:

  • Dollar amount per tier (any number from $0 up)
  • Attendance cutoff (default 6 pts; lower it to be stricter, raise it to be more lenient)
  • Toggle the calculator on/off entirely (turns off, page shows disabled state)

Reading the Driver Table

Each row shows:

  • Driver name + ID — Avatar circle + Amazon driver_id
  • Tier pill — Color-coded current tier
  • Att. Pts — Active attendance points (red if at/over cutoff, amber if approaching)
  • Base — Tier's dollar amount
  • Bonus — Final amount after attendance check (green if >$0)
  • Status pill — 💰 Eligible / 🚫 Disqualified / ✅ Paid [date]
  • Action button — Mark Paid / Undo

Marking Bonuses Paid

Two ways:

  • Per-driver: Click "Mark Paid" on any row → confirms amount → row turns green ✅
  • All at once: Click "✅ Mark All Paid" at top → confirms total → all eligible drivers locked in

Marking paid creates an immutable snapshot in the database — historical record never gets recalculated.

The "Undo" Button

If you mark something paid by mistake, click Undo on the row. The snapshot is deleted, status reverts to Eligible. Good for fixing typos or reversing accidental clicks.

Week Navigation

Use ◀️ Prev / Next ▶️ buttons or "This Week" to jump between weeks. You can mark bonuses paid for past or future weeks. The displayed tier and attendance points are calculated as of the END of the displayed week (Saturday).

📥 Exporting for Payroll

Important workflow: The CSV export is output only — you do NOT need to fill it out and re-upload. It's purely for sending to your payroll service or bookkeeper.

The CSV includes:

  • driver_name
  • driver_id (Amazon transporter ID)
  • tier
  • attendance_points
  • base_amount
  • bonus_amount (final payout)
  • disqualified (yes/no)
  • paid_at (timestamp if marked paid)

How Payment Actually Happens

DSPro does NOT pay drivers directly. The flow is:

1
DSPro calculates who gets what based on tier + attendance.
2
You review the table on Bonus & Points page.
3
Export CSV and email/upload to your payroll service (Gusto, ADP, QuickBooks, etc.).
4
Payroll runs on your normal schedule (weekly/bi-weekly) and adds the bonus_amount to each driver's paycheck.
5
Mark Paid in DSPro — Click the button so the row turns green ✅. This is your bookkeeping confirmation that you actually paid them.
✅ Best practice: Run the calculator every Friday after Amazon's weekly scorecard publishes. Export → send to payroll → mark paid in DSPro on Monday after payroll closes.

Driver Visibility

Drivers see their own bonus on their profile after you mark it paid. Until then, the bonus calculator is owner/manager-only — drivers don't see preview amounts before payment.

⚠️ Note: If a driver doesn't have a tier yet (no scorecard uploaded), they show as "—" in the table and get $0. Upload the latest weekly scorecard before running bonuses.

Common Questions

What if Amazon publishes a corrected scorecard? Re-upload the corrected file in Scorecards → re-click Recalculate on Bonus page → updated amounts appear. If you already marked someone paid with the old amount, click Undo first to recalculate fresh.

Can I exclude a driver? Not directly — but you can: (a) mark their bonus as paid with $0 manually, or (b) wait until they have attendance points or a low tier that disqualifies them.

What about half-week drivers / new hires? If they don't have a tier yet (newly hired, scorecard hasn't included them), they show $0. Once their first scorecard comes through, they qualify like everyone else.

⏱️
Time Clock All Roles
Geo-locked clock-in/out for drivers from their phones. Tracks regular hours, breaks, and overtime automatically.

Time Clock ON / OFF (Owner)

💡 Use ADP, Workday, or another payroll tool? You can disable Time Clock entirely so drivers don't double-clock. Pre-trip / post-trip vehicle inspections still work — they move to a standalone Vehicle Inspection tab in the driver's sidebar.

The toggle lives at the top of the Time Clock page (Station Setup card). Owner-only.

  • ⏱️ Time Clock ON (default): Drivers can clock in / out, take breaks, lunch through DSPowner. Pre-trip is required before clock-in. This is the standard DSPowner experience.
  • ⏸️ Time Clock OFF: Drivers do not see a Time Clock tab in their sidebar. The clock-in card on their profile is hidden. Pre-trip / post-trip inspections still happen — but via a dedicated Vehicle Inspection tab that appears in their sidebar instead.
  • Toggle saves immediately. You can flip it back any time.
  • Existing clock-in records are preserved when you toggle off — they just stop being editable. Toggle back on to see them again.
⚠️ Important: Switching from ON to OFF does not migrate hours data into ADP/Workday. You're responsible for getting hours into your payroll system. DSPowner just stops collecting them.

Setup (Owner)

Before drivers can clock in, you need to set the station location:

1
Go to Time Clock → Station Setup card
2
Stand at your DSP station with your phone or laptop.
3
Click "📍 Use my current location" — Allow browser location access.
4
Set the geofence radius — Default 500ft. Increase if your station has a large parking lot.
5
Click "💾 Save Station Settings" — Drivers can now clock in.

Driver Workflow

From a driver's profile or Time Clock page:

  1. Big blue clock card shows current state.
  2. 🟢 Clock In — Phone shares location, DSPro verifies you're within geofence.
  3. State changes to "Clocked in · 0h 0m" with a 🍽️ Start Lunch button and a ☕ Break (1/2) button.
  4. 🍽️ Start Lunch → card flips to a big circular countdown timer (default 30 min). Audio is unlocked the moment the driver taps Start Lunch so the alarm can ring later.
  5. When the countdown hits 0:00 a bell rings every 4 seconds, the phone vibrates, and a browser notification fires (even with the tab in the background).
  6. Driver gets three buttons when the alarm rings: 🔕 Stop Alarm (silences but stays on lunch — overage time counts up in red), ⏰ Snooze 5 min (extends lunch by 5 min, alarm re-arms), 🟢 End Lunch (clocks back in immediately).
  7. Back on shift: ☕ Break (1/2) or ☕ Break (2/2) button is available alongside Clock Out.
  8. 🔴 Clock Out — DSPro verifies location again, computes total hours minus the lunch break, flags overtime if >8h/day. Paid 15-min breaks are NOT subtracted from total hours.

⏰ Lunch Duration Setting Owner Only

Owners can set how long the lunch countdown timer runs in Time Clock → Station Setup → Lunch Duration. Default is 30 minutes; valid range is 15–120 minutes. This is the timer the driver sees and the time at which the alarm fires.

💡 Note: The lunch duration is shared across all drivers under one DSP. Change it in one place and every driver gets the new timer on their next lunch.

☕ Paid 15-Minute Breaks All Roles

Drivers may take up to two paid 15-minute breaks per shift, separate from their unpaid lunch. Break time is tracked but not deducted from total hours.

  1. While clocked in (pre- or post-lunch), driver taps ☕ Break (1/2).
  2. Card flips to a 15-min countdown — same circular timer style as lunch.
  3. At 0:00, the same bell + vibrate + notification fires. Same Stop / Snooze / End Break buttons appear.
  4. After both breaks are used today, the ☕ Break button disappears for the rest of the shift.
  5. Working state shows a small line under the status: "☕ Breaks today: 2:14 PM (15m) · 4:30 PM (12m)".
✅ On record — Every break is logged in the driver_breaks table with start time, end time, and duration. Owners can verify exact start/stop times even if the alarm was snoozed or dismissed.

Manager + Owner Tools

  • Today's Clock-Ins table — All drivers' current state, click any to edit. Status pill shows live state: 🟢 Clocked In, 🍽️ On Lunch, ☕ On Break, or grey "Clocked Out" when the shift's done.
  • ☕ Breaks column — Each row shows a count + total minutes for paid 15-min breaks taken today (e.g. "2 (24m)") as a clickable blue pill. Click it to open the Break Details modal with start time, end time, and duration for every break, plus an "In progress" badge for any active break.
  • Weekly Hours by Driver — Aggregated totals, OT flagged in red. Includes a ☕ Breaks (paid) column showing the total breaks taken across the entire week per driver.
  • + Manual Entry — Add an entry if a driver forgot to clock in/out.
  • 📥 Export CSV — Download last 2 weeks for payroll.
✅ Break audit trail — Every break a driver takes is recorded in the driver_breaks table with exact start/end timestamps and computed duration. Owners can verify any disputed break time by clicking the breaks pill on any clock-in row.
⚠️ Geofence failures — If a driver tries to clock in from home or somewhere far from the station, they get an error showing the distance. They can NOT clock in remotely.
⚠️ iPhone Safari note — The lunch/break alarm uses Web Audio. iOS may suppress the bell if the silent switch is on. Drivers should keep the ringer ON or rely on the vibration + notification, which always fire.
🍽️
Lunch Timer All Roles
A full-screen countdown timer with end-of-lunch alarm — keeps drivers honest about lunch length without you having to chase them.

Why It Exists

Drivers run out of time on lunch. Without a timer, they either guess the time and come back late (over-lunch, paid OT trouble) or rush back early and skip food. The Lunch Timer is a built-in stopwatch with an audible alarm so drivers actually use their full break — and don't run over.

How a Driver Uses It

  1. Driver is clocked in (see Time Clock section).
  2. Tap 🍽️ Start Lunch.
  3. The clock card flips into a full-screen circular countdown timer. Default is 30 minutes, configurable per DSP (see below).
  4. Driver puts the phone down or pockets it. They can navigate away from DSPro and the timer keeps running in the background.
  5. When the countdown hits 0:00:
    • 🔔 Bell sound rings every 4 seconds
    • 📳 Phone vibrates
    • 📲 Browser notification fires (even with the tab in background)
  6. Three buttons appear when the alarm rings:
    • 🔕 Stop Alarm — Silences the alarm but stays on lunch. Overage time starts counting up in red. Use when the driver knows they need a few more minutes.
    • ⏰ Snooze 5 min — Adds 5 minutes to the timer and re-arms the alarm. Driver can snooze multiple times if needed.
    • 🟢 End Lunch — Clocks back in immediately. Card flips back to "Clocked in" state with break buttons available.
✅ Audio unlock — The alarm sound is "unlocked" the instant the driver taps Start Lunch. This is a browser quirk: audio can't play unless the user has interacted with the page first. We use that Start Lunch tap as the interaction.

⏰ Lunch Duration Setting Owner Only

Owners control the lunch countdown length:

  1. Open Time ClockStation Setup
  2. Find Lunch Duration field
  3. Enter minutes (valid range: 15 to 120)
  4. Save

Default is 30 minutes. The new duration applies to every driver under this DSP starting on their next lunch. Already-running lunches keep the duration they started with.

💡 Local labor law check — Tennessee requires a 30-minute unpaid meal break for shifts over 6 hours. Florida has no state-mandated break. Check your state's labor rules before setting anything below 30 minutes — your DSP could be cited even though DSPro is just a stopwatch.

📱 iOS Audio Note

On iPhone, the lunch alarm uses HTML audio that's pre-unlocked when the driver taps Start Lunch. In most cases this works perfectly. However:

  • If the iPhone is on silent mode, the alarm won't ring audibly — but the phone still vibrates and shows the notification.
  • If the driver navigates to another app and the phone screen locks for an extended period, iOS may suspend background audio. The notification still fires.
  • For the most reliable alarm: leave DSPro open in the foreground OR have notifications enabled for the dsproapp.com tab.
⚠️ Train drivers to enable notifications — When a driver first opens DSPro and the browser asks "Allow notifications?" — say YES. Without notifications, the alarm relies only on audio (which iOS can suspend) and vibration. With notifications, the system-level alert is bulletproof.

How Lunch Affects Pay

Lunch time is unpaid and deducted from the driver's total shift hours. If the lunch timer was set to 30 minutes and the driver actually took 35 (used Stop Alarm with overage), the full 35 minutes is deducted — encouraging drivers to come back on time.

If the driver ends lunch early (e.g., back at 20 minutes), only the actual 20 minutes is deducted. Quick lunches = more paid hours.

✅ Honest accounting — DSPro tracks the ACTUAL lunch duration (Start Lunch → End Lunch timestamps), not the scheduled duration. No way to game it.

Troubleshooting

  • Alarm didn't ring — Phone was on silent. Drivers should enable notifications for dsproapp.com.
  • Lunch shows as 0 minutes in time log — Driver tapped Start Lunch and End Lunch within seconds. The minimum duration tracked is 1 minute.
  • Timer froze — Driver tabbed away in browser, phone backgrounded the tab. Re-opening DSPro should resume from the correct elapsed time.
  • Overage time keeps counting and won't stop — Driver tapped Stop Alarm but didn't tap End Lunch. Overage continues until they explicitly end lunch.
📦
Package Issues All Roles
Drivers report extra or missing packages with photo evidence. Owners + managers review and triage with status workflow.

Why This Exists

Two of the most common Amazon DSP package problems happen daily across every station: extra packages end up in the wrong driver's truck, and missing packages show up on a driver's route but never made it into the van. Without a structured way to flag these in real time, drivers either text a manager (untracked), call dispatch (no record), or just deliver the wrong stops and create a scorecard hit. The Packages page gives every shift a single source of truth — photo, timestamp, driver, status — that maps cleanly to Amazon's standard support flow.

Driver Workflow

  1. Driver opens the 📦 Packages page from the left nav (or tap the icon in the mobile top bar).
  2. Two big buttons appear at the top:
    • 📦 Extra Package — Take Photo (blue) — for a package in the truck that's NOT on the route. Driver photographs the package label so the owner has a clear address to work with.
    • 🚫 Missing Package — Take Photo (red) — for a package on the route that's NOT in the truck. Driver photographs/screenshots the route app showing the missing stop.
  3. Tapping a button opens a tinted modal (blue for extra, red for missing) with a camera button and an optional comment field.
  4. Photo is auto-resized to 1280px on the long edge at 0.78 JPEG quality before upload (sharp thumbnails, ~70% smaller files for fast cellular upload).
  5. Submit → row created in package_reports table with status open, photo uploaded to the package-photos storage bucket.
  6. Driver immediately sees their submission in the report list below the buttons.

Driver Self-Actions (deploy_359)

If the driver realizes after submission that something changed, they get two buttons on their own open reports — no waiting for owner triage:

  • 📷 Retake Photo — opens a small modal to capture a new photo. Replaces the original photo on the report (storage + DB updated). Comment + status unchanged. Useful when the driver photographed the wrong package label or the original photo was unclear.
  • 🟢 I Found It — closes the report with status driver_resolved. For "missing" reports, this means the driver located the package after all. For "extra" reports, this means the driver delivered or returned it themselves. Different from owner Resolved/False Alarm so the audit trail is clear.
💡 Why no Delete button? Drivers can fix their own mistakes (photo / status) but cannot fully erase a report. Once a report is in the system it stays — owners always see the original record + how it was resolved. Audit-safe.

Owner / Manager Triage

The same Packages page shows all drivers' reports for owners and managers. Each report renders as a stacked card showing the driver's name + avatar, a 📦 / 🚫 type badge, the status, the timestamp, a 📷 View Photo button, the driver's comment, and four action buttons:

  • ✓ Resolved — Issue handled, no further action.
  • ✗ False — Driver was mistaken (package was actually in their truck / not on their route after all).
  • 📞 Amazon — Contacted Amazon support about the package.

Each action moves the report out of the "Open only" view and stamps it with the resolver's user ID + timestamp. Reports the driver has already self-resolved appear with a green "🟢 Driver found it" badge.

Filters

Owner/manager view has three filters at the top:

  • Status — Open only (default), All, Resolved, False alarm, or Contacted Amazon.
  • Type — All types, 📦 Extra only, or 🚫 Missing only.
  • Date range — Last 7 / 30 / 90 days, or All time.

Dashboard Surface

A 📦 Package Issues stat card sits in the dashboard cockpit grid (manager + owner only). Shows today's open count color-coded:

  • Gray 0 — No open reports today.
  • Amber N — Open reports today, all extras.
  • Red N — At least one missing package open today.

The stat card subtitle breaks it down: e.g. "3 extra · 2 missing today". Click the card → jumps straight to the Packages page. The left nav also gets a small red badge with the open count.

⚙️ Email Settings

Click ⚙️ Email settings at the top of the Packages page to control email alerting. Default = OFF on purpose — at scale (100+ vans), you'd be drowning in package alert emails within a single shift. Reports always appear on the dashboard widget and the Packages page regardless.

  • Enable email alerts toggle — when ON, sends an email to you, all your managers, and any extra emails listed.
  • Additional emails — comma-separated list (e.g. dispatch@yourdsp.com, ops@…) for routing alerts to the right team without giving them DSPro accounts.
💡 When to flip emails ON: If your station processes <25 vans/day OR you specifically want every package issue in your inbox for compliance reasons. Otherwise leave it off and check the dashboard widget once or twice per shift.

Database Tables Used

  • package_reports — one row per submission. Columns: id, owner_id, driver_id, report_type ('extra' | 'missing'), comment, photo_path, station_code, status, resolved_by, resolved_at, resolution_note, created_at, updated_at.
  • package-photos storage bucket — public-read, with RLS policies restricting upload to the path {owner_id}/{driver_id}/....
  • profiles.package_alert_email_enabled + profiles.package_alert_extra_emails — per-DSP email config.
✅ Audit-ready — Every report keeps the original photo + driver comment + resolution note + timestamps. Useful when an Amazon dispute requires "show me what the driver saw at 9:42 AM on Tuesday."
🛡️
Attendance Points Owner + Manager
Point-based attendance tracking with 6-month rolloff. Auto-creates Written Warnings at 6/9/12 point thresholds.

The Point System

Each attendance event has a point value:

  • Late (under 15 min) — 0.5 points
  • Late (15+ min) — 1 point
  • Left early — 1 point
  • Callout (with notice) — 1 point
  • Callout (no notice) — 2 points
  • No-show — 3 points

Rolloff

Points roll off after 6 months from the date they were earned. So a driver who got 3 points in January will see those drop off in July.

Tier Thresholds

  • Good (0–3 points) — Green
  • Watch (3.5–5.5 points) — Yellow
  • Warning (6+ points) — Auto-creates a Written Warning
  • Final Warning (9+ points) — Auto-creates a stronger Written Warning
  • Termination Recommended (12+ points) — Top-severity warning auto-issued

Logging an Event

From the Attendance page, click + Log Attendance Event:

  1. Pick driver.
  2. Pick event type (above list).
  3. Set date.
  4. Optional: notes (why, context).
  5. Save → driver is notified, points auto-update, warning auto-created if threshold crossed.
💡 Tip: Drivers see their own attendance history on their profile (read-only). Transparent point tracking reduces disputes.
⚠️
Written Warnings Owner + Manager
Formal corrective documentation. Auto-generated from attendance and scorecard tier drops, or manually issued.

Two Sources

  • Auto-generated — Triggered by attendance thresholds (6/9/12 points), scorecard drops to Poor, or repeat incidents.
  • Manual — You issue one for behavioral issues, customer complaints, dress code, etc.

Severity Levels

  • Verbal — Documented coaching, no signature required.
  • Written — Standard formal warning.
  • Final — Last chance before termination.

Driver Acknowledgment

Drivers see warnings on their profile and can acknowledge them. Acknowledgment is logged with timestamp + IP address — equivalent to a digital signature.

⚠️ Legal compliance: Written warnings are part of your termination defense. Always include specific dates, behaviors, and corrective expectations.
🚨
Incidents Owner + Manager
Log accidents, customer complaints, vehicle damage, safety events. Photo attachments supported.

What Counts as an Incident?

  • Vehicle accidents (any contact, even minor).
  • Property damage (mailbox, garage, fence).
  • Injury to driver or others.
  • Customer complaints requiring investigation.
  • Stolen package reports.
  • Aggressive behavior incidents.

Logging an Incident

  1. Click + Log Incident.
  2. Pick driver involved.
  3. Select category (accident, customer complaint, etc.).
  4. Set severity: Low / Medium / High / Critical.
  5. Date and time.
  6. Detailed description (what happened, who reported, witnesses).
  7. Attach photos if available.

Status Tracking

Incidents have a status:

  • Open — Just logged, awaiting investigation.
  • Investigating — In progress.
  • Resolved — Closed with outcome documented.
💡 Tip: Even minor incidents should be logged. Patterns (e.g., the same driver having multiple "minor" backings) reveal larger issues over time.
Approvals Owner + Manager
Driver-uploaded documents waiting for your review (license renewals, MVR clearances, certifications).

What Drivers Upload

  • Updated driver's license (after renewal).
  • Medical card / DOT physical.
  • MVR clearance documentation.
  • Training certificates.
  • Custom request documents.

Review Workflow

  1. Sidebar Approvals badge shows pending count.
  2. Click Approvals → see queue with thumbnails.
  3. Click any item → full preview, driver details, document.
  4. ✅ Approve — Document accepted, driver record updated, audit logged.
  5. ❌ Reject — Reason required (driver sees this), driver re-uploads.
💡 Tip: Set up notification rules so a manager handles approvals for license/MVR docs while you handle financial/banking docs.
🚗
MVR Checks Owner + Manager
Quarterly Motor Vehicle Record (MVR) check tracking. Required by Amazon and DOT for active drivers.

Why MVR Matters

Amazon requires DSPs to run MVR checks at least every 90 days on every active driver. Failing to comply puts your contract at risk and creates legal exposure if a driver with a suspended license is involved in an accident.

How DSPro Helps

DSPro tracks the date you last ran an MVR for each driver. The Dashboard shows a banner when MVRs are due:

  • Severely Overdue (180+ days) — Red, urgent.
  • Overdue (90+ days) — Red.
  • Due Soon (60+ days) — Orange.
  • Never Run — Grey, needs first check.

Logging MVR Runs

Two ways:

  • Per-driver — Open driver profile → MVR card → "✓ Mark Run Today".
  • Bulk CSV import — Upload a CSV from Samba Safety, DMV portal, etc. DSPro matches drivers by name/ID and updates last_mvr_check_at + flags any with status issues (suspended/revoked).
💡 Enterprise option: Samba Safety integration for fully automated MVR pulls is available in DSPro Enterprise. Contact us for pricing.
📋
Renewals Owner + Manager
Track upcoming renewals: van registrations, driver licenses, medical cards, certifications.

What's Tracked

  • Van registration expiration (auto from fleet data)
  • Driver's license expiration (auto from driver profiles)
  • DOT medical cards
  • Rental van return dates
  • Custom renewal items you add

Lookahead Windows

Renewals page shows everything due in the next 60 days, color-coded:

  • Red — Overdue or expiring today
  • Orange — Due in 14 days
  • Yellow — Due in 30 days
  • Grey — Due in 60 days

📊 Quick Filter Tiles (NEW)

The four summary tiles at the top of the Renewals page are now clickable filters. Click any tile to filter the calendar below to that window:

  • Past Due — Show only items already overdue
  • Next 30 Days — Show only items due in 30 days
  • Next 60 Days — Show only items due in 60 days
  • Total Tracked — Show everything (default state)

The active tile gets a blue outline. Click the same tile again to deselect, or click Total Tracked to clear all filters.

💬
Messages All Roles
In-app messaging between owner, managers, and drivers. Bulk announcements + 1:1 chats.

Message Types

  • Announcements — Send to all drivers at once. Pinned to top of their inbox.
  • Group messages — Send to a filtered subset (e.g., all Fantastic+ drivers, or all working tomorrow).
  • 1:1 chats — Private conversations with individual drivers.

Notifications

New messages trigger a red badge in the sidebar. Drivers also get an in-app notification when they next open DSPro.

📜
Activity Log Owner Only
Complete audit trail of every action taken in DSPro by you or your managers.

What's Logged

  • Document approvals/rejections
  • Schedule changes (publishing, shift swaps)
  • License status changes
  • MVR runs (per-driver and bulk)
  • Hire date setting
  • Attendance event logging + threshold crossings
  • Bulk operations (invites, CSV imports)

Each Entry Shows

  • Who did it (owner or specific manager).
  • What action.
  • Which driver/object affected.
  • When (timestamp).
  • Revert button (where reversible).

Search

Search bar filters by driver name, action type, or actor name. Use this to investigate disputes ("when did this driver get marked as suspended?").

👤
Team & Access Owner Only
Invite managers, set their permissions, manage who has access to what.

Inviting a Manager

  1. Click + Invite Manager.
  2. Enter their full name + email.
  3. Select permissions:
    • Add drivers
    • Upload scorecards
    • Log incidents
    • Send messages
    • Delete records
    • Manage team (invite other managers — usually off)
  4. Send invite — they get an email to set their password.

Manager Mode

When a manager logs in, they see a purple "🔧 ACTING AS MANAGER" badge in the sidebar so they always know what role they're in.

Inviting a Driver

Drivers get DSPro access via the same invite system, but the workflow is on the driver's profile (not Team & Access).

  1. Drivers tab → click the driver's name to open their profile
  2. Click Send Invite to DSPro
  3. The email field is pre-filled from the driver's record. Confirm or edit, then click Send invite to email
  4. The driver gets an email titled "[DSP Name] invited you to DSPro" with an "Accept Invitation" button
  5. They click → set their password → land on their driver dashboard

Re-sending an invite generates a fresh link — useful if the driver lost their first email or the link expired.

🔧 Repair Invite Link (NEW)

Sometimes a driver clicks their invite link and sets a password but gets stuck on the "Welcome — set a password" screen, OR logs in and the app shows them as DSP Owner instead of Driver. This happens when the driver's auth account got created but didn't link properly to their driver record.

How to fix:

  1. Drivers tab → click the affected driver → Send Invite to DSPro
  2. If the invite is stuck, you'll see a yellow status panel with a 🔧 Repair Link button
  3. Click 🔧 Repair Link → confirm
  4. A prompt asks for the driver's auth user ID. Find it:
    • Open Supabase Dashboard → your project
    • Left sidebar → AuthenticationUsers
    • Search for the driver's email
    • Click their row → copy the User UID (long UUID string)
  5. Paste the UID into the prompt → click OK
  6. Toast confirms "✅ Invite link repaired"
  7. Driver can now log in normally with the password they set
💡 When you'd use this: If a driver tells you "I clicked the link and set my password but it keeps asking me to set a new password" or "I'm logged in but I can't see My Schedule" — that's the stuck-invite state. Repair Link fixes it without needing to re-invite or reset.
⚠️ Once repaired, the driver should log out and log back in in a clean window so their session picks up the corrected role.
🎯
Performance Thresholds Owner Only
Customize the cutoffs that determine each driver's tier per metric.

Defaults match Amazon's published WTN2 station values. Adjust to match what your DSP has configured in the Amazon Logistics Portal so DSPro and Amazon agree.

Tier Order

  • ⭐ Fantastic+ (best)
  • 🏆 Fantastic
  • 👍 Great
  • ⚠️ Fair
  • 🚨 Poor

Per-Metric

Set thresholds for each scorecard metric: DCR, DAR, POD, Contact Compliance, Speeding, Distractions, Following Distance, Sign Violations, etc.

💳
Billing Owner Only
Manage your DSPro subscription, payment methods, plan tier.

Your current plan, next billing date, and payment method are all on the Billing page.

Plan Tiers

  • Starter — Up to 25 drivers
  • Professional — Up to 60 drivers + manager seats
  • Enterprise — Unlimited drivers + Samba Safety integration + priority support

Upgrading or Downgrading

Plan changes take effect immediately. Pro-rated billing on the next invoice.

🔒
Security & Legal Owner Only
How DSPro protects your data, privacy controls, terms of service.

Data Protection

  • All data encrypted at rest and in transit (TLS 1.3).
  • Database hosted on enterprise-grade infrastructure (Supabase / AWS).
  • Role-based access control — drivers can't see other drivers' data.
  • Daily automated backups with 30-day retention.

Your Rights

  • Export all your data anytime (CSV downloads on every page).
  • Delete your account and all associated data — irreversible.
  • Driver data is YOUR data — Amazon doesn't get a copy.
AI Weekly Coaching Briefs Owners Only
Every Monday, Claude analyzes your fleet and writes personalized coaching briefs for every driver who needs attention — saving you 1–2 hours of prep work.

What It Does

AI Weekly Coaching Briefs lives on your Dashboard (the blue gradient widget under your top stats). Click ⚡ Regenerate Briefs and Claude reads each driver's safety score, quality score, DCR, POD, attendance, and any open incidents — then writes a short coaching paragraph for each one explaining:

  • What they did well this week (lead with the positive)
  • The single biggest thing they need to fix
  • The specific metric or behavior driving their tier
  • Whether they're trending up or down vs. last week

The brief is written in your voice — direct, no jargon, focused on what the driver should DO next week, not just what happened last week.

✅ Time saved — Owners report 1–2 hours of Monday prep work saved every week. AI does the synthesis; you do the coaching conversation.

How to Generate Briefs

  1. Open Dashboard — the blue gradient widget is visible to owners only (scroll down a bit past the top stat cards).
  2. Pick a week — defaults to the most recent week with scorecard data. You can run briefs for any past week.
  3. Pick who to analyze — three filters:
    • Needs attention (Fair/Poor + incidents) — most common. Just the drivers who need coaching this week.
    • All drivers — every active driver, including your stars (good for end-of-quarter reviews).
    • Specific tier — drill into one tier at a time (e.g., everyone at Great who almost made Fantastic).
  4. Click ⚡ Regenerate Briefs — Claude processes 5–10 drivers in parallel. Takes 30–90 seconds depending on fleet size.
  5. Review the briefs — each driver gets a card with their name, current tier badge, and the coaching paragraph.

What to Do With the Briefs

Two ways to act on a brief:

  • Per-driver — Send Coaching button — sends the brief to the driver as an in-app message + SMS (if their phone is on file). Driver sees it on their phone before next shift.
  • Bulk Actions — Coach (N) / Check-in (N) — sends all generated briefs at once. Useful Monday morning when you want every driver to see their brief before they roll out.
💡 Monday morning ritual — Generate briefs at 6:00 AM, click Coach (all) at 6:05 AM. Every driver wakes up to a personalized coaching note before their first stop. Owners who do this consistently see tier improvements within 4–6 weeks.

Stop Button

If a generation run is taking too long or pulling the wrong drivers, click 🛑 Stop. The job halts immediately. Briefs already generated stay; the rest are dropped.

Brief History

Past briefs are preserved on each driver's profile under Coaching History. You can scroll back through weeks and see what you sent — useful for performance reviews or when defending a termination decision.

Privacy & Cost

  • Driver names, scorecard metrics, and incident summaries are sent to Anthropic's API for analysis. No photos, no SSN, no payroll data.
  • Anthropic does not retain customer data submitted via API for training. See Anthropic's privacy policy.
  • Average cost per brief: ~$0.01–0.02. A 60-driver fleet costs roughly $1–2 per weekly generation.
  • Edge Function: clever-worker — same gateway as other AI features.
⚠️ The brief is a starting point, not the script — Claude writes the analysis; you deliver the coaching. Read each brief before sending. If something feels off (driver had a death in the family, a misread metric, etc.), edit or skip it. The AI doesn't know context you do.

Troubleshooting

  • Brief is empty or generic — driver doesn't have enough weekly scorecard data yet. Upload at least one Amazon weekly scorecard PDF first.
  • Wrong driver shown — check the "Who to analyze" filter. "Needs attention" only includes Fair/Poor or those with open incidents.
  • Generation hangs — click Stop, refresh the page, try again. If it keeps failing, the Anthropic API may be having a hiccup.
  • Driver didn't get the message — verify their phone number is on file. Check Activity Log for the send event.
🤖
AI Features Owner + Manager
Anthropic-powered tools for damage detection, document scanning, and scorecard parsing. All AI calls run server-side via Supabase Edge Functions.

Why Server-Side?

Every AI feature in DSPro routes through a Supabase Edge Function — never directly from the browser. This keeps the Anthropic API key in Supabase secrets where the user can't see or steal it. If you ever want to disable an AI feature, you can flip it off at the Edge Function level without touching the front-end.

✅ Security — The Anthropic key lives in Supabase secrets, accessed only by Edge Functions. The browser never sees it.

📷 Van Damage Detection

Edge Function: compare-inspection-photos

  • Triggers automatically when a fresh 4-photo van inspection is uploaded.
  • Pulls the previous 4 photos for the same van.
  • Sends all 8 photos to Claude with a prompt asking it to flag new damage.
  • Stores the AI's findings on the inspection record.
  • Surfaces alerts in the Fleet Pictures section (and dashboard widget — coming deploy 337+).

🚐 VIN Scanner

When adding or editing a van, owners/managers can snap a photo of the VIN plate or registration. The AI reads the 17-character VIN and auto-fills the field — no typing.

🆔 Driver License Scanner

When onboarding a new driver, the owner can photograph the front of the driver's license. The AI extracts: full name, DL number, expiration date, address. Pre-fills the driver record. Owner reviews and confirms before saving.

⚠️ Always verify — AI extraction is fast but not perfect. Confirm the DL number and expiration date by eye before saving — these flow into MVR check schedules.

📊 Scorecard PDF Parser

When uploading the official Amazon weekly scorecard PDF, DSPro uses PDF.js to extract the text, then Claude to interpret it — pulling out per-driver Safety, Quality, Team, and Fleet metrics, plus the station-level rank/tier. The structured data lands in the amazon_* columns on each driver record so the leaderboard and bonus calculator can use it.

💡 PDFs change format — Amazon revises the scorecard layout occasionally. If a parse fails, the raw PDF is still saved and you can re-import after the parser is updated.

API Limits & Cost

  • All AI calls bill against the Anthropic key configured in Supabase secrets.
  • Damage detection (8-photo comparison) is the most expensive operation per call.
  • VIN and DL scans are cheap — single photo, short response.
  • Scorecard parses run once per weekly upload.
⚠️ AI is a helper, not the truth — Always have a human review AI output before taking employment, financial, or disciplinary action. The AI is fast and consistent, but it can hallucinate or misread; treat it as a first pass, not the final answer.
🚗
Driver Experience Reference
What your drivers see when they log into DSPro.

Driver Sidebar

Drivers see only 3 sidebar items:

  • My Profile — Their scorecard, attendance, license, MVR status, documents, warnings, and clock-in card.
  • My Schedule — Their published shifts only (not the whole roster).
  • Time Clock — Big clock-in card + their own time entries.

What Drivers CAN'T See

  • Other drivers' performance data (only their own + leaderboard top 10 anonymized).
  • Owner/manager admin pages (Team, Billing, Settings, etc.).
  • Other drivers' incidents or warnings.
  • Pay rates, financial info.

What Drivers CAN Do

  • Acknowledge their schedule, decline shifts, request changes.
  • Upload documents (license renewals, etc.) for approval.
  • Acknowledge written warnings.
  • Send/receive messages with you and managers.
  • Clock in/out from station (geofenced).
FAQ & Troubleshooting All Roles
Common questions and quick fixes.

A driver can't log in

  1. Confirm they accepted their invite (check Team & Access — invite status).
  2. Have them try password reset from the login page.
  3. If still failing, you can resend an invite from their driver profile.

Driver clock-in says "out of range"

  1. Check Station Setup → confirm coordinates are saved (lat/lng visible).
  2. Driver should be physically at the station with location enabled on their phone.
  3. If station radius is small (e.g., 200ft), drivers in the parking lot may be just outside. Increase radius.

Scorecard upload didn't match a driver

  1. Check the unmatched list shown after upload.
  2. Most common: name spelling mismatch (e.g., "Mike" vs "Michael" on Amazon's side).
  3. Update the driver's name in DSPro to match exactly, then re-upload.

Hire date import shows 0 matches

  1. CSV must have either driver_id or full_name column.
  2. Names must match drivers in your roster exactly.
  3. Date format: YYYY-MM-DD (e.g., 2024-03-15).

I issued a warning by mistake

Open the warning, click Edit, mark as Voided. Reason is logged in the audit trail.

How do I reset my own password?

From the login page, click "Forgot password?". A reset link is emailed to your registered email.

Can I export everything?

Yes. Most pages have a "📥 Export CSV" button. Time clock entries, scorecard history, attendance events, drivers list — all exportable.

I uploaded the wrong file to a tile in the Upload Station — did I break anything? (NEW)

No. Files are routed by content detection, not the tile you dropped them on. If you drop a Customer Feedback CSV onto the POD Rejects tile, DSPro reads the headers, recognizes it as Customer Feedback, and routes correctly. The tile is just an instruction-display — the parser does the actual work.

Why is my driver showing as "Fair ↓ from Fantastic" with a strikethrough? (NEW)

Either:

  • Tier capping is enabled and the driver's lowest category score (Safety, Quality, or Customer Feedback) brought them below their Overall tier — the strikethrough shows their original Amazon tier
  • You manually overrode their tier via the editor menu — click their editor button → Override Tier to clear it

Why doesn't the Swap Rank feature work? (NEW)

Likely because per-driver Amazon ranks haven't been published or imported. Click 🔢 Bake Ranks at the top of the Scorecards Week page first — that anchors the current sort order as ranks. Then Swap Rank works cleanly.

I locked a driver's phone, but it still got overwritten. Why? (NEW)

Two things to check:

  • Did you click Save in the edit modal after toggling the lock? The pill state alone doesn't persist until you save.
  • Is the pill showing 🔒 Locked (amber) or still 🔓 Auto (gray)? Only Locked is protected from CSV overwrites.

The amber "X drivers not in latest roster CSV" banner won't go away. (NEW)

You need to resolve each flagged driver. Click Review → on the banner → for each driver, click either Mark Inactive (they really left) or Still Active (just clears the flag). Once the list is empty, the banner disappears.

The Customer Complaints tile shows zero but I have negative feedback uploaded. (NEW)

The tile shows the latest week with data count. If your last upload was Week 17 and you're early in Week 18, it'll show the Week 17 totals. If it shows 0, either:

  • You haven't uploaded any Customer Feedback CSV yet (use the 💬 tile in Upload Station)
  • Your most recent week genuinely had zero complaints (great job!)

A driver clicked their invite link but they're stuck or showing as Owner. (NEW)

Use the 🔧 Repair Link button on the driver's invite modal. Drivers tab → driver's profile → Send Invite to DSPro → if you see a yellow "stuck invite" panel, click Repair Link. See the Team & Access manual section for full step-by-step.

Need more help?

Email support@dsproapp.com for direct help. Include: your DSP name, what you were trying to do, and a screenshot if applicable.

🔒
Your data is safe with DSPro
Built on enterprise-grade infrastructure. Your driver data is encrypted, isolated, and never shared. We take security seriously so you can focus on running your fleet.
🏗️
Enterprise Infrastructure
Powered by Supabase — SOC 2 Type 2 certified, trusted by Mozilla, PwC, and thousands of companies worldwide.
🔐
Data Isolation
Row-level security ensures your drivers, warnings, and inspections are only visible to you. No other DSP can ever access your data.
🔑
Encrypted Everywhere
All data is encrypted in transit (HTTPS/TLS) and at rest. Passwords are hashed and salted — never stored in plain text.
👥
Role-Based Access
Owners, managers, and drivers each see only what they need. You control who has access and what they can do.
🚫
No Amazon Credentials
DSPro never connects to Amazon or stores your Amazon login. You simply upload a CSV export — nothing more.
📵
No Data Selling
We never sell, share, or monetize your data. Your fleet information is yours — period. No ads, no third-party sharing.
📄 Privacy Policy
Effective: January 1, 2025

DSPro ("we," "us," or "our") is committed to protecting the privacy of our customers and their employees. This Privacy Policy explains how we collect, use, and protect information when you use the DSPro platform at dsproapp.com.

1. Information We Collect

Account Information: When you sign up, we collect your name, email address, and company information.

Driver & Fleet Data: You provide driver names, performance scores, schedules, van information, inspection records, and written warnings. This data belongs to you.

Usage Data: We may collect basic usage analytics (pages visited, features used) to improve the platform.

Payment Information: Billing is handled entirely by Stripe. DSPro never stores your credit card number or payment details.

2. How We Use Your Information

• To provide, maintain, and improve the DSPro platform

• To process your subscription and send billing-related communications

• To respond to support requests and customer service inquiries

• To send product updates and feature announcements (you may opt out at any time)

3. Data Sharing

We do not sell, rent, or share your data with third parties for marketing purposes. We use Supabase for database hosting and Stripe for payment processing. Both are bound by strict data processing agreements. We may disclose information if required by law or to protect our legal rights.

4. Data Security

We use industry-standard encryption (TLS/HTTPS) for all data in transit. Data at rest is encrypted on SOC 2 Type 2 certified infrastructure. Access is controlled by row-level security policies that ensure your data is isolated from all other customers.

5. Data Retention

Your data is retained for as long as your account is active. If you cancel your subscription, your data is retained for 30 days and then permanently deleted upon request. You may request data deletion at any time by contacting us at support@dsproapp.com.

6. Your Rights

You have the right to access, correct, or delete your personal data at any time. Contact us at support@dsproapp.com to exercise these rights.

7. Contact

For privacy questions, contact us at support@dsproapp.com.

📋 Terms of Service
Effective: January 1, 2025

By accessing or using DSPro, you agree to be bound by these Terms of Service. Please read them carefully.

1. Use of the Platform

DSPro is a fleet and driver management platform designed for Amazon Delivery Service Partners. You agree to use the platform only for lawful purposes and in accordance with these Terms. You are responsible for maintaining the confidentiality of your account credentials and for all activity that occurs under your account.

2. Subscription & Payment

• Subscriptions are billed monthly via Stripe.

• A 45-day free trial is available for new accounts. No credit card is required to start.

• You may cancel at any time. Cancellation takes effect at the end of the current billing period.

• We reserve the right to change pricing with 30 days notice.

3. Your Data

You own all data you input into DSPro. We do not claim any ownership over your driver data, inspection records, or fleet information. You grant us a limited license to store and process your data solely for the purpose of providing the platform services.

4. Acceptable Use

You agree not to:

• Use DSPro for any unlawful purpose or in violation of any regulations

• Attempt to gain unauthorized access to other customers' data

• Reverse engineer, decompile, or attempt to extract the source code

• Use the platform to store or transmit malicious code

5. Disclaimer of Warranties

DSPro is provided "as is" without warranty of any kind. We do not guarantee that the platform will be error-free or uninterrupted. We are not affiliated with Amazon and DSPro is an independent third-party tool.

6. Limitation of Liability

To the maximum extent permitted by law, DSPro shall not be liable for any indirect, incidental, or consequential damages arising from your use of the platform. Our total liability shall not exceed the amount you paid in the 3 months preceding the claim.

7. Governing Law

These Terms are governed by the laws of the State of Florida, without regard to conflict of law principles.

8. Contact

Questions about these Terms? Contact us at support@dsproapp.com.

🔒 Security questions?
Contact us directly — we take every security concern seriously and respond within 24 hours.
⚠️ Delete account
Permanently delete your DSPro account and the data associated with it. For DSP owners this also removes your roster, schedules, scorecards, inspections, and other records. This is permanent and cannot be undone.
📍 Station Setup
⏱️ Today's Clock-Ins
📊 This Week — Hours by Driver
📦 Package Reports
How this works: These cutoffs determine which tier (Fantastic+ / Fantastic / Great / Fair / Poor) each driver earns for each metric. Defaults match Amazon's published WTN2 station values. Adjust them here to match what your DSP has configured in the Amazon Logistics Portal → Settings → DA Performance Thresholds page so DSPro and Amazon agree.

Tier order: ⭐ Fantastic+ (best)🏆 Fantastic👍 Great⚠️ Fair🚨 Poor
CURRENT PLAN
Loading…
Loading...
per month
💰
Flat rate — no per-driver fees, ever.
Hire 10 drivers or 100 — same price. DSP Workplace charges per driver and bills more as you grow. DSPro never does.
You save $50+/mo 🎉
Starter
$199/mo
Up to 25 drivers
✅ Driver scorecards & CSV import
✅ Safety & quality score tracking
✅ Amazon CSV scorecard import
✅ Driver scheduling
✅ Written warnings & e-signatures
✅ Van inspections with photos
✅ Leaderboard & driver rankings
✅ Incident logging & alerts
✅ Dark mode
— In-app messaging
— Bonus & points system
— Daily dispatch board
⭐ MOST POPULAR
Professional
$349/mo
Up to 60 drivers
✅ Everything in Starter
✅ In-app team messaging with photo sharing
✅ Pre-built team channels (9 channels)
✅ Start/End of Shift check-in forms
✅ Bonus & points system with leaderboard
✅ Daily dispatch board
✅ Labor cost & overtime tracking
✅ Time off requests & approvals
✅ Team & role management
✅ Real-time incident alerts (in-app + email)
✅ AI van damage comparison
✅ VIN barcode scanner
✅ Bulk van fleet import
✅ SMS incident alerts
✅ Priority support
Enterprise
$549/mo
Unlimited drivers
✅ Everything in Pro
✅ Unlimited drivers & vans
✅ Multi-location / multi-DSP support
✅ Custom onboarding call
✅ Dedicated account manager
✅ Early access to new features
✅ Phone & chat support
✅ Custom integrations (ADP, payroll, etc.)
✅ White-label branding option
✅ SLA guarantee
All plans include a 45-day free trial — no credit card required. Cancel anytime. Even our highest tier ($549) beats DSP Workplace's per-driver pricing for fleets over 40 drivers.
✅ Every Plan Includes
🚐 Flat rate — no per-driver fees ever
📊 Amazon scorecard CSV import
🛡️ Safety, quality & attendance tracking
📅 Driver scheduling with drag & drop
🔍 Van inspections with 4-photo requirement
🤖 AI van damage comparison
⚠️ Written warnings & in-person e-signatures
👥 Team & role-based access
📋 Incident & coaching logs
🏆 Leaderboard & driver rankings
💬 Team messaging with photo sharing
🚦 Start/End of Shift check-in forms
🔔 Real-time incident alerts (in-app + SMS)
🌙 Dark mode
📱 iPhone & Android optimized
💳 Billing Details
🔓
Start Your Free Trial
30 days free — no credit card required to start. Cancel anytime.
📊 Why DSPro?
💰 $50/mo cheaper than DSP Workplace — and you get MORE features, instantly, no approval needed.
Sign up now and you're running in minutes. No waiting. No hidden fees. No per-driver pricing.
Feature ⭐ DSPro DSP Workplace ManageMyDSP
Monthly Price $349/mo flat $250+/mo ⬆️ Hidden pricing
Instant Signup ✅ Start in minutes ❌ Approval required ❌ 24hr wait
Works on iPhone
Amazon CSV Import✅ Instant
Driver Scheduling
Written Warnings
Fleet
Free Trial✅ 30 days✅ 30 days
In-App Messaging + Photos
Start/End of Shift Forms
AI Van Damage Comparison
Real-Time SMS Alerts
Bonus & Points System
Daily Dispatch Board
Labor Cost Tracking
VIN Barcode Scanner
Less money. More features. Start today. 🚀
👑 Owner
You
Full access
ℹ️ Permission Levels
👑 Owner — Full access, billing, team management
🔧 Manager — View all drivers, log incidents, coaching
👤 Driver — View own profile and scores only
Team Members
👥
No team members yet

Invite managers or drivers to join