Portfolio / B2B data product
The product isn't the site. It's the data.
ShipperData sells verified contacts for decision-makers in logistics — managers, buyers, importers — to freight brokers who need someone to call tomorrow. We built the whole machine: Python scrapers working public sources, n8n flows that validate and deduplicate, a CRM holding the inventory and marking what has been sold, and a landing page where a package is bought and a file arrives. Every lead is sold exactly once.

01The brief
Hunting contacts by hand is not a business.
The old routine was manual: open directories, copy emails, build a spreadsheet, send it over. Every list cost hours, arrived unverified, and got shared between several brokers who ended up calling the same importer in the same week.
The brief was to turn that routine into a product: capture running on its own, every contact validated before it can be sold, the same lead never sold twice, and buying it as simple as picking a package and paying.
Before: the hand-built list
- 01Manual extraction, directory by directory
- 02Emails and phones never verified
- 03Duplicates across lists
- 04The same lead sold to several brokers
- 05Delivery by email, when it happened
- 06No refresh, no recurring revenue
Our role
Architecture and build of the whole system: Python scrapers, n8n orchestration, the data model and tagging inside the CRM, payment integration with automated delivery, and the landing page where it is bought.
02Architecture
Three rules that define the product.
Anyone can assemble a contact file. What is sold here is confidence in how it was assembled — and that is a systems decision, not a design one.
The cycle is weekly.
Scrapers run on a schedule: new contacts arrive every week and the lists renew. A six-month-old lead is not worth what a six-day-old one is, and the system is built around that difference.
Nothing enters without passing.
Email syntax and domain, phone format, declared role, and deduplication against what already exists. What fails never reaches the inventory — so it can never be sold.
Each contact sells once.
When an order ships, those leads are marked sold and leave the available inventory. It is the product's central promise, and it is a rule of the system rather than a commercial intention.
03The idea
What this system had to settle.
A lead is not worth much for existing. It is worth being verified, fresh, and yours alone.
Anyone can scrape a site and hand over ten thousand rows. The value sits in what happens between extraction and delivery: validate, discard, deduplicate, tag and reserve. That invisible stretch is the product, which is why the system was designed from there and not from the home page.
The consequence is commercial: the buyer is not competing with another broker over the same contact, the file arrives in under 48 hours, and next week there will be a fresh list. That is what turns a one-off sale into a recurring business.
CaptureVerifyDeliver
04The system
From public source to delivered file.
Six connected pieces and a cycle that repeats weekly. None of it is touched by a person except to check that it ran.
Scrapers · Python
Extraction and parsingn8n
Scheduling and orchestrationValidation
Email, phone and duplicatesCRM
Inventory and taggingPayments
Buying a packageDelivery
File and link to the client
- 01
Scheduled run
A weekly cron in n8n wakes the scrapers. There is no human click at the start: if the week passes, the list refreshes anyway.
- 02
Extraction
The scrapers work through sector directories and public sources, parse each company record, and return contact, company, role and origin in a standard shape.
- 03
Validation
Every record passes email syntax and domain checks, phone format and role coherence. Whatever fails is discarded before it touches the inventory.
- 04
Deduplication
Records are matched against what was already captured and already sold. An existing contact does not enter twice, and a sold one is never offered again: this is what holds exclusivity up.
- 05
Tagging in the CRM
What survives enters the CRM with its fields: industry, transport mode, role, location, source and date. Without that tagging there is no way to assemble a segmented package.
- 06
Buying a package
On the landing page the client picks 250, 500 or 1,000 leads and pays online. The payment fires the delivery flow: marketing ends here and operations begin.
- 07
Assembly and delivery
The flow pulls the package's leads from inventory, generates the CSV or Excel file, and sends the download link. The public promise is under 48 hours.
- 08
Marked as sold
Delivered contacts leave the available inventory. The next sale starts from what remains, not from the same list again.
One weekly cycle · eight stages · no manual step
05The other side
The landing exists for one decision.
The site has no catalogue and no cart: it has three prices and a promise. Everything else lives inside the system.
250, 500 or 1,000 contacts.
Three tiers with the same guarantee: verified leads, sold only once, a list refreshed weekly, and delivery in under 48 hours. The middle tier is flagged as most popular.
What a broker asks.
Direct decision-maker access, exclusivity, fresh weekly data, verified contact details and turnaround time. Every block on the page answers one objection, in that order.
Outreach as a separate service.
For buyers who would rather not prospect themselves, the brand offers automated email and SMS campaigns over those same leads, as a monthly subscription.
06The product
What defines an order.
Not campaign metrics: the terms of the product exactly as the landing page sells them today.
- 3
- Packages: 250, 500 and 1,000 leads
- 48 h
- Maximum between payment and delivery
- 1×
- Times each contact is sold
- 7 d
- How often the list refreshes
07Visual system
Freight blue and signal yellow.
Bands and header
- HEX
- #002C6D
- RGB
- 0 · 44 · 109
Price · Buttons
- HEX
- #F8F812
- RGB
- 248 · 248 · 18
Legible accent in text
- HEX
- #8C6A00
- RGB
- 140 · 106 · 0
Borders and detail
- HEX
- #82A2BC
- RGB
- 130 · 162 · 188
Content background
- HEX
- #F9FAFA
- RGB
- 249 · 250 · 250
08Typography
A geometric that carries the price.
Poppins
Aa Bb Cc — 0123456789
SemiBold 600 · Bold 700
Poppins Regular
Aa Bb Cc — 0123456789
Regular 400 · Medium 500
Poppins · small caps
Aa Bb Cc — 0123456789
SemiBold 600
Get Exclusive Logistics & Importer Leads
clamp(32–52) · -1% · 700Logistics Manager Leads
clamp(26–42) · 0 · 700$150 · 500 verified leads
clamp(28–44) · 0 · 700Verified phone and email contacts for freight brokers and importers, sold only once, with fresh weekly updates.
16 / 26 · 0 · 400Verified · Exclusive · Delivered
11 / 15 · 12% · 60009The system and the sale
The process you cannot photograph.
| Company | Role | Contact | State |
|---|---|---|---|
| Andes Freight Group | Logistics Manager | m.***@andesfreight.example | Captured |
| Northport Importers | Procurement Lead | j.***@northport.example | Verified |
| Delta Cargo Lines | Dispatch Supervisor | r.***@deltacargo.example | Verified |
| Northport Importers | Procurement Lead | j.***@northport.example | Duplicate |
| Sunbelt Customs Co. | Import Coordinator | a.***@sunbeltcustoms.example | Verified |
| Harbor Line Logistics | Supply Chain Manager | p.***@harborline.example | Verified |
A reconstruction of the process: sources are worked through, rows land with their state, the duplicate is discarded, and the counter fills the package before the file is generated. The contacts are invented — the real ones are the client's product and are not published.

One decision on the table: exclusive, verified leads refreshed weekly, with the packages reachable in the first screen.

250, 500 or 1,000 verified contacts, the same guarantee across all three, and the middle tier flagged as most popular.

Six blocks answering a broker's objections one by one: direct access, exclusivity, fresh data, verification, turnaround and optional outreach.

The package is picked and paid for on mobile: that is where a broker checks suppliers between calls.
10The outcome
A business that runs without being switched on.
What was delivered is not a website with a form: it is an operation. The scrapers run on their own, validation throws out what does not hold, the CRM knows what is available and what has been sold, and payment triggers assembly and delivery. The person who used to copy emails now checks that the cycle ran.
And it grows where the business grows: adding a source means adding a scraper and a stage in the flow, not rebuilding the system. The same tagged inventory allows packages segmented by industry, transport mode or role whenever a client asks for them.
Stack
- 01Python · scheduled scrapers
- 02n8n · orchestration and validation
- 03CRM with its own fields and tags
- 04Online payments with automated delivery
- 05CSV / Excel generation
- 06WordPress · Elementor Pro (landing)
- 07LeadConnector · forms and payment links
- 08Rank Math · on-page SEO
About the data
The case shows the process, not the inventory. The mock's rows are invented and the domains are examples: the real contacts are what the client sells, and publishing them would give away his product and expose third-party data.
More work
If your process repeats every week, it isn't a process — it's a product you haven't built yet.
Searching, verifying, sorting and sending is work a person does badly out of boredom and a machine does identically every week. If your operation lives off that, it can be automated end to end — and charged for as a product.
Tell us about your project