Own product · Multi-tenant platform, iPad app and API for haulage operators

Lowboy

Bills of lading, billing and reporting for heavy haulage — on the web and on a tablet in the cab, built for one operator and for the next one.

Heavy haul is billed by the clock, and the clock is spread across pickup, loading, transit, unloading and sometimes three separate days. Lowboy holds a load as one record from the call that books it to the month it is invoiced: who drove it, what it earned, who signed for it and who approved the price. It is the successor to a system that has run a haulier's operation every working day since 2020, carrying the same workflow forward — that part was right — on a platform designed from the first line for more than one operator.

  • Laravel 12
  • MySQL
  • SwiftUI
  • iPadOS
  • REST API
  • bcmath
  • Multi-tenancy
bol.lcsof.com
OPEN Dispatch enters it PENDING Driver runs it TO BE BILLED Owner prices it CLOSED Accounting invoices it Each hand-off belongs to one person, and no other can make it. A load cannot reach billing without a price on it.

What it does

01

Pricing proved against a decade of real loads

A migration is only as good as the evidence that it agrees with what came before. Every pricing rule was run against the whole history — tens of thousands of loads, each with the figure the business had already invoiced — and had to match every one before it was trusted. Rate, hours, fuel surcharge, permits, escorts and the grand total, on both the customer and the carrier side.

02

One hand-off per person

Dispatch takes the call and assigns a driver. The driver runs the load and gets it signed. An owner prices it and approves it. Accounting invoices it and closes it. Four steps, four people, and each transition belongs to exactly one of them — so a load cannot skip the step that puts a price on it.

03

Money that only the right people see

Dispatch and drivers get the route, the equipment, the times, the signature and the photographs, and no figure anywhere — not on the load, not in a list column, not on a printed copy. The rule is enforced where it counts rather than by hiding a field: the figures are removed from the request itself for anyone not entitled to set them.

04

Reporting that answers the month you asked for

Cash, payroll, driver, entry and approval, each over any date range and each downloadable as a CSV. Money is summed in decimal arithmetic rather than floating point, because these figures are added across thousands of rows and then compared against an invoice.

05

Attachments held privately

Permits and photographs from the roadside go to private storage and are served through a route that checks who is asking, rather than sitting behind a URL that is the only thing protecting them. A driver requesting another driver's file is told it does not exist, rather than that they may not have it.

06

Separate operators, one system, proved

Every record carries its company and every query is scoped to it by default rather than by remembering. The scope fails closed — with no company in context it returns nothing rather than everything — and there is a test for each model that one operator cannot reach another's data by id, by URL, or through a report.

07

A new operator is a form, not a deployment

The company name, the wording over each rate column, the trailer list, the BOL numbering and the logo printed at the top of the document are all settings. A platform that needs a developer to take on a customer is not a platform.

08

An iPad app, on the same rules

The driver's half of the job done at the kerbside: the times, the photographs straight from the camera, and the customer's signature taken on the glass — then the office half too, because an owner would rather price a load on a tablet than find a laptop. It is not a second implementation of the workflow. The tablet asks the server what this person may do and what may follow this state, and draws that; the permission model exists once, so a rule changed on the server is a rule changed on every device without waiting on an App Store review.

09

An API the app itself is built on

Every operation the web application performs, available to an operator's other systems — create a load from a dispatch tool, push a status back to a customer portal, pull the month into an accounts package. The tablet app is the first thing built on it, which is the honest way to find out whether an API is any good. It is a second door to the same records, so the rules are not written twice: who may see which loads, who may set a price and what may follow what live in one place that both doors ask.

10

A signed BOL a customer can open

A link to the finished document as a PDF, or to any single photograph, that opens without an account and stops working when it is told to. It carries no rates — the copy that leaves the building never says what the carrier was paid — and every link made, extended or revoked is written into the load's history with the name of whoever did it, because "who sent the customer this" is a question somebody eventually asks.

Got something like this?

Describe the process and you will get a straight answer about what it would take.

Start a project