DP World·Global Logistics·Platform Design

One platform for global trade

Unifying operations across ports through one configurable Cargoes Community System.

0
servicesconsolidated into one platform
0
ports10+ countries, 5 regions
0
adoption within 30 daysShipping Lines in UK, Import Manifest
0
faster onboardingcompany registration, contracts, billing
RoleLead UX Designer → Design Manager
Team6 designers
Duration2019–2024
Scope8 product verticals
The problem

Global trade, running locally.

Moving a single shipment through a port takes a chain of companies. The shipping line, shipping line agents, customs brokers, hauliers, truck operators and others each have to file, check or approve before a container can move.

DP World ran that chain in every major trading region, but not as one unified product. Each port had its own portal, so the same job behaved differently depending on where it was done.

Customs rules and tax identifiers differ by country. The legacy systems differed more than the law required: different approach, different flows and different terminology but the same functionality.

Southampton
UK
London Gateway
UK
Jebel Ali
UAE
Nhava Sheva
India
Constanta
Romania
Limassol
Cyprus
Luanda
Angola
Jeddah
Saudi Arabia
Vancouver
Canada
Laem Chabang
Thailand
San Antonio
Chile
Hull
UK
Every port, its own system
Design Solution

Three decisions that made one global platform possible.

Strategy 01

One platform, configured locally

Keep the experience consistent while adapting rules and requirements by country.

Strategy 02

Build the system before scaling

Create shared patterns and reuse them across 50+ services.

Strategy 03

Validate before expanding

Test each release with real operators, then carry proven patterns into the next.

Container vessel approaching a DP World terminal
cargoes.com
Cargoes Community Create Account screen, with the industry step and a DP World terminal alongside
Where every customer starts: one account, whichever port they trade through.
Below the surface
01 · Research

Understanding what already existed.

Three platforms, examined before anything was drawn.

Before designing, we audited Compass in the UK, Mawani in the UAE, and Bharat Trade in India, comparing their capabilities and how users completed the same tasks.

Workshops with company administrators, port operators, product teams, and employees awaiting approval revealed why the platforms differed. Together, these findings shaped one set of to-be flows that reduced repetition while preserving genuine regional constraints.

CapabilityCompassMawaniBharat Trade
Register vessel≠✓≠
Service schedule✕✓≠
Berthing advice✕✓✕
Holds and releases≠≠✓
Present Works differently Absent

The same capability rarely behaved the same way twice, which is what made a single master design necessary.

Where the legacy platforms broke down.

Findings from the three platform audits were grouped into seven categories. The scores show the relative severity of issues across the platforms. Navigation and data entry contained the highest concentration of severe problems, which is why guided flows and inline validation became early priorities.

Navigation, IA and interaction88
Forms, function and data input82
General usability74
Page layout and design62
Labelling and content55
Visual and branding44
Other observations36
SevereModerateMinor Relative issue severity in Compass
Heuristic evaluation of the legacy Register Visit screen with annotated findings
Heuristic evaluation · Register Visit, annotated against layout, navigation and data entry
Heuristic evaluation of the legacy Visit Details screen with annotated findings
Heuristic evaluation · Visit Details, mandatory fields and stage visibility

Registering a single vessel required three separate services.

First the vessel, then its service schedule, the list of ports that vessel will call at, and finally each individual port visit. Every step asked users to re-enter information the system already had.

Registering a vessel visitLegacy · 3 services
Service 1
Register Vessel
Vessel name, call sign, IMO, flag
Service 2
Service Schedule
The ports this vessel will call at
Service 3
Register Visit
This port call, from one port to the next
Three separate starts, three separate ends, no sequence shown.
As-is · counted on each platform
As-is journey for Compass: Register Visit counted by screens and clicks
Compass · one screen, no confirmation before it commits
As-is journey for Mawani: Register Vessel, Service Schedule and Berthing Advice counted by screens and clicks
Mawani · the same task split across three services
To-be · one guided flow
To-be Vessel Visit flow across MS Admin, Shipping Line and Terminal Operator, with a decision on whether the vessel is already registered
One Vessel Visit flow · registered vessels are selected, not re-entered, and service schedule and ICS details validate inside the same journey

Screens and clicks counted for the same task on each platform. The count is what settled the argument.

02 · Solutions
Strategy 01

Design once, configure per country.

Customs documents, tax identifiers, free zone declarations and privacy rules differ by country but the way a port works does not. Flow, hierarchy and error prevention stay identical everywhere, while terminology, document requirements and rules configure per jurisdiction.

Cost
Months aligning every region on one base user journey
Return
A new country became configuration, not a redesign
Universal · never changes
DetailsRoleProductsProvidersIdentifiersDocumentsReview
Local · configures per country
Strategy 02

Build the shared foundation first.

1
Styles
Colour at AAA contrast, type scale, iconography, spacing
2
Components
Buttons, inputs with error states, dropdowns, tables, toasts
3
Patterns
Search, data table, navigation, location and company switching
4
Layouts
Full page templates every service inherits
Each layer built on the one below it

Cargoes Core established one design language, shared components, reusable patterns, and full-page templates on a Material foundation. Building these layers first meant every new service inherited a consistent structure instead of solving the interface again.




Cost
Weeks of foundations with nothing to demo
Return
Fast, consistent UI on every service built after it
Strategy 03

Ship in phases, carry everything forward.

Voyage & Manifest was divided into three releases: Vessel Visit, Import, and Export. Each phase went live before the next began, so real operators could validate the workflow and proven navigation, status, validation, and data-entry patterns could carry forward. By Export, much of the interaction model had already been tested in production.






Cost
Slower path to full coverage
Return
Each release validated the next before it was built
Phase 1Vessel Visit
The ship’s call at the port, recorded once and reused everywhere after.
Vessel Visit
patterns carried forward
Phase 2Import
Everything coming off the ship, broken down to each owner’s share.
Vessel VisitImport
patterns carried forward
Phase 3Export
Everything loaded back out, against the same cut-offs and statuses.
Vessel VisitImportExport
Designed in this phase Inherited and reused

By Export, most of the release was parts that had already been proven in production.

03 · Deep dive A · Voyage & Manifest

Tracking a vessel, and everything inside it.

Voyage & Manifest tracks vessels and their contents worldwide. It gives shipping lines, importers, exporters and customs the controls that matter: change a status, apply a hold, resolve it, and release a container for delivery.

Vessel Visit

A Vessel Visit is the record of a ship calling at a port. The redesign added live tracking of the vessel and the route it is expected to follow, so everyone waiting on it can see where it is.

Visit Search with the vessel plotted on a map, showing Southampton to Vancouver with ETA and ETD
Live tracking · vessel position, route, ETA and ETD, without phoning the port
Import Visit
Everything arriving at the port
Export Visit
Everything leaving on the same call
Stacked shipping containers in a terminal yard
One box on this stack can carry consignments belonging to five different companies.

Inside the manifest

A manifest breaks down until every owner's share of every box can be tracked on its own.

Vessel
The ship at berth, carrying everything
Unit
The container
Haz Reefer Empty OOG
Cargo
Partial shipment for the different goods inside the container
Consignment
Cargo split by Bill of Lading, one share per owner
Import Manifest Hierarchy dialog showing UVI, Unit, Cargo UCN and number of consignments
The hierarchy, on demand · any record can show where it sits, from voyage down to consignment

Live tracking, end to end

Each level carries its own state, and the levels have to agree. Connecting all of it together was the point. Tracking is only correct when the vessel, the unit and the cargo tell the same story.

01Vesselwhere the ship is
Registered
Arrived
Departed
02Unitwhere the container is
Registered
Arrived
Landed
Discharged
Gone
03Cargothe goods, and what can be done to them
Status
Cleared Not cleared
Actions
Apply hold Release hold

Preventing errors before they blocked cargo

Status visibility was only useful if the underlying records remained consistent.

Quantities entered at the Unit, Cargo, and Consignment levels had to reconcile before a manifest could be released. A generic error message would have forced users to search through several levels of data to find the problem.

We designed validation to identify
  • Which level contained the mismatch
  • The expected and entered quantities
  • The specific record that required correction

Release of the manifest remained blocked until the discrepancy was resolved. This moved error detection earlier in the workflow, before the manifest reached customs or delayed cargo release.

01Mismatch detected
Unit18 packages
Cargo12
Cargo6
Declared total1204.00
Cargo packages differs from unit packages
The total at one hierarchy level does not reconcile.
02Source identified
Unit18 packages
Cargo12
Cargo6expected 18
Off by−6
The record requiring correction is named, not just the error
The system highlights the affected Cargo or Consignment record.
03Corrected and ready
Unit18 packages
Cargo12
Cargo6
Reconciled18 / 18
Ready to release
Totals reconcile and release becomes available.
Cargo Details table showing the error: cargo packages differs from unit packages
The error in the product · the totals row carries the mismatch, and the affected rows keep their own cargo and process status

Validation connected errors to the exact record that caused them, rather than leaving operators to search through the manifest.

30%
Revenue recoveredOf the revenue lost to unbilled customs and storage fees, by digitizing paper-based voyage and manifest workflows at London Gateway and Southampton (4M+ TEU/year combined).
Manage Import Voyage with the unit list, cargo type indicators and unit actions
Import manifest · unit list with cargo-type flags, holds, swap and removal in one menu
Manage Export Voyage with cut-offs, the unit list and export actions
Export manifest · the same chassis, plus cut-offs, load and POD update
04 · Deep dive B · Company Registration

The first thing every customer did, and the worst thing they experienced.

Three roles sit in one loop: an admin registering the company, a terminal operator approving it, and an employee who cannot work until both are done.

Before
Find the form through a search engine
Work out what it is asking for
Collect, scan, email, upload
Submit
Wait. No status, no visibility
Rejected, reason unknown
Back to the start. Nothing was saved
Meanwhile the operator checks duplicates by hand, and the employee cannot work
After
Stage 1 · Sign upthe person
Business typeIndustryPersonalAccountPreferencesVerify
Stage 2 · Register companythe business
DetailsRoleProductsProvidersIdentifiersDocumentsPlansReview
Save as draft on every step
Stage 3 · Reviewthe approval
Operator works from a real review queue
Approve, or reject with a reason
Status visible to everyone, notified either way
Rejection resumes from the saved draft, not from zero
25%
Faster onboardingAcross company registration, contracts, and billing.
Workshop wall mapping the register and approve journey across admin, operator and employee roles
Mapped with the people doing the job · register and approve, role by role, with the worst moments voted on
Create New Company, General Information step
Create New Company · staged left rail, country-driven fields, save as draft
Create New Company, Roles and Service Provider step
Roles and service providers · selected once, then carried through the application
05 · Deep dive C · Cargoes Core

One chassis for 50+ services.

Three navigation levels give every service the same shape, whichever module you are in.

Cargoes Core overview: global bar, module rail, multi select search, location switcher and mobile view
Learn one service and you have learned them all. The global bar, the module rail, search, the location switcher and the mobile build are the same parts, arranged the same way, in every service.
View Cargoes Core on ZeroHeight ↗

Audit

Multiple companies and roles work the same records, often on the same day. Every change needs a trail, so the audit view records who changed what and when, with the old value beside the new one. A disputed release can be traced rather than argued about.

Audit page showing who updated a record, when, and every old value beside its new value
Audit · every entry names the user, the timestamp and each field that moved

Editable table

These are data heavy screens. Tables and forms have to carry every field an operator needs while staying readable, so density, alignment and inline editing were solved once as a pattern rather than per screen. Row selection, status and pagination came with it.

Manage page layout: accordion sections of labelled fields above a data table with filters, statuses and pagination
Editable table · dense, but readable. Accordions for fields, a filterable table for records
The emergency pit stop

2020. Britain left the EU.

Overnight, freight crossing a UK border needed customs formalities that had not existed the week before. Ports had weeks to comply, not quarters.

BEEMS, Border Entry and Exit Movement Services, could not wait for Cargoes Core to be finished. It shipped on a design system that was still under construction.

What it taught

The deadline turned an unfinished system into a live test. Patterns that survived BEEMS had been proven under the hardest conditions the platform would ever face, and the ones that did not survive were corrected before fifty other services inherited them. Once Core was complete, I pushed to migrate the module onto it properly rather than leave it as a permanent exception.

06 · Scaling

Then the system got tested, twice.

Invoice & Contracts reused Cargoes Core layouts and Voyage patterns, keeping the design effort focused on commercial logic. Reports & Dashboards reused the same structure for cross-module data, while new charting patterns were added back into design keeping the system reusable and evolving.

Cargoes Corelayouts & patterns
Invoice & Contractscommercial logic
Reports & Dashboardsdata visualisation
Invoice & Contracts
Tariff Creation with tariff type, billing rule, event and a fixed slab table
Tariff Creation · billing rules, events and slabs on the standard form and table patterns
Invoice Creation with billing party, billing to party and a list of tariffs with rate, quantity and totals
Invoice Creation · billing parties, tariff lines and totals, assembled from existing layouts
Reports & Dashboards
Report Dashboard with vessel and container counts, import and export status donuts, a transaction line chart and a container throughput bar chart
Report Dashboard · what each role had actually been doing, across every module
Create Report screen with report types grouped by rail, vessel and import manifest
Create Report · report types grouped by the module they belong to
07 · Impact

What the platform delivered.

Product scale
50+services8verticals14ports10+countries
Customer outcomes
90%adoption within 30 days25%faster onboarding

Adoption among Shipping Lines in UK using Import Manifest; onboarding across company registration, contracts, and billing.

Organizational outcome

New services reused established patterns, and new markets became configuration rather than redesign.

Invoice & Contracts reused Cargoes Core layouts, while Reports & Dashboards extended the same system with reusable data-visualisation patterns.

08 · Recognition
DP World Certificate of Appreciation presented to Surbhi Lahoti for contribution to the User Experience Design squad on the Cargoes Community product
Certificate of Appreciation
COO, DP World · Sep 2021
Quarterly RISE Awards Q1 FY22 Design Maestro awarded to Surbhi Lahoti, Lead Experience Design, for the Compass Logistics Platform
RISE “Design Maestro”
Q1 FY’22 · Compass Logistics Platform

I could not have shipped this module without her.

Product Manager · Voyage & Manifest
09 · Reflections

Four things this platform proved.

01

Foundations have to exist before the pressure arrives.

BEEMS proved both halves. Shipping without the system was expensive, and the system only absorbed it because it was already underway.

02

Alignment built together holds. Alignment presented gets reopened.

Journeys co-created with the people doing the job survived review. Journeys shown for approval came back.

03

One design travels only when the universal is separated from the local.

The same flow in every port, with a different rulebook configured underneath it.

04

Evidence closes arguments that opinion cannot.

Click counts and adoption data ended debates. The wins that were not measured are the ones that cannot be proven now.

Next project Designing AI for Experts