Product engineering

Razor ERP

One connected system for a warehouse that ran on paper.

A mobile-first ERP for warehouse and e-waste operations that replaced a decade of spreadsheets, paper travellers and radio calls with a single connected system that works on the floor.

Recycling E-waste Warehousing IT Asset Management Offline-first
Sector
Recycling & E-Waste
Year
2024
Duration
7 months
Team
6 people
Platforms
iOS · Android · Web admin
Status
In production
Razor ERP — visual identity for the case study
1,284 SKUs live-tracked Across 36 bins and 3 facilities
24h to 0 Reporting lag Stock is current, not next-morning
99.4% Scan-to-record accuracy Measured against quarterly counts
6 Movement verbs The entire domain model

01 — The problem

The client processed thousands of end-of-life IT assets a month across three facilities. Every movement — goods-in, triage, teardown, resale, destruction — was written on a paper traveller, then keyed into a shared spreadsheet by an admin team the following morning.

The result was a permanent 24-hour blind spot. Stock counts drifted, certificates of destruction were reconstructed from memory, and nobody could answer the question auditors always asked: where is serial number X right now, and who touched it?

02 — What we did

We started on the floor, not in Figma. Two weeks of shadowing goods-in, teardown and dispatch produced a movement model with six verbs — receive, move, process, hold, ship, destroy — that every physical action maps onto. Everything else in the product is a projection of that ledger.

The mobile app was designed for gloved hands, poor Wi-Fi and steel racking. Targets are large, the primary action is always the scanner, and every write is queued locally then reconciled server-side, so a dead zone in aisle C never stops a shift.

The warehouse stopped reporting yesterday and started reporting now.
Interface

What it looks like in use

Two of the screens that carry the most weight in daily use, rebuilt here from the production design system.

9:41
Bin A-12SYNCED
240ON HAND
36QUEUED
Boards · Grade A148
Boards · Grade B62
Unclassified30
78% capacity14s ago

The floor screenCounts, scan action and reconciliation state are visible without scrolling, and legible through a scratched screen protector.

razor.aurezalabs.com/inventory
Inventory · Facility 023 EXCEPTIONS
1,284SKUS TRACKED
12LOW STOCK
Variance · Bin C-01 · −14 unitsREVIEW
Hold · Batch 4471 · customer audit2d
Aging · Bin B-04 · 91 days88
Movements per hour

Exception-first consoleThe web console leads with what needs a decision — variances, holds, aging stock — rather than a wall of totals nobody reads.

Capabilities

What the system does

Grouped by the job each set of capabilities exists to do, rather than by which team built it.

Warehouse operations

01 · The daily floor loop

Bin and zone management

A hierarchy of facility, zone, aisle and bin, each with capacity rules and a printable location label.

Barcode and QR scanning

Camera and hardware-scanner input share one pipeline, so a rugged sled and a phone camera behave identically.

Guided put-away

The app suggests a destination bin from item class, current fill and pick frequency, and explains why it chose it.

Cycle counting

Rolling counts scheduled per zone, with variance raised for approval instead of silently overwritten.

Asset lifecycle

02 · Serial-level custody

Serialised intake

Every asset gets an identity at goods-in with photos, condition grade and the customer it belongs to.

Teardown and yield

Parent assets break into child components with weights and commodity classes carried through to resale.

Certificates of destruction

Generated from the movement ledger rather than typed by hand, with operator, timestamp and method attached.

Chain of custody

A full audit trail per serial, exportable as a document an auditor will accept.

Inventory intelligence

03 · What the office needs

Live stock tracking

Balances update as scans land, with a visible reconciliation state for anything still queued offline.

Batch management

Lots grouped by customer, contract or commodity, with per-batch margin once resale prices land.

Low-stock and aging alerts

Thresholds per commodity class, plus an aging report for stock that has sat too long to be worth holding.

Logistics tracking

Outbound consignments with carrier, manifest and proof-of-delivery capture.

Architecture

How it is put together

Layer by layer, with the reason each one exists — because the reason is usually the interesting part.

01Mobile client

React Native app with a local SQLite mirror. The UI reads only from local state, so it never blocks on the network.

  • React Native
  • SQLite
  • MMKV
02Sync engine

An append-only outbox of movement events with idempotency keys, replayed on reconnect and resolved server-side by timestamp and operator precedence.

  • Event outbox
  • Idempotency keys
03Core services

A movement ledger that is the system of record. Balances and reports are derived views, never edited directly.

  • Node.js
  • Fastify
  • PostgreSQL
04Admin and reporting

Web console for supervisors: approvals, exceptions, batch pricing and export.

  • React
  • TanStack Query
  • Vite
05Platform

Containerised deployment with per-facility tenancy, nightly backup and audit-log retention.

  • Docker
  • AWS ECS
  • S3

Technology

Mobile

  • React Native
  • TypeScript
  • SQLite
  • Scanner SDK

Backend

  • Node.js
  • Fastify
  • PostgreSQL
  • Redis
  • BullMQ

Frontend

  • React
  • TypeScript
  • Vite
  • TanStack Query

Platform

  • Docker
  • AWS ECS
  • S3
  • GitHub Actions
Outcome

What changed

Measured against how the operation ran before, not against a benchmark chosen after the fact.

  • Reporting lag went from 24 hours to real time. Supervisors stopped starting the day by reconciling yesterday.

  • Certificates of destruction became a by-product. They are generated from the ledger, so they always match what actually happened.

  • Offline was designed for, not patched in. A full shift can run with no connectivity and reconcile cleanly at the end.

  • Three facilities on one model. New sites are a configuration exercise, not a fork.

How it ran

  1. Weeks 1-2

    Floor discovery

    Shadowed three shifts across goods-in, teardown and dispatch. Mapped every paper artefact in use.

  2. Weeks 3-5

    Movement model

    Reduced the domain to six verbs and validated them against a year of historical paper records.

  3. Weeks 6-12

    Mobile core

    Scanning, put-away and the offline outbox, tested on real devices in the aisles from week seven.

  4. Weeks 13-20

    Admin and reporting

    Supervisor console, approvals, batch pricing and the audit export.

  5. Weeks 21-28

    Rollout

    Facility-by-facility migration with a two-week parallel run against paper at each site.

Related work

From the same practice

All fifteen projects

Investment & Asset Management

Kilwa

Market data, sentiment and research in one investment workspace.

An AI investment-intelligence platform that pulls market data, news sentiment and analyst research into a single workspace, so an investment team can go from a question to a defensible answer without leaving the screen..

2025 · 9 months
HR Tech & Recruitment

The Walt

Where candidates move, and where they stall.

A recruitment analytics platform that turns an applicant tracking system's raw event log into a picture of where a hiring funnel actually leaks, with the bottleneck named rather than left to be inferred..

2024 · 5 months
Healthcare & Clinical Communication

Lyfe Languages

Clinical translation where a wrong word has consequences.

A translation platform built specifically for clinical settings, where general-purpose translation is not safe enough and a verified medical dictionary sits between the model and the patient..

2023 · 8 months
Something similar?

Running into the same problem Razor ERP solved?

Tell us what you run. We will reply within two business days with what we would build for your situation — and, just as usefully, what we would leave out.