| How a job gets priced | From a spreadsheet somebody maintains, by whoever knows where it is. A day and a half is normal. | From rate tables in the platform, once they have been loaded and kept current. Capability is not the constraint; the loading is. | From your own cards, by lane, mode and carrier, with validity dates that make two overlapping cards on a lane unrepresentable. Chargeable weight is calculated per mode — five modes, five different arithmetics. |
|---|
| Where the job actually lives | An inbox, a folder, a WhatsApp thread and someone’s memory. No two of them agree. | In the platform, if every step is entered into it. The gap between the platform and the mailbox is where the work leaks. | One record through six states — enquiry, quote, award, execution, documents, invoice — and it is never re-keyed into anything else. An enquiry emailed to a branch mailbox is read into a proposal a coordinator accepts or rejects. |
|---|
| Arabic | Whatever the person typing writes. Documents are usually English. | Available as a localisation, added to a product designed in English. You can tell, and so can your customer. | 2,727 interface strings in both languages, kept in sync, with right-to-left in the layout rather than applied to it. Documents generate bilingual from the job. |
|---|
| Where your data sits | On laptops, in an email provider, and in whatever else grew up around it. | In the vendor’s multi-tenant estate, in whichever regions the vendor operates. | One deployment per customer: your own database, in your own instance, in a region agreed with you. There is no tenant identifier in the schema, because there is no second tenant in the database. |
|---|
| What separation rests on | Who has been given the file. | Application code enforcing a customer identifier on every query. | Row-level security in the database. Ask for another branch’s shipment and it comes back not found, because the row is not in the answer at all — 197 policies across 88 tables, counted against a live database by the test suite rather than estimated. |
|---|
| What a change leaves behind | A newer version of the file. | Whatever the application chose to log. | An audit row written by a database trigger, carrying who, when, the whole row before and after, and the source IP — so a change made around the application is recorded too. Nothing is deleted; the application’s account holds no delete permission on any table. |
|---|
| Getting running | Already running. That is the point of it. | An implementation project, sized by how many entities and how much history you bring. | Fifteen working days for a pilot on your own data, from the day your data arrives rather than from signature. Fixed fee. Nothing built in it is thrown away. |
|---|
| Breadth | As broad as your spreadsheets. As deep as the person who wrote them. | Broad. Warehouse, transport networks, purchase orders, customs filing in the markets the vendor has built for. | Narrow and complete. No warehouse module, no purchase orders, no native apps, no Kuwait customs filing — each excluded by decision and listed on the home page rather than discovered in week three. |
|---|
| Whose brand your customer sees | Yours, on documents you build by hand. | Depends on the product and the tier. | Yours. No colour, logo or company name is written into the product anywhere — the operator is a setting, and there is no supplier badge on anything your customer ever sees. |
|---|
| If you leave | You keep the files. You lose nothing because nothing was ever consolidated. | An export, on the vendor’s terms and in the vendor’s formats. | An export in an open format, any day, at no charge, of a database that was never shared with anyone else’s. One honest qualification: a single self-service action producing that export is specified and not yet built — today it is assembled for you. Source escrow is available on request. |
|---|