One Choice Logistics SARL, based in Dakar, consolidates less-than-container-load cargo out of Guangzhou and Yiwu and moves it into West Africa by sea and air. They were running it on a legacy vendor system that could not follow the shape of their business.
- Goods received
- Verify
- Load
- Manifest
- Invoice
- Receivable
Consolidation is a different problem
LCL freight is not full-container shipping with smaller numbers. Many customers' goods arrive separately at a warehouse in China, get verified and consolidated into one container, travel as one shipment, and then have to be separated back out into individual consignments, invoices and receivables at the other end.
The pipeline runs from goods received, through verification and loading, to manifest, accounts receivable, invoice and debit note, with stock transfers between warehouses along the way. Air freight runs its own parallel track with manifests and packing lists.
Two languages, two continents
The business operates in French in Senegal and English with suppliers and staff in China. The interface runs in both, and so do the generated documents — a manifest or invoice reads correctly for whichever side receives it.
Names that never match
The same consignee arrives spelled three different ways across three shipments, sometimes transliterated, sometimes abbreviated, often with accents dropped. Matching those to one customer record by exact string comparison fails constantly.
The system uses fuzzy matching with accent-insensitive comparison so that near-misses resolve to the right account and a single customer's shipments stay together instead of fragmenting into near-duplicate records.
Permissions per form, not per module
Seven roles, with permissions granted at the level of individual forms rather than whole modules. A freight forwarder's staff have narrowly different responsibilities — someone who records warehouse intake should not be issuing invoices — and module-level permissions are too coarse to express that.
Documents without a browser
Manifests, invoices and debit notes render server-side to PDF without running a headless browser. That keeps the deployment small and the output deterministic; a document generated today looks exactly like the same document generated next year.
What the system does
- Sea freight pipeline from goods-received through verification, loading, manifest, receivable, invoice and debit note
- Separate air freight track with its own manifests and packing lists
- Bilingual French and English throughout, including generated documents
- Fuzzy customer matching, so inconsistently spelled consignee names still resolve to one account
- Per-form permission matrix across seven roles
- Server-rendered PDF documents, generated without a headless browser
Status
Live, replacing the previous vendor system.
Built with: Next.js · NestJS · PostgreSQL · Prisma · bilingual FR/EN
Have a project like this?
Tell us what you are working on and our team will get back to you within one business day.
Contact Us