A D2C-focused logistics startup needed a single platform that could aggregate 15+ shipping carriers, pick the cheapest rate per shipment, generate labels in bulk, and handle NDR (non-delivery report) workflows end to end. Seven months later, the platform was processing 50,000+ shipments a month and saving brands ~20% on shipping cost.
The founders had spent years inside a D2C brand and knew the pain firsthand: every carrier has its own portal, every portal has its own rate card, every label has its own format, and every NDR needs to be handled by a different dashboard. Brands shipping a few thousand orders a month were losing money on two fronts — paying above-optimal rates because switching carriers mid-volume is painful, and spending disproportionate ops time on tracking and NDR reconciliation.
They wanted to build the shipping layer D2C brands actually needed: one API, one dashboard, one invoice, and rate-shopping logic that did the math automatically per shipment. Their specific pain points:
We built a multi-tenant SaaS platform where brands sign up, connect their store (Shopify, WooCommerce, Magento, or custom REST), and ship through the carrier network without ever touching a carrier portal. The architecture splits cleanly into four layers.
A normalized adapter pattern wraps each carrier's API behind a common interface. Every adapter exposes the same five operations: getRates, bookShipment, generateLabel, trackShipment, and cancelShipment. Carrier quirks (rate caching, weight-slab rounding, serviceability rules) live inside the adapter so the business logic on top stays clean. Adding a new carrier is a ~2-week effort for the engineering team, not a platform overhaul.
For every shipment, the rate engine fetches live serviceable rates from every carrier in parallel, scores each against the brand's routing policy (cheapest / fastest / most-reliable / weighted mix), and returns a recommendation. Brands can accept the recommendation, override it, or let the system auto-select. The engine caches carrier rate cards per origin-destination-weight slab to avoid hammering carrier APIs during bulk imports.
Brand's daily driver. Bulk order import (CSV, Excel, Shopify sync, WooCommerce sync), inline editing, rate shop → book → print label in one flow, tracking monitor with configurable alerts (stuck shipments, NDRs, RTOs), NDR resolution with one-click re-attempt requests, COD reconciliation, weight dispute management, and invoice downloads. Role-based access for multi-user brands.
Well-documented REST endpoints for create-shipment, fetch-rates, track, and cancel. Webhooks fire for every status change — brands consume them to update their own OMS and trigger customer notifications. Full OpenAPI 3.0 spec + sandbox environment for testing.
This is a multi-tenant data-heavy SaaS where we need to stay fast under bursty imports (5,000+ orders at once during sales) and still keep each tenant's data isolated. The stack reflects those priorities:
NestJS for the backend: the modular structure pays off hard on a large SaaS — 15 carrier adapters, rate engine, billing, NDR service, and auth are independent modules. DI makes them trivial to mock and test.
PostgreSQL for tenant data, Redis for hot paths: PostgreSQL handles the relational truth (shipments, orders, invoices). Redis caches carrier rate cards, session data, and the rate engine's short-lived quote tokens. Rate-engine response p99 stays under 400 ms even during peak.
BullMQ for every carrier call that isn't user-facing: bulk label generation, webhook delivery, NDR retry loops, and COD reconciliation all run on queues with exponential backoff. The dashboard stays snappy because it never awaits a slow carrier.
Elasticsearch for search: brands shipping 50,000/month need free-text search across AWB, customer phone, order ID, product SKU, and failure reason. Postgres full-text would've been fine at 10k — at 50k+, ES was a clear win.
The rate engine under bursty load. This was the single feature brands compared us against the incumbents on, and it had to be fast, accurate, and honest.
Fetching live rates from 15 carriers for every shipment, every time, is impossible: some carrier APIs take 3–6 seconds and throttle hard. A naive parallel fetch would blow our request budget in the first bulk import of the day. We solved it with a layered cache and a smart fallback:
Net effect: p99 rate response under 400 ms even with 1,000 concurrent bulk-import requests, and zero support tickets for "my booked rate didn't match what I was quoted."
The founders ran a 90-day closed beta with 8 friendly D2C brands, which caught the important bugs (NDR state transitions, weight-dispute edge cases, duplicate webhook fires). Public launch came with a transparent pricing page, self-serve onboarding, and a 14-day no-card trial — unusual in logistics SaaS at the time.
Growth was driven by content SEO (rate calculators, pincode-serviceability tools), carrier marketplace partnerships, and a free Shopify app that acted as an on-ramp. By month 11, steady-state monthly shipment volume crossed 50,000 with ~180 paying brands.
"We evaluated three platforms before picking ITD GrowthLabs. What sold us was that they understood the carrier quirks — not in theory, but in the specific, painful way they show up on a Monday morning during a sale. The platform has paid for itself in shipping savings alone."
Co-Founder & CTO
Multi-Carrier Logistics SaaS · Bengaluru
Two things. First, we would stand up the carrier sandbox environment in week one instead of month three — most early bugs were in the long tail of carrier response edge cases, and a sandbox-first workflow would have surfaced them before they hit beta customers. Second, we under-invested in the billing engine for the first six months. When volume crossed 10k/month, weight-dispute reconciliation and COD remittance workflows became the #1 support ticket source for weeks until we rebuilt that module properly.
We have built multi-carrier rate engines, label pipelines, tracking layers, and NDR workflows enough times to know where the quicksand is. Let's scope your v1 against what actually works at scale.
Get a Free Consultation