All work
Operations · Inventory·2026Live demo below

POS Inventory & Barcoding

Migrate a legacy catalogue into a point-of-sale (POS)-ready master, mint SKUs, batch serials and printable barcodes at scale.

Next.jsTypeScriptPostgresBarcodesAI-assisted

01 · The opportunity

What it set out to solve

Moving off a legacy system means every product needs clean codes, serial numbers and scannable barcodes, thousands of them. By hand it takes weeks and breaks stock accuracy from day one.

02 · The approach

How I thought about it

We built a dashboard that ingests the old catalogue, matches existing vs new items, mints parent codes and unit-level serials, generates POS barcodes in bulk, and exports one clean master file the new system can import.

03 · What I built

  • Ingest & reconcile a legacy product catalogue
  • Mint parent codes + batch serial numbers (serial-level SOH)
  • Generate scannable POS barcodes in bulk, plus a product QR that opens a live page for the shopper
  • Parent → unit stock hierarchy so stock ties out
  • One-click export of a clean POS-ready master file

04 · The result

What changed

A migration that would take a team weeks, done in a fraction of the time, with stock that reconciles from the very first sale.

Live · interactive

Migrate a catalogue.

Paste a legacy catalogue (or use the sample) and watch it reconcile against the SKU master, mint parent codes and unit-level serials, then generate two real codes per product, a Code 128 barcode for the till, and a QR for the shopper. Go on: point your phone camera at one of the QRs below and it'll open that product's live page.

Legacy catalogue

One product per line: name | colour | size | MRP | qty.

Parent SKUs, unit-level serials, scannable barcodes and product QRs will appear here, plus a POS-ready master file.

05 · Decisions & trade-offs

The questions I'd get asked about this, and my answers

Are those real barcodes in the demo?

Yes, they're genuine Code 128, encoded in the browser (start code, checksum, stop pattern and all). Scan one off your screen with any phone scanner and it reads the SKU back. Nothing is faked for the demo.

Why mint serials per unit instead of just per SKU?

Because stock only truly ties out at the unit level. A parent code tells you what a product is; a unit serial tells you which physical item sold, moved or came back. That's what makes stock-on-hand trustworthy from the first sale, and it's what a migration usually gets wrong.