CargoSharks

Freight forwarding software for the whole of one job, in one record

An enquiry arrives, is priced from your own contracts, quoted, awarded, executed, documented and invoiced, and none of it is typed into a second system. Built in Arabic and English at the same time, on a database that belongs to you.

The problem is not your people

Your rates are in spreadsheets, so a quotation takes a day and a half. Your enquiries are in four mailboxes, so nobody owns them and nobody is timed. Customers find their container by ringing someone who has to go and find out. And the margin on a job is a number you reconstruct at month-end instead of one you knew when you quoted.

Each of those is a system-of-record problem. Training does not fix them and a better spreadsheet does not either. They persist because the job lives in an inbox, a folder, a WhatsApp thread and somebody’s memory, and no two of those agree. It costs you the jobs priced too slowly, and the ones priced too cheaply.

One record from enquiry to paid invoice

Each state hands the next everything it needs, so nothing is retyped differently. Accepting a quotation opens the job with buy and sell rates attached, so margin is a live figure, and a revision supersedes the quotation before it instead of overwriting what the customer accepted.

  1. 01

    Enquiry

    One queue across every branch, one owner, one response clock.

  2. 02

    Quote

    Priced from your own card where one covers the lane; sent to agents where it does not.

  3. 03

    Award

    Acceptance converts the quote. Buy, sell and margin lock to the record.

  4. 04

    Execution

    Milestones, customs stage, containers, free-time clocks, exceptions.

  5. 05

    Documents

    Typed, versioned and attached; released to the customer where permitted.

  6. 06

    Invoice

    Raised from the job’s own cost ledger, in the right entity, currency and language.

Six seeded milestone templates, and how many steps each has

Sea FCL · import: Booking confirmed, Cargo received, Vessel departed, Vessel arrived, Discharged, Customs cleared, Gate out, Delivered, Empty returned

Sea FCL · export: Booking confirmed, Empty container collected, Container stuffed, Gate in, Customs cleared, Loaded, Vessel departed, Vessel arrived, Delivered

Sea LCL · import: Booking confirmed, Cargo received, Vessel departed, Vessel arrived, Discharged, Devanned, Customs cleared, Delivered

Air · import: Booking confirmed, Cargo received, Flight departed, Flight arrived, Customs cleared, Delivered

Air · export: Booking confirmed, Cargo received, Customs cleared, Flight departed, Flight arrived, Delivered

Land · import: Booking confirmed, Loaded, Border crossed, Customs cleared, Delivered

Eight or nine steps by sea, six by air and five by road. One checklist would be too long for the road or too short for the water.

Five modes, each calculated its own way

Freight is billed on the greater of weight and volume, converted by a divisor that differs per mode, rounded up to that mode’s increment and floored at its minimum. Using one mode’s arithmetic for another is where a rate stops matching the invoice.

Sea FCLper container
Volume never enters it. Rated by container type and count, with demurrage, detention and storage clocks per container against the carrier’s free days.
Sea LCLrevenue ton
The greater of cubic metres and metric tonnes: a 1,000 cm³/kg divisor, one cbm to one tonne, with a 1,000 kg minimum.
Airchargeable kg
The IATA 6,000 cm³/kg divisor, 166.67 kg to the cubic metre. Rounded up to the next half kilo, floored at 45 kg; weight breaks as your carrier states them.
Landchargeable kg
A 3,000 cm³/kg divisor, rounded up to the whole kilo, no minimum.
Courierchargeable kg
A 5,000 cm³/kg divisor, rounded up to the next half kilo, floored at half a kilo.

One pallet, 120 × 100 × 100 cm and 180 kg: the weight billed in four modes

Divisors in cm³/kg

  • Chargeable weight
  • On the scale: 180 kg
No mode bills what the scale reads. Sea FCL is priced per container, with no volumetric step. Each divisor is a setting an administrator edits.

What each part of it does

Commercial, operations and finance. The screens are captures of the running build, the same ones you can open yourself in the demo.

The enquiry queue: every enquiry with an owner, a status and a response deadline

Commercial: from enquiry to quotation in one place

Every enquiry, wherever it came from, with an owner and a clock, and a price from your own contracts.

The queue
Web form, email, WhatsApp and phone enquiries in one list across every branch, each with an owner, a status and a response deadline, so response time is measured.
The inbox
An email to a branch mailbox is read into a proposal (parties, lane, cargo, request) that a coordinator accepts or rejects. Nothing becomes an enquiry without a person, and the proposal is kept beside the decision.
Pricing and margin
Buy and sell rate cards by lane, mode and carrier, whose validity dates make two overlapping cards on a lane impossible to save. Buy, sell and margin sit side by side on every option before it goes out.
The lanes you quote blind
The rate-card screen names the lanes with no live buying rate and the cards expiring within thirty days.
The operations board: live shipments ordered by exception, oldest first

Operations: the board shows what is wrong before the customer does

Live shipments ordered by exception, oldest first, because the one nobody has looked at is the one the process missed.

The job file
Milestones by mode and direction, kept as planned, revised and actual, because the difference between them is the conversation.
Customs
Declarations ordered by the window that closes first, with status, duty, broker and deadline, and a duty estimate from the tariff table before filing. Holds and inspections sit on the board.
Free time
Demurrage, detention and storage clocks per container against the carrier’s free days. When free time ends, the clock writes its own charge line against the right counterparty at the right per-diem rate.
Consolidation
A master with its houses, the manifest generated from them, and the master’s costs apportioned so each house’s margin is real.
Ask it
An assistant that answers over your own data (whose free time ends this week, which invoices are overdue, where a supplier billed more than the job accrued) and sees only what the person asking may see.
Receivables grouped by how late they are, largest exposure first

Finance and documents: what you are owed, how late, and who to ring

Job costing, invoicing and receivables across entities and currencies, and every document the job issues, versioned.

Currency
Decimal throughout and rounded per currency at the line, so the Kuwaiti dinar keeps its three places. Each charge line stores its own exchange rate and when it was taken.
Separated duties
Draft, approved, issued, part-paid, paid, credited. Only Finance may issue, void or credit an invoice.
Supplier bills
A scan or an emailed bill is read into lines and matched against what the job accrued; the variance shows before anyone approves it.
E-invoicing
VAT category, rate and exemption code on every line. Saudi invoices clear with ZATCA Phase 2 as they are issued; UAE invoices go to the customer’s accredited service provider (UAE e-invoicing).
Documents
House bill of lading or air waybill, delivery order, packing list, customs pack, consolidation manifest. Bilingual, numbered from the issuing branch’s series; customers see released documents, never drafts.

Open these screens yourself, no sign-up

The clock nobody starts, and the decimal nobody keeps

Everything in this category quotes, books and invoices. These two are what fail between a demo and a Kuwaiti operation: the free-time clock needs a scheduled job rather than a screen to look at, and the dinar needs a product designed around three decimal places.

3 of 11 seeded currencies carry three decimals

Three decimals
KWDBHDOMR
Two decimals
USDEURGBPAEDQARSARINRCNY

What this system stores

KWD12.345

All three decimals, from the database to the invoice.

What a system built for dollars stores

KWD12.35–

The third decimal is rounded away.

The Kuwaiti and Bahraini dinar and the Omani rial carry three decimals. Rounding them to two loses up to five fils on every line.

One container: five free days, then KWD 28.000 a day

The demo’s own figures

  • Free time (5 days)
  • Accrued (KWD)
The clock starts with the milestone and writes a charge line on the job each day: 16 days × 28.000 = KWD 448.000.

Built in Arabic and English at the same time

2,727 interface strings in both languages, kept in sync, with right-to-left in the layout from the start. Most products in this market were built in English with Arabic added later. You can tell within about four seconds, and so can your customer.

The dashboard in English: four figures, the map, and the assistant, laid out left to right
English, left to right
The same dashboard in Arabic: the same four figures and the same map, laid out right to left
العربية، من اليمين إلى اليسار

Your database, your brand, your data

One deployment per customer: your own database in your own instance, with no shared table and no customer column. Inside it the database separates branches, so another branch’s shipment comes back not found, because the row is never in the answer.

The audit trail writes itself

Eighty database triggers, so a change that goes around the application is still recorded. Editing the audit is revoked from every account, your administrator’s and ours alike.

Nothing is ever deleted

Records are superseded, closed or deactivated. The permission to delete does not exist on the account the application runs as.

The region is yours to pick

Kuwait, the UAE, Saudi Arabia or the EU, chosen by you and written into the contract.

Your brand, and nowhere ours

No colour, logo or company name is written into the product. The operator is a setting, so your customer never sees a supplier badge.

Support cannot look without a grant

Your administrator grants access to named branches against a ticket reference, and it expires on its own. A banner shows while it is open; one click revokes it.

Counted on a live database

88 tables, 197 policies and 80 audit triggers, counted against a running PostgreSQL 18.6 rather than estimated from a design document.

Separation of duties, printed

The cards are about what we cannot do to your data. This is what your own people cannot do to each other’s work, the half an auditor asks about, transcribed from the file the database is seeded from.

How each of these is implemented, and what is still open, is in the privacy policy and the data-processing addendum. Both are drafts pending review by counsel, and both say where the code and a standard clause disagree.

Seven seeded roles, six keys an auditor asks about

RoleIssue an invoiceCredit oneApprove a supplier billSplit a master costBook a jobClose one
Administratorgrantedgrantedgrantedgrantedgrantedgranted
Financegrantedgrantedgrantedgrantednot grantednot granted
Operations Managernot grantednot grantednot grantedgrantedgrantedgranted
Coordinatornot grantednot grantednot grantednot grantedgrantednot granted
Salesnot grantednot grantednot grantednot grantednot grantednot granted
Customs Brokernot grantednot grantednot grantednot grantednot grantednot granted
Read Onlynot grantednot grantednot grantednot grantednot grantednot granted
Three roles hold none of these, and Operations never issues an invoice or approves a bill. Administrator holds every key, even ones added later.

What is deliberately outside it

The section that makes the rest believable. Five things are outside the product by decision, and none of them is coming.

Warehouse management
Inventory, locations, pick and pack. That is a product in its own right, and it does not bolt onto a forwarding platform as a module.
Purchase orders and vendor management
It sits on top of a working job platform. Until the job platform is working, it has nothing to sit on.
Native mobile applications
Proof of delivery already works from a phone browser: signature, photographs, recipient and location. An app doing the same is a second thing to keep in step.
Direct customs filing in Kuwait
Clearance runs through MicroClear, which is not an API a forwarder can buy. We track declarations and estimate duty; we do not file them, and we are not planning to.
Master carrier documents
A master bill is the carrier’s document, issued on the carrier’s stock. House documents are ours, and those we generate.

How that scope compares with other systems is on the comparison pages.

The fastest way to judge this is to open it.

The demo is the real software on a seeded dataset, open with no sign-up, with three sign-ins so you see what your customer and your agent see as well. Nothing you do in it touches anything.