PlatformNY / NJ first

Drayage TMS software, built from the move out

A drayage TMS is not a truckload TMS with a container field bolted on. One box needs a pull, a delivery and an empty return; three drivers can touch it; a chassis and a clock ride along the whole way. DrayBase models that first and lets the screens follow. This page is the map of the product — what runs against a live database today and what is still a plan, module by module.

How to read this pageLive means it renders real records from the database right now — and it is read only: you can watch the board, you cannot yet change a load from it. Planned means designed and not written. There is no third category here, and nothing on this page is a screenshot of something that does not exist.

01Running today

What the board already does

None of this is a mockup: it is what the software computes from records in a database. The other half of the truth, since it matters more than the first: the only operation loaded into it today is our own development data. The carrier we are building alongside has not been migrated, and nobody else has either.

Status is derived, never typed
The column crosses the active leg with how far that leg has got — enroute to the terminal, arrived, loaded, enroute to return — and a hold on the box outranks all of it. One function decides it and both the board and the API read that one, so they cannot disagree about what a load is doing. There is no alerting worker yet; when there is, it will call the same function instead of keeping a second copy of the rules. Planned
Holds on the box
Customs and freight holds live on the container, not on the load, and they stop blocking the moment there is a gate out. A stale hold on a box that already left the terminal has no business flashing red on your Tuesday.
Money at risk, per row
Demurrage while the box is still inside the terminal past its last free day; per diem from the day the free time runs out until the empty is back. Never both at once. Counted in the port's calendar days — not the server's, not UTC — and priced from the steamship line's own daily rate, with a per-container override when your contract says otherwise. With neither rate on file it falls back to a default, and we would rather say so than let you read an assumption as your contract.
Tiles that count everything
Need pickup, need delivery, need return, drivers available, dollars exposed, open exceptions. They are computed over the whole operation, not over the page you happen to be looking at — a KPI that agrees with the pagination is a KPI that lies.
Where the date came from
Every last free day is stored and served with the source it came from and the moment it was last refreshed: the API hands the board both. Today the board prints the date, and the column that prints the source beside it is Planned. A date without a source is a rumour, and a rumour is what gets a container billed at the end of the month.
One carrier, enforced below the app
Every operating table runs under Postgres row-level security, and the active company comes from the session, never from the request. A forgotten filter returns nothing — not somebody else's loads. More on that on security.

Read only means read only. The only writes this system accepts today are the two forms on this website and switching between companies you already belong to. Driver assignment from the board is the next thing that lands, and until it does it stays marked Planned everywhere.

02Modules

16 surfaces, and a straight answer on each

Most vendors publish this list with every row implied to be finished. Ours says which 2 of them run today and which 14 do not, because you would find out anyway — on day three of a pilot, with your own containers on the ground.

#ModuleWhat it doesStatus
01Dispatcher BoardOne dense row per load: status derived from the active move, the driver and chassis on that move, the box and its equipment, pickup, delivery, last free day, money at risk and the next appointment window.Live · read only
02ContainersLast free day — with the source it came from and when it was last refreshed — plus per diem, demurrage, customs and freight holds, gate out and empty return. All of it on the record, feeding the status and money columns of the board. The container's own screen is not built.Live · on the board
03Assignment and dispatchAssigning a driver, confirming dispatch and moving a status from the board. The board reads today and writes nothing; these are the first writes.Planned · next
04Operations homeThe whole day on one screen: critical loads, boxes near their last free day, missing appointments, idle drivers, empty returns waiting.Planned
05PlannerTomorrow laid out against driver location, hours of service, appointment windows, TWIC and terminal compatibility, and deadhead.Planned
06Live mapPosition, dwell at the gate, geofence events, terminals and yards, and the playback of a move when a customer disputes a detention hour.Planned
07ChassisPool, daily cost, dwell and vendor reconciliation. The chassis is already a record of its own and the unit on the active move shows on the board; the module around it is not written.Planned
08Street turnsOpen imports matched against open exports by line, size, type, location and date — with the empty return and the second trip it saves.Planned
09Double movesAn empty return and a pickup at the same terminal in one gate, checked against both appointment windows before anyone promises it.Planned
10Problem containersThe exception queue: a code, a severity and the dollars at risk per row. The table is in the schema and its open count is already a tile on the board; the checks that would fill it on their own are not written.Planned
11Customer dashboardWhat a CSR — and later the customer — sees: vessel, appointment, delivery, proof of delivery, exceptions and the timeline behind them.Planned
12Driver appDaily moves, navigation, geofence status updates, POD and BOL capture, an offline queue for the gate where there is no signal, voice status.Planned
13DocumentsPOD, BOL, interchange receipt, scale ticket — stored with a checksum, classified and read. The table and its fields exist; upload, mobile capture and OCR do not.Planned
14TariffsRate rules by customer, lane, equipment and accessorial, with somewhere to test a tariff against real loads before it goes anywhere near an invoice.Planned
15Billing and settlementsCharge review, invoicing with the POD attached, aging, driver pay, deductions and weekly settlements for company drivers and owner-operators.Planned
16The agentsSix agents watching free time, empty returns, dispatch, service, pricing and anomalies. Designed to suggest with the record attached, and to wait for a person.Planned

Order of reading, not a delivery schedule. We are not going to put dates on this table — a carrier who plans a cutover around a roadmap slide ends up running two systems through a peak season.

03The model

Three decisions everything else hangs from

These are already in the database. They are also the ones that are impossible to retrofit: a TMS that got them wrong in year one is still apologising for it in year four.

A load is not a movePull, deliver, return empty — separate legs, each with its own driver, truck, chassis, times and status. Flatten them into one row and the second driver of the day has nowhere to live, which is exactly where detention and driver pay start going wrong.
The container has its own lifeVessel arrival, discharge, availability, holds, last free day and the empty return location all happen whether or not one of your drivers is involved. So the box is a record with its own event history, not a text field on a load.
Money is whole cents, on the port's clockPer diem and demurrage are counted in calendar days in the port's time zone — our production server sits in Dallas and the clock that bills you does not. Never a float, and the daylight-saving edge has a test so it stays that way.

Early access

Bring us a real week of containers

DrayBase has no customers yet and is not going to pretend otherwise — the first operation it is being built alongside runs Newark and Elizabeth, and it has not been migrated either. What we want from you is the awkward part of your week: the box that got billed twice, the chassis nobody could account for, the empty a terminal would not take.

Read next: what it will cost on pricing, what lands in what order on the roadmap, and how carrier data is kept apart on security.