Courier, logistics and hotshot
The software the courier business never got
ServiceProof is courier software, built for the way couriers actually work. Your clients book pickups on their own websites, a pickup and its drop-off travel as one job, and every driver’s route re-plans as the day changes. Every bank bag is accounted for from the customer’s door to the bank’s counter, the driver’s phone keeps working with no signal, and the bank gets one proof at the end of the day instead of ninety.
There is world-class logistics software. It was written for parcel networks moving millions of pieces through hubs, and it is sold at a price and a complexity that assumes you are one of them.
Underneath that sits everybody else — the local and regional couriers, the hotshot operators, the small warehouse that also runs deliveries. Twenty cars and ten box trucks. Bank runs, pharmacy runs, food, samples, parts distribution, same-day. Real contracts, real routes, real chain of custody, and essentially nothing built for them.
So they run on a whiteboard, a spreadsheet, a group text and a phone that never stops — and then lose the account to somebody who can produce a report.
This is that software. A mom-and-pop courier gets the thing the enterprise contracts are actually bought on: a defensible record of every stop, every day, sent as one document.
Way Delivery, with forty cars and box trucks running bank deposits twice a week, is moving its whole operation onto ServiceProof.
Why this one is a different beast
Courier work sits in a gap. It is not what trades software expects, and it is not what enterprise logistics is shaped for — so operators end up forcing one of the two and living with what breaks.
| What a courier actually does | Trades software assumes | Enterprise logistics assumes |
|---|---|---|
| Eighty stops of four minutes | Four stops of ninety minutes, and charges you eight taps of ceremony at each one | A hub-and-spoke network and a scan gun per parcel |
| A pickup here and a drop-off there | One job, one address | A shipment between two docks, with a label on it |
| The same stops, twice a week, forever | One-off calls; recurring work is a bolt-on | Shipments, not standing contracts with named sites |
| Custody: who handed it over, sealed, photographed | Nothing — a signature at best | Yes, but priced and scoped for a carrier |
| A driver in a car with a bag | A technician with a van full of parts | A tractor unit and a dock door |
| “Prove Tuesday” from the customer | One job report at a time | A portal the customer has to log into |
A stop is a visit. A standing contract is a recurring commitment, the same object a quarterly rooftop inspection uses. A bag is a warehouse, like a van. Chain of custody is a checklist, like a nameplate photograph. A day is a route, like a stacked round of preventive maintenance. Nothing here is a courier-shaped special case bolted onto the side — which is why it works rather than nearly works.
Your clients book it on their own website
A title company, a pharmacy or a restaurant orders a pickup and its drop-offs from a booking form on its own website, and the order lands on your dispatch board as one job, with the pickup and every drop-off already in place as its legs.
-
Your client books it
They order a pickup and its drop-offs on their own website, without picking up the phone.
-
It lands on your board
It arrives as one job in the Unassigned column, with the pickup and each drop-off as its legs.
-
It goes into a driver’s day
A dispatcher hands it to a driver, and it drops into their route where it adds the least driving.
-
Your client watches it move
They get a link to follow it, texts along the way, and the proof by email if they want it.
A client’s own system can book it, too. A client with an ordering system of its own can send the same booking straight to yours, server to server, without anybody filling in a form.
A pickup and its drop-off are one job
A courier job is something collected in one place and handed over in another, so ServiceProof keeps it as one job with its stops on it. The pickup and the drop-off are the job’s legs, each leg can go to its own address, and the job keeps one number and one customer however many legs it has.
One pickup and two drop-offs on one job, each leg at its own address with its own window, and every drive between them measured on the map.
Every leg goes to its own place
A parcel collected at the farm supply and handed over at the horseshoer’s is one job with two addresses on it, and a run with several drop-offs is still one job.
Pickups always come first
Whenever a route is planned, re-planned or given a new stop, a job’s pickups are put ahead of its drop-offs, so nobody is sent to deliver something they have not collected yet.
A drop-off waits for the right moment
Once the pickup is done, the drop-off can stay open until the driver is near it, instead of forcing a drive across town straight after the collection.
A route is a day’s plan; a commitment is a promise
Two different things get called “the route”, and confusing them is how courier software ends up with a scheduling model that cannot express either one properly.
| The recurring commitment | The route |
|---|---|
| Twice weekly to that clinic, forever. | Today, this driver, these fourteen stops, in this order. |
| It generates work, on a cadence, inside a window. | It sequences the work that exists — including the ad-hoc jobs that simply fell in the area. |
| The same object a plumbing shop uses for a quarterly PM. Authored the same way, by the same screens. | The same thing a technician stacking three PMs in one area needs. One mechanism, two businesses. |
The plan side has a page of its own: anchored stops that nothing may rearrange, the moment the manifest reached the driver, and the drive between each pair of stops. The route plan →
The bank-bag run and a quarterly maintenance round in one list, because they are one object. The number is the room left on the promise.
And the promise turns into work on its own. Every night, the next day’s standing rounds are released onto the drivers who run them, so the morning starts with each round already in its driver’s day instead of waiting for somebody in the office to put it there.
A recurring commitment can pin the same driver, because on a route the driver knowing the stops is the service.
Routes that re-plan as the day changes
Every driver’s day is a route: their stops in driving order, with a planned time at each one measured on real roads. When the day changes, as every courier day does, the route changes with it, and nobody in the office has to redraw it by hand.
| When the day changes | What the route does |
|---|---|
| A same-day pickup comes in at eleven | It goes into the driver’s day where it adds the least driving, and the times after it move to match. |
| The afternoon needs a fresh plan | Everything still to do is re-optimized, and every stop already finished keeps its place and its time. |
| The day gets shuffled every which way | The bank drop stays the last stop, so the deposits are all collected before they are dropped. |
| A job has a pickup and a drop-off | The pickup is routed ahead of the drop-off, every time. |
And every driver sees their own route
- It is on their own phone, in driving order, with the next stop on top and the drive to it one tap away in their maps app.
- “On my way” is right on the next-stop card. One tap as they pull away records the start of the drive, and a customer who asked for texts hears that the driver is on the way.
A day of courier routes: one plan per driver, each with its stops counted.
Skip a stop just this once, or pause it
When a customer calls to say they are closed for a holiday, away for two weeks or only need Thursdays from now on, the change takes one press and a reason, and the stop is turned off exactly as far as they asked and no further.
| The customer says | You turn it off | What happens |
|---|---|---|
| “We’re closed this Tuesday.” | Just this once | That one stop is skipped at the customer’s request, and the round carries on as usual. |
| “We’re away until the third.” | Until a day | Every stop until then is off, and it comes back on its own that day. |
| “Thursdays only, from now on.” | On certain weekdays | The Tuesdays stop and the Thursdays carry on. |
| “No more pickups after Friday.” | From a day | Nothing more is planned for that stop from that day on. |
The record and the bank’s proof both say why. A stop skipped at the customer’s request says exactly that beside it, so a day with a closed shop in it reads as what happened rather than as a missed collection.
Chain of custody is a workflow, not a subsystem
A photograph of the deposit in the bag. A barcode scan. A signature. Captured as steps, by the same engine a technician uses to photograph a nameplate — which is why it costs nothing to add and why the answers land in real fields you can query rather than in a note somebody has to read.
- A barcode scan is a capture type on a step, not a feature area. The raw scanned string is kept verbatim, so what the scanner actually read is still there later.
- A bag is a warehouse. The driver scans the bag they are using at the start of the run, and the pickups go into it. Two bags open at once is two visits, each stamped with its own container. That needed no new concept, which is the point.
- The van is the same idea. A driver is never bound to a vehicle — they scan whichever one they took this morning. If the truck breaks and they grab another, the run continues on the new one.
Pick the vehicle at clock-in. A bag works exactly the same way.
Every bank bag, from the door to the counter
A bank deposit run carries two kinds of bag, and ServiceProof keeps them apart. The customer’s deposit bag comes from the bank with the bank’s own barcode on it, and it is the one the bank cares about. Your collection bag is the one it rides in.
-
The bank’s bag first
At each stop the driver scans the customer’s deposit bag first, in whatever barcode the bank printed on it: Code 39, Code 128, ITF, QR, UPC or EAN.
-
Then the bag it rides in
Next the driver scans your collection bag, so the record says which bag every deposit went into.
-
Out at the bank’s counter
The driver scans each bank bag out, with anything missing or unexpected named on the spot, or hands the whole bag over with a signature.
-
The whole trail, any time
Ask where any bank bag is, and the office sees where it was collected, the bag it rode in and where it is now.
Stickers for your own bags
Print your collection bags’ barcode stickers straight from ServiceProof. Each number comes from your own bag series, so no two bags can wear the same label, and it is printed under its bars so a wet sticker can still be typed in.
Custody on the bank’s proof
The day’s proof shows the custody of every bag: which bank bags went into which collection bag at which stop, and how each one reached the bank.
The bags sit on the same list as the box trucks and cars, because a bag is a warehouse too.
The checklist presses the buttons
This is the difference between software written for a plumber and software that has watched a courier day.
A technician doing four ninety-minute calls can afford to tap Arrived, then Start, then confirm, then open the checklist. A driver doing eighty four-minute stops cannot. Counted on the real screens, a courier stop took about forty-two taps, and several of them were pure status ceremony that captured nothing at all.
And it is asking twice. A driver on step three of the pickup checklist has, by definition, arrived.
| The driver does this | The job quietly becomes |
|---|---|
| Answers “on your way?” | Traveling |
| Answers “at the door?” | Arrived |
| Says who handed the bag over | Working |
| Photographs the seal, scans the barcode | — |
| Finishes the checklist | Complete |
With courier mode on, the driver opens the stop, runs the checklist and goes on to the next one, and the same stop takes about twenty-two taps instead of forty-two. Across an eighty-stop day that is well over a thousand taps nobody has to make, and the times are more honest than they were before, because they are stamped at the moment the driver was actually doing the thing rather than whenever they remembered.
The status comes from the published procedure
Not from the phone. The handset says “step three is done”; the server reads what that version of the procedure declared and moves the job itself. A device that could name the status could mark a stop complete from the depot parking lot.
The buttons are still there
Nothing was taken away. A checklist that would not load must never leave somebody unable to record that they arrived at a locked gate. Courier mode adds; it does not remove.
A finished stop stays finished
Re-open a completed stop’s checklist — to read back what you captured, or because a phone is catching up after a dead spot — and it will not quietly re-open the job. It says so instead.
Every step stamps where you were
So “the bag was collected” becomes “the bag was collected, at the door, at 09:04”. That is the difference between a record and a receipt.
What the driver actually sees
The run, in driving order, with the leg to the next stop. Then one job at a time, and a checklist that asks the handful of things that matter at a bank counter rather than the forty that matter on a rooftop.
A bag is a warehouse, so it is picked or scanned on the same screen a van is. Nothing about bags is a special case anywhere in the product — which is the point.
Today’s run, in the order it will be driven.
And the office watches it happen — seven drivers, seven lanes, live.
A wingman in the driver’s ear
A driver at a red light should not be typing. Wingman reads the driver’s checklists into a Bluetooth earpiece and takes the answers out loud, so the phone can stay right where it is for the whole round.
Start of day, on my way, the pickup, the bank drop and end of day are all read aloud and answered by voice. Every answer lands in the same field a typed one would, checked the same way, so the record is exactly as good when nobody touched the screen.
Wake it with “hey wingman,” answer the step it reads out, and say “over” to send it.
The whole day works with no signal
Courier rounds run down farm roads and through dead spots, so the driver’s phone keeps the whole day on it. The run, every stop and its checklist are there whether there is a bar or not, and the driver simply keeps working.
An outbox for everything
Every scan, photo, signature and status change waits in an outbox on the phone and goes to the office by itself when the signal comes back. Nobody has to remember to press send.
Sent exactly once
A signal that comes and goes never sends the same scan or photo twice, so a stop is recorded once, however many times the phone dropped out and came back on the way.
The time it really happened
Everything is stamped with the moment it happened, not the moment it finally got through, so a pickup finished at 09:04 in a dead spot reads 09:04 on the bank’s proof.
Your customer watches it move
A customer should never have to call your office to ask where their pickup is. From the day before to the moment it is delivered, they can see it for themselves, and every call they do not make is time your office keeps.
A track-my-pickup map
A link shows the customer their job on a map: its stops, the driver while they are on the way to it, and the time each stop actually happened.
A lookup on your client’s website
It finds a job by its number or the customer’s own PO, plus the ZIP of the pickup or the drop-off, and a one-time code confirms the job is really theirs before anything is shown.
Texts as it happens
The customer is texted when the driver is on the way, arrives, leaves and delivers, and only if they have said yes to texts.
Confirmed the day before
A text and an email the day before tell the customer what is booked and which number will be texted on the day.
The proof can go to them, too. When the drop-off is done, the customer can be emailed the job’s proof with every photo, scan and signature, switched on per customer or per job. A bank, though, wants something else entirely.
Prove Tuesday
This is the part that wins and keeps contracts, and it is the part nobody in this segment can currently do.
A bank whose deposits are collected at ninety stops a day does not want ninety job reports. It wants Tuesday, as one document at the end of the day, headed with the bank’s name: every stop in time order, who went, when they arrived and finished, every photo and signature, and the custody of every bag.
A real one. Eight stops for Bird-in-Hand Bank, produced from the record in about a second.
Look at what is on a single stop: the site, the arrival at 08:07, work started 08:09, finished 08:14, who handed the bag over by name, the seal number, and the coordinate each one of those was recorded at. That is the difference between saying you collected it and being able to show it.
It shows the stops with NOTHING captured
The easy way to build this report is “find the day’s runs and print them” — which produces a beautiful document that is a lie. A day where thirty drivers ran the checklist and thirteen did not comes out as thirty perfect proofs, with nothing saying the other thirteen exist.
So it starts from the day’s stops and attaches proof to them. WITHOUT PROOF is on the cover, and every bare stop is named in the body.
The file that was sent is the record
The bytes are stored when it is produced, with a SHA-256 hash, and that file is what gets emailed and downloaded. It is never re-rendered later — re-making last month’s proof against today’s data hands the customer a document they never received.
Email it, download it, or let them fetch it
It goes to the bank once, at the end of the day, as an attachment from your own domain with a line of your own. And the same document is a capability, so a customer’s own system — or their agent — can pull it without anybody logging into a portal.
Per customer, per site, or per driver
The same report keyed three ways. The bank gets the bank’s day. A supervisor reviewing a new driver gets that driver’s day.
And your own office does not wait for the end of the day. Each stop’s own proof is one tap away for a dispatcher, so when the bank calls about one collection, the answer is already on the screen.
Where you compress the photo decides whether it is evidence
This is the most technical paragraph on this site and it is here because it is the one that cannot be fixed afterwards.
The obvious way to build a photo capture is to shrink the image on the handset, because a twelve megabyte photograph over cell service is painful. That destroys the EXIF before the server ever sees it — and “we captured the metadata” quietly becomes “the phone told us the metadata.” A client-asserted timestamp and GPS is exactly what fails under challenge, and a bag of cash deposits is exactly where somebody challenges it.
-
The raw bytes cross the wire
This is the cost, and it buys the whole thing.
-
The server reads the metadata
From the bytes the device actually produced. Not from a field the app filled in.
-
The server hashes the original
This is the step everybody skips, and it is the one that actually works.
-
Then it shrinks it and stores it
And the original is discarded or kept — that is the one knob, and it is per workflow.
And the files can live on your storage — your own Azure account or your own server today, with S3 and Google Drive next. Why that matters →
Courier route and rooftop quarterly are two plans in one book, each with its own movability window.
Priced the way a courier charges
A courier run is priced on the vehicle that runs it, the distance and the time, plus the extras. ServiceProof quotes it from your own rules in one click, and every line on the quote says how its number was worked out.
The base, the liftgate and the fuel surcharge, each with its arithmetic written beneath it.
Vehicle, distance and time
A cargo van and a box truck are different prices, and so are the miles and the hours, measured from the stops on the quote.
Charges from one catalog
Liftgates, wait time, extra stops and the rest live in one catalog, and a quote adds the ones a job needs.
Pricing profiles that inherit
Your company default prices everything, and a customer’s own profile sets only what is different and inherits the rest.
Fuel that follows the pump
The surcharge follows the weekly U.S. diesel price for your region, set by the size of the job and the type of truck, on a line of its own.
One truck type’s schedule: the week’s diesel price down the side, the size of the job across the top, and the city zone’s own adjustment on top.
When the customer says yes, the quote becomes the work. A one-off run becomes its jobs with every leg in place, and a regular run becomes a standing route agreement that puts the rounds on the board from then on.
The whole business, not just the driving
A delivery app tracks parcels. A courier company has to be run — contracts, customers, sites, drivers, vehicles, hours, invoicing and somebody to answer the phone at 6:30.
Drivers and the office
Employees with crews, roles and home timezones. A driver signs in with an email, scans the bag or the van they took, and their day is there. The office sees the board. Both are the same platform and the same record.
Customers, and who actually pays
The bank is the customer; the fourteen Amish businesses are the sites. Those are different things, and keeping them different is what lets an account be re-papered next year without rewriting last year’s history.
Sites with real geography
Every stop is a site with access notes, a contact and coordinates — so a new driver gets the gate code and the “ask for Naomi” without calling anybody, and the zone resolves from postal geography on its own.
The standing contract
“Tuesday and Friday, these fourteen stops, forever” is a recurring commitment — the same object a quarterly rooftop PM uses. Two hundred stops twice a week generates around twenty thousand obligations a year from one schedule line.
Planning the day
Released work becomes a route: one plan per driver, stops in driving order, per-leg drive times, and the whole run into the phone’s map app in one tap. Plan it overnight, or press the button.
Cars, box trucks and bags
All warehouses, differing by flags rather than by kind. Nobody is bound to a vehicle — a driver takes whichever one is running this morning, and if it breaks at ten they take another and the day goes on.
Two hundred stops, twice a week, as one commitment — and the work it owes, generated ahead.
And the questions an owner would otherwise call a dispatcher for
Who has not started yet. What is running late and for whom. Move everything Marcus has left to Dani. Build tomorrow’s routes. Which contract is costing us money.
Every one of those is something an agent can do, because everything a person can do in ServiceProof an agent can do too, under that person’s own permissions — so the answer does not depend on a report somebody built last year for a question you are not asking today.
That is how a courier company grows faster than its overhead. Each year agents can take on more of the office’s routine work, always through your procedures and under your permissions, so the people you have can look after more drivers, more rounds and more accounts without the cost of running the company climbing with every new contract.
Today’s collection routes, across the drivers running them.