← All Projects
E-Commerce
Tooling
CSV

Supplier Catalogue Manager.

An internal application to import, normalise and manage the supplier's product catalogue delivered as CSV files — mapping supplier SKUs to store products, handling price updates, and flagging discrepancies automatically.

Duration

2 Months

Complexity

Medium

The Challenge

Manual CSV Wrangling Every Week.

The supplier delivers a new catalogue CSV weekly. Manually cross-referencing hundreds of lines against the Shopify store to update prices, add new products, and retire discontinued ones was error-prone and took hours.

Manual Work
Data Mapping
Errors
The Stack

Next.js 16 (App Router)

TypeScript

Shopify Admin API

Papaparse (CSV parsing)

PostgreSQL

MUI v7 DataGrid

Zod (schema validation)

CSV-to-Shopify Sync Pipeline

The CSV is uploaded via a drag-and-drop interface, parsed client-side with Papaparse, and validated against a Zod schema. A diff engine compares the incoming catalogue against the current store state and produces a change-set (new / updated / removed) ready for one-click sync via the Shopify Admin API.

// lib/catalogue/diff.ts
export function diffCatalogue(
  incoming: SupplierRow[],
  current: ShopifyProduct[]
): CatalogueChangeset {
  const currentMap = new Map(current.map(p => [p.sku, p]))
  return {
    toCreate: incoming.filter(r => !currentMap.has(r.sku)),
    toUpdate: incoming.filter(r => {
      const existing = currentMap.get(r.sku)
      return existing && existing.price !== r.price
    }),
    toArchive: current.filter(p =>
      !incoming.find(r => r.sku === p.sku)
    )
  }
}
Architecture Diagram

From Hours to One Click.

Automated Diff Engine

Compares incoming supplier CSV against live store state and categorises every product into new, updated, or discontinued — no manual cross-referencing needed.

One-Click Shopify Sync

The validated change-set is applied to Shopify via the Admin API in batch, with conflict resolution and a rollback log for any failed operations.

4h

Saved Per Week

~4h/wk

Time Saved

500+

Products

~0%

Error Rate
CSV Diff EngineShopify Admin API Batch Sync