Building CargoPacifico: Trade Intelligence from Public Customs Data

TL;DR: CargoPacifico is a B2B trade intelligence platform that aggregates public customs data from 14+ countries into a single shipment-level search engine: 47.2M shipments, 2.1M companies, and 5,312 HS codes, searchable by company, product, or HS code. It is built with Next.js, React, Supabase, Python, DuckDB, Splink, and Stripe.

The problem

Importers, exporters, freight forwarders, customs brokers, sourcing teams, and trade consultants all depend on the same question: who is shipping what, from where, and to whom. The raw answer exists in public customs records, but it is scattered across national sources with heterogeneous formats, entity names, and update cycles.

What CargoPacifico does

CargoPacifico aggregates public customs data from more than 14 countries into a unified, shipment-level search engine. The public site indexes 47.2 million shipments and 2.1 million companies across 5,312 HS codes, searchable by company, product, or HS code.

The hardest technical problem is entity resolution: the same exporter appears under different spellings, suffixes, and identifiers across sources. CargoPacifico resolves entities across heterogeneous sources so that a company profile consolidates its real activity.

The stack

Next.js + React for the product and public site

Supabase for the application backend

Python + DuckDB for the data pipelines

Splink for probabilistic entity resolution

Stripe for billing, with Free, Pro, Business, and Enterprise tiers

Where it fits

CargoPacifico is one of several production platforms I run — alongside EunacomIA, TrazaGrow, and VotoPublico — that share the same thesis: public data becomes valuable when it is cleaned, linked, and made searchable.

You can try the live product at cargopacifico.vercel.app.