Comparison
CargoSharks and CARGOES Runner
A DP World product, which is the fact that matters most about it and has nothing to do with software. Here is what that buys you, and where a smaller independent system is the better answer.
01 — Who owns the software
The distinguishing fact here is not a feature
DP World operates terminals and also sells software to the forwarders who book through them. Both parties publish that and it is not an accusation — for a forwarder whose volume runs through those terminals, the closeness is the whole reason to choose it. For a forwarder whose volume does not, it is a question worth asking out loud. That is the axis this comparison turns on, and no feature list touches it.
02 — In their words
What they say about themselves
DP World describes CARGOES Runner as an ERP built from the ground up for small and medium-sized freight forwarders, aimed at back-office operations — quotations against your own tariff, quote-to-ship, digital invoicing and margin analytics, with an integrated ocean sailing-schedule search.
Read from www.dpworld.com/smart-trade/freight-forwarding-erp on 2026-08-25. If this has gone out of date, tell us and we will correct it.
02 — The case against us
Pick CARGOES Runner if
This section comes before the next one on purpose. A comparison page that cannot name a reader who should buy the other product is not a comparison.
- Your volume runs through DP World terminals and you want the platform that sits closest to them.
- The backing of a group that size is itself part of what you are buying. That is a legitimate reason to choose a vendor and we would say so on a call.
03 — The case for us
Pick us if
Every point below is a mechanism you can check in the demo or in the source, rather than a promise.
- Arabic and English are the same build, checked for parity on every commit — 2,727 interface strings in both, and every document the system issues exists in each.
- The dinar keeps three decimal places from the database to the printed invoice. Money is decimal end to end and never a floating-point number.
- Separation between branches and entities is a row-level policy in the database, not a filter in the application — 197 of them. A query written wrong returns nothing rather than somebody else’s shipments.
- Nothing is deleted. Every change is stamped with who made it and when, by 80 audit triggers, and a superseded row is marked superseded and stays.
- You can open the whole thing right now, on seeded data, with a sign-in for you, your customer and your agent, without talking to anybody.
| The claim | Figure | How you check it |
|---|---|---|
| Transport modes | 5 | Sea FCL, sea LCL, air, road, rail and courier appear in the mode selector on any enquiry in the demo. |
| Row-level security policies | 197 | select count(*) from pg_policies where schemaname = 'public' — against any deployment, ours or yours. The policies are written by loops over the table registry, so a grep of the migration text counts the loops rather than the policies; pnpm test:db fails the build if any table lacks one. |
| Audit triggers | 80 | select count(*) from pg_trigger where tgname like '%\_audit' and not tgisinternal — attached by a loop rather than by a list, so a table added in a later migration is covered without anybody remembering to add it. |
| Interface strings, English and Arabic | 2,727 | pnpm lint runs check-messages.mjs, which fails the build if a key exists in one catalogue and not the other. |
| Decimal places on every dinar | 3 | Open any invoice in the demo. A system built for dollars and adapted shows two. |
| Minutes to check all of the above | ~10 | No sign-up and no call. That is the claim this whole page rests on. |
On the screen
The screen the argument above is made on

04 — The questions
Ask both of us these, and compare the answers
Our answers are already written, and beside each one is what a good answer sounds like from any vendor — including us. Somebody who takes this list to another vendor’s call and gets a better answer than ours should buy from them, which is what makes it worth publishing.
| The question | Our answer | What a good answer sounds like |
|---|---|---|
| Is the Arabic a translation layer, or is it the same build? | The same build. Right-to-left is in the layout rather than added on top of it, and `pnpm lint` fails if a string exists in one language and not the other. Open the demo, press the language switch, and look at a delivery order. | A good answer names a mechanism — a parity check that fails a build, one catalogue rather than two, right-to-left in the layout. A weak one is “yes, we support Arabic” plus a screenshot. Ask to see a printed delivery order rather than a screen: that is where an added-on language shows first. |
| How many decimal places does an invoice in Kuwaiti dinars carry? | Three, everywhere, because the dinar has three. This is the single fastest way to find out whether a system was built for dollars and adapted. | “Three” should come back instantly and without conditions. Hesitation, or “it is configurable”, usually means money is a floating-point number somewhere and the decimals are a display setting — which is fine until a rounding difference lands on a reconciliation. |
| Whose database is it, and can I have a copy of my data on a Tuesday afternoon without asking? | PostgreSQL, and yes. The separation between customers is enforced by the database itself rather than by our application, which is also what makes the answer to the first half of that question boring. | Listen for a named engine and an export you can trigger yourself. “We can arrange an extract” is a different answer from “here is the button”, and the difference is what leaving costs you in three years. |
| What does it cost when volume doubles? | Ask every vendor this and ask for the answer in writing. Per-shipment and per-transaction pricing is normal in this category and is not a trick — but it is a different shape of bill from a flat one, and the difference shows up in year two rather than at signature. | Any pricing shape is defensible; a refusal to put the shape in writing is not. Ask for the figure at twice and five times today’s volume, in the contract rather than on a call — and ask us the same way. |
| Can I see it working, today, without a call? | Yes — demo.cargosharks.com, no sign-up. We think this question separates vendors more reliably than any feature question, which is why it is last. | The answer is yes or no, and both are legitimate. A demo that needs a discovery call first is a sales process rather than a fault — but it is also a reliable measure of how long a pilot will take to start. |
What you will not find on this page
A tick-and-cross grid. We know our product properly and theirs from the outside, and a grid written by one side is not a comparison — it is an argument with a table around it. Worse, it goes stale silently: every entry starts decaying the day it is published, and the person it misleads is your prospect while the person who looks foolish is you.
Ask us directly at [email protected]. You will get a written answer that cites what each vendor publishes itself, and where we do not know, you will get “we do not know”.