Skip to content

Shepyrd · Est. 2026

  Work · 2025–2026№ 02 — Perfume World

The system behind every perfume counter.

Every bottle, every outlet, accounted for.

Custom systemBackoffice · POS · Cloud
Perfume World brand mark — a hand holding a perfume bottle, drawn in a single line
Retail platformMalaysia

Built on

  • NestJS
  • Next.js
  • TypeScript
  • Flutter
  • Postgres
  • AWS
01

The problem

Retail outgrows spreadsheets quietly.

Perfume World sells fragrance through mall outlets across Malaysia. A chain like that runs on thousands of small facts: what's on each shelf, what each bottle cost at each counter, who sold it, and which supplier invoice it belongs to.

Off-the-shelf POS software handles the till. It doesn't handle per-location costs, staff commissions, the paperwork chain between warehouse and counter — or the malls themselves, several of which require every tenant to file an hourly-breakdown sales report, in the mall's own file format, by the next morning.

One system that agrees with itself beats five that almost do.

02

The platform

Three apps. One truth.

A web backoffice for head office, a point-of-sale app in every outlet, and one engine underneath — so a stock number in the warehouse is the same stock number on the counter, the commission report, and the mall's sales file.

Backoffice

Head office in one place: products, stock, pricing, reports.

Point of sale

Barcode-first app in every outlet, bound to the counter's device.

Document chain

Purchase order to invoice — every movement recorded, in order.

Commissions

Rules to leaderboards; every sale accrues to its seller automatically.

Mall reporting

Hourly sales files delivered to each mall, unattended, every day.

03

The system

Plain parts, precisely wired. Built to last.

The engine is a NestJS API over PostgreSQL, with a data model covering everything from a product variant to a mall's sales file. It runs as one container on AWS, behind a CDN, with the backoffice deployed separately so either side can ship without touching the other.

Secrets live in a vault, never in code. Deploys are keyless: a push to main builds the image, scans it, and rolls it out — no passwords on laptops, no servers to log into.

The whole estate is described in Terraform. If the worst happens, the production environment can be rebuilt from the repository, not from memory.

04

What we'd do for you

Your operations, described in software.

Perfume World's platform is bespoke, but the method transfers to any business that has outgrown its spreadsheets. Three principles, always.

  • 01

    Model the business, not the feature list.

    The schema mirrors how goods actually move — every document a first-class record, every movement written down.

  • 02

    Automate the reports nobody enjoys.

    If a person files the same numbers every morning, the system should be doing it before they wake up.

  • 03

    Make the next one cheap.

    New outlet, new mall, new commission rule — a configuration row, not a rebuild.

Still running on spreadsheets?

Tell us how your business runs. We'll reply within one business day.