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.

All trades · Plumbing · Commercial electrical

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
The answer turned out to be neither. A courier operation is a trades business with a shorter clock — and once you accept that, everything a good field service platform already does becomes exactly what a courier needed all along.

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.

  1. Your client books it

    They order a pickup and its drop-offs on their own website, without picking up the phone.

  2. It lands on your board

    It arrives as one job in the Unassigned column, with the pickup and each drop-off as its legs.

  3. 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.

  4. 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.

Every order that arrives this way is a phone call nobody had to answer and a job nobody had to key in, which lets the bookings grow without the office growing with them.

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.

A courier quote's run: a cargo van on a one-off job on 10/20/2026, and three legs in order - a pickup at a pharmacy's downtown store, then drop-offs at its Lititz and Ephrata stores - each with its own window, handling minutes and piece count, and the measured drive into each drop-off, 25.8 minutes and 8.62 miles, then 18.8 minutes and 8.09 miles. A liftgate charge from the catalog sits below.

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 commitmentThe 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 recurring obligations screen showing bank bag pickup stops at Bird in Hand alongside other commitments, each with the days of room left before it breaches.

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 changesWhat 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.
The routes screen for 30 September 2026: seven plans, one per driver, each in the East County zone on the courier line of business, with its stops counted, none done yet, and every plan marked Planned.

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.
Selecting which truck or warehouse the technician is working from, at the start of the day.

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.

  1. 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.

  2. Then the bag it rides in

    Next the driver scans your collection bag, so the record says which bag every deposit went into.

  3. 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.

  4. 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 warehouses and trucks list: six deposit bags, BAG-0001 to BAG-0006, listed as bags above box trucks and cars listed as vehicles, every one of them marked as moving and holding stock.

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 thisThe job quietly becomes
Answers “on your way?”Traveling
Answers “at the door?”Arrived
Says who handed the bag overWorking
Photographs the seal, scans the barcode—
Finishes the checklistComplete

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 on a driver's phone: six stops in driving order, each with its address and directions, and the drive time between them.

Today’s run, in the order it will be driven.

A courier day on the dispatch board: seven drivers each with their own lane, and the unassigned and parts queues as columns beside them.

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.

Meet Wingman →

The Wingman client, idle and ready, saying: Say hey wingman any time to start talking, hands-free, or hold or tap the button; say a command such as my jobs, todo or menu, or answer the step it reads to you; say over to send what you have said right away, and faster or slower to tune the voice. A box for typing instead sits above a large Hold or tap to talk button.

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.

Page one of a proof-of-the-day PDF for Bird-in-Hand Bank, Tuesday 22 September 2026: eight stops, eight finished, eight with proof, thirty-four answers, then each stop with its address, arrival and finish times, the work code, and every captured answer including the bag seal number with the coordinate it was recorded at.

A real one. Eight stops for Bird-in-Hand Bank, produced from the record in about a second.

8stops
8finished
8with proof
0without proof
34answers captured

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.

This is the enterprise capability. A parcel giant proves delivery at scale and charges for it. There is no reason a twenty-car courier cannot hand a bank the same thing on a Tuesday afternoon — and that is the whole argument for this product in this vertical.

Proof of service, every way it is produced →

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.

  1. The raw bytes cross the wire

    This is the cost, and it buys the whole thing.

  2. The server reads the metadata

    From the bytes the device actually produced. Not from a field the app filled in.

  3. The server hashes the original

    This is the step everybody skips, and it is the one that actually works.

  4. Then it shrinks it and stores it

    And the original is discarded or kept — that is the one knob, and it is per workflow.

The hash is kept forever, even when the original is not Thirty-two bytes that prove the stored image derives from what the device produced. That is what lets a bank-deposit courier and a residential plumber share one pipeline instead of two: the plumber gets cheap storage and still cannot be accused of doctoring anything.

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 →

The agreements screen describing a commitment as a promise to show up at a place on a cadence, with courier route and rooftop quarterly plans side by side.

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.

A priced courier quote with three lines: a base for a driver on a cargo van, worked out from the measured drive plus the handling time over three stops and rounded up to a 15-minute increment; a liftgate charge from the catalog; and a fuel surcharge for the week of 10/12, using that week's Central Atlantic diesel price, the band it fell in and a local adjustment.

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.

A cargo van fuel surcharge schedule that reads the Central Atlantic diesel price and charges a percent of the base. Its band matrix has two fuel price bands down the side and three job-size bands across the top, with a percentage in each cell, and below it a local adjustment of plus 1.5 for the Lancaster city zone, for city congestion.

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.

Recurring commitments →

🛣

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.

The route plan →

🚚

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.

A courier route as a recurring commitment: two hundred covered stops, a twice-weekly cadence rule, and the obligations it has generated.

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.

Everything a person can do, an agent can do →

The dispatch board showing today's bank collection routes split across two drivers, with the unassigned queue beside them.

Today’s collection routes, across the drivers running them.