perfectdesign.

Inventory management system development

An inventory system that shows real stock in every location

We build custom inventory systems for businesses that have outgrown the spreadsheet: receiving, reservations, transfers, returns and counts in one place, barcode screens your team can use on a phone, and a record of who changed every number.

  • Free working prototype first
  • We say when a product fits better
  • Code and data in your name

What you get

What is included

The parts of the work you receive, and what each one lets you do.

One stock figure everyone works from

A single record of items, locations and quantities, with physical, reserved and available stock defined in writing and agreed with you.

Receiving, transfers and returns

Deliveries, moves between locations, returns and quarantine recorded as events, each with who did it, when and why.

Barcode screens for phone or scanner

Receiving, counting and picking screens that work one-handed, with the next field ready for the next scan. Most handheld scanners work without special integration.

Counts that correct stock safely

Counts are reviewed before they change a number, with a recheck when stock moved while you were counting, and every adjustment kept on record.

Roles and approvals

Who can receive, reserve, move, count and write off, with changes that affect stock value sent to a second person.

Exceptions with an owner

Short deliveries, competing orders and uninspected returns get their own status and owner instead of a note in a comment field.

Stock views for the people who act on them

Stock by location, movement history, exception queues and reorder signals. See admin dashboards.

Connections to your other systems

Storefront, point-of-sale or accounting connections where access, data quality and terms are confirmed, each with a named owner for reconciliation.

Proof

Work you can inspect

Aruva, Firstlight, Gatherway and Sealwright are Perfect Design concept prototypes, not client work and not production inventory installations. They are here because the stock mechanics on this page run in them end to end: Aruva across sellers and a fulfilment centre, Firstlight in a food wholesaler’s warehouse, where stock held for confirmed orders is not offered again, Gatherway for a travel agency’s seats, sold through several channels at once, and Sealwright for a manufacturer’s finished parts held in three warehouses.

All our work

Concept prototypes are labelled as prototypes everywhere they appear. They demonstrate what we can build, not work delivered for that named client. More client work is going live and will be added as it does.

Price and terms

A published starting price, then a quote for your stock rules

Custom systems start from RM 12,000 on our published pricing. The figure moves with the number of locations, how complicated the availability rule is, how much of the warehouse work is included and how many other systems must agree with it.

Custom inventory system

From RM 12,000

Scoped to your stock rules after the prototype.

  • A stock record with physical, reserved and available figures
  • Receiving, transfers, returns and quarantine
  • Counting with review and a recheck
  • Roles, approvals and a full change history

Connections and extra locations

Quoted

Priced once access, data quality and the provider’s terms are confirmed.

  • Storefront, point-of-sale or accounting connections
  • Additional warehouses, shops or vans
  • Moving your stock history from spreadsheets or an older system

Billed or quoted separately

  • System care after launch starts from RM 250 a month, confirmed against what was launched.
  • Licences for connected products, such as your accounting package, stay with that provider.
  • Barcode scanners and label printers are hardware you buy; most handheld scanners work without special integration.

Ownership

Everything belongs to your business

You own everything we build for you: the code, the content, the domain, the hosting account and every third-party account opened for the project. There is no lock-in. If you move to another provider, everything goes with you and we help with the handover.

  • Source code, handed over in your own repository
  • Domain and DNS, registered to your business
  • Hosting and every service account, in your name
  • Analytics, search and ad accounts, with us as a manager you can remove
  • All content, media and data in the system

Support

We normally respond within one working day

We normally respond to a support request in under one working day, and we work to solve problems as fast as we can. That is how we normally work rather than a contractual guarantee, and responding is not the same as resolving. If your operation needs a formal response or resolution commitment, we can write one into your scope.

Before you decide

Questions people ask before they commit

Should we build a system or buy a product?

Buy, if a product already handles your process. One location, ordinary buying and selling, no unusual allocation rules: an off-the-shelf tool will be live sooner and cost less. A build is justified when the rules are specific to your business, when the data has to sit inside a system you already run, or when a product’s workarounds have become the problem.

Can staff scan barcodes?

Yes. Most handheld scanners behave like a keyboard, so a well-built screen accepts a scan anywhere a code is expected without special hardware integration, and a phone camera covers lighter use. The real design work is the screen flow: receiving, counting and picking should each be possible one-handed, with the next field already selected.

Can it connect to our accounting system or point of sale?

Often. Before anything goes into the quote we check four things: whether an interface exists, who can grant access, whether the data is clean enough to rely on and what the provider’s terms allow. Where a connection is not feasible, we design a clear reconciliation step instead of promising it and finding the limit halfway through the build.

Do we have to stop trading to go live?

No, but you need a clean starting point. We usually run a full count at a quiet moment, load the opening balance from it and run the old method alongside the new one for a short period, so differences show while they are still small. Going live without an opening count leaves every later difference open to argument.

What happens next

From a message to a working prototype

We build a free working prototype first. It carries no payment obligation, so you can judge the direction before committing.

  1. 1

    Describe how stock moves today

    Tell us what you stock, where it sits and which stock problems already cause arguments. We reply normally within one working day.

  2. 2

    Try a working prototype

    We build a prototype where a short delivery, a double order and an uninspected return can be walked through. There is no payment obligation at this stage.

  3. 3

    Approve the rules and the quote

    The availability and adjustment rules go into the written scope with the price. The deposit is paid only when you approve it.

  4. 4

    Build, count and go live

    We build the system, load an opening count and run your old method alongside it briefly, so any differences show while they are small.

How it runs

Agree the rules, then build the system

An inventory project is decided by its rules more than its screens, so the rules go in writing first and are tested against the cases that already cause trouble.

  1. 01

    Map the current process

    What you stock, where it sits, what moves it, who touches it, and which disagreements already happen often.

  2. 02

    Write the availability rules

    Physical, reserved and available defined in writing, along with negative stock, competing orders, backorders and how returns are inspected.

  3. 03

    Prototype the awkward cases

    A working version on a live link where a short delivery, a double order and an uninspected return can be tried before the build is committed.

  4. 04

    Build the record and the workflows

    The approved scope, with every change recorded as a traceable event and staff screens built around the jobs done every day.

  5. 05

    Test the exceptions

    Simultaneous orders, counts with stock moving underneath and disagreements with connected systems, tested on purpose against checks agreed beforehand.

  6. 06

    Go live and hand over

    An opening count, a short period running alongside the old method, then the code, data and documented rules handed to you, with ongoing care if you want it.

The detail

How we approach inventory systems

The longer explanation, for anyone comparing options or planning the work in detail.

In this section7 sections
  1. 01What an inventory system is for
  2. 02One stock record that every system reads from
  3. 03How stock moves through the system
  4. 04Who can change a stock figure
  5. 05Counting and fixing differences
  6. 06Stock across several locations
  7. 07What to bring to the first conversation

What an inventory system is for

Most businesses start with a spreadsheet, a stock room somebody knows by heart and the habit of checking before promising anything. That works until the spreadsheet and the shelf disagree. From then on nobody is sure which number to act on, orders get promised against stock that is already gone, and someone spends every week reconciling by hand.

An inventory system fixes that by keeping one record of items, locations, quantities and every event that changed them, then applying an agreed rule for what can be promised to a customer. Reorder alerts, stock valuations and dashboards are all views of that record. If the record is wrong, the views are confidently wrong, which is why we spend most of the effort on the record itself.

This page covers the stock side: items, locations, movements, reservations, adjustments, permissions, counting and reporting. The storefront, the basket and payments belong to e-commerce website development and payment and checkout. Those systems read stock and ask questions of it, but neither should be where stock is defined.

A packaged product is often the cheaper answer, and we will say so. If you sell a few hundred lines from one location under ordinary rules, an off-the-shelf tool will do more on its first day than a custom build can justify. A custom system earns its place when the rules are genuinely yours: allocation by customer, stock committed against contracts, assembled or kitted goods, or a process no product supports without awkward workarounds.

Who the Malaysian economy actually is. Nearly half the country works in a small business. Software priced and shaped for a multinational is not software for this market. A full text version follows.

Who the Malaysian economy actually is

Published statistic. Nearly half the country works in a small business. Software priced and shaped for a multinational is not software for this market.

Source: Department of Statistics Malaysia: MSME Performance 2025. Reviewed .

Also: DOSM: Economic Census 2023, profile of MSMEs.

Read the graphic as text
  • Of national GDP: 39.7%. RM689.8 billion of value added by micro, small and medium enterprises in 2025, growing faster than the economy as a whole
  • Of all employment: 48.7%. 8.09 million people work in one
  • Establishments: 1.07m. Counted in the 2023 Economic Census, three quarters of them micro-sized
Download this infographic (SVG)

One stock record that every system reads from

Before anything is built, we agree which system holds the stock figure. Stock tends to live in several places at once: the online shop, the point of sale, the accounting package, a warehouse sheet and somebody's memory. If two of them can both change a number, they drift apart, and reconciling them becomes a permanent job nobody was hired to do.

So there is one authoritative record, and everything else has a defined relationship with it. Other systems can read from it and send events that change it, but only one of them holds the number. That single decision removes more future trouble than any feature on the wish list.

Physical, reserved and available are three different numbers

A stock record with one quantity will mislead you. A useful system keeps at least three figures apart, and states in writing how the available figure is calculated.

  • Physical stock is what is on the shelf, by location. It changes only when goods actually move, are counted or are written off.
  • Reserved stock is physical stock already spoken for: a paid order, a confirmed transfer or a quotation you honour for a fixed period. It is still in the building, but you cannot sell it twice.
  • Available stock is what you are prepared to promise, and it is a policy rather than a fact. Usually physical minus reserved, sometimes minus a safety buffer, and sometimes plus goods on a purchase order with a delivery date.
  • Incoming and quarantined stock stays outside the available figure until someone decides otherwise. A returned item nobody has inspected is not sellable, whatever the courier tracking says.

Two rules are agreed with you rather than assumed: whether stock may ever go negative, and what happens when two orders arrive for the last unit at the same moment. Both have sensible answers, and neither is ours to choose on your behalf.

One item, four stock numbers. Available is calculated rather than observed, so the rule behind it has to be written down. A full text version follows.

One item, four stock numbers

Editorial framework. Available is calculated rather than observed, so the rule behind it has to be written down.

Basis: IBM: What is inventory management?. Reviewed .

Read the graphic as text
  • Physical. What is on the shelf, counted by location
  • Reserved. Spoken for already, not yours to sell twice
  • Available. What you will promise, which is a policy
  • Quarantined. Returns and damage, outside sellable stock
Download this infographic (SVG)

How stock moves through the system

The clearest way to plan an inventory system is to follow one item through its life and write down what the system does at each step, who does it and what happens when the step goes wrong. The table does that for a fictional single-warehouse retailer; the roles and rules are illustrations, not a client's process.

Three stock events for a fictional single-warehouse retailer
StepWho does itWhat the system doesWhen it goes wrong
Receive a deliveryWarehouse clerkRecords the item, the location and the counted quantity against the purchase orderA short or damaged delivery is recorded as such, never quietly rounded to the expected figure
Reserve an orderThe order systemReserves the quantity without assuming the goods have shippedTwo orders for more than is available follow an agreed rule: reject, backorder or first paid wins
Inspect a returnWarehouse reviewerDecides restock or quarantine before the available figure changesA damaged return stays out of sellable stock until someone approves the write-off

Transfers, picks, dispatches and quarantine decisions work the same way: each is recorded as an event with a person, a time and a reason, rather than as an edit to a number. That is what makes the history useful later, because every figure can be explained by the entries that produced it.

When stock has to reach an accounting package, a point of sale or a storefront, we settle four questions first: which system owns the figure, what triggers a change, which way the data flows and who investigates when the two disagree. CRM and integrations explains how we approach those connections, including what we confirm before promising one exists.

What Malaysian trade moves in a month. RM170.5 billion moved through wholesale and retail in a single month, and wholesale and retail trade is 38.5% of the value added of the whole services sector. Stock accuracy is not an administrative detail in that market. A full text version follows.

What Malaysian trade moves in a month

Published statistic. RM170.5 billion moved through wholesale and retail in a single month, and wholesale and retail trade is 38.5% of the value added of the whole services sector. Stock accuracy is not an administrative detail in that market.

Source: Department of Statistics Malaysia: Performance of Wholesale and Retail Trade, July 2026. Reviewed .

Read the graphic as text
  • Wholesale: RM78.4b. Up 11.7% on a year
  • Retail: RM71.3b. Up 6.4%
  • Motor vehicles: RM20.8b. Up 7.9%

Chart scale: Sales value by sub-sector, July 2026, RM billion.

Download this infographic (SVG)

Who can change a stock figure

Permissions follow your business process rather than a copied role list. We name, with you, who in your operation may do each of these, and who reviews it afterwards:

  • Receive goods and record a problem with a delivery
  • Reserve, release or override a reservation
  • Move stock between locations and confirm it arrived
  • Count a location and submit the result
  • Approve an adjustment, especially one that changes stock value
  • Decide whether a damaged or returned item can be sold again

The pattern that works in a real warehouse is simple: everyday movements stay quick, and anything that changes value or overrides a rule needs a second person and a stated reason. Every significant change records who made it, when, the figures before and after, and why. That history turns an argument about stock into a five-minute look at the record.

The e-Invoice mandate is already fully live. Every phase has passed. If a system issues invoices, e-Invoice is not an upcoming project, it is a current obligation with a turnover threshold attached. A full text version follows.

The e-Invoice mandate is already fully live

Published statistic. Every phase has passed. If a system issues invoices, e-Invoice is not an upcoming project, it is a current obligation with a turnover threshold attached.

Source: Inland Revenue Board of Malaysia: e-Invoice implementation timeline. Reviewed .

Read the graphic as text
  • Above RM100 million. Mandatory since 1 August 2024
  • RM25 million to RM100 million. Mandatory since 1 January 2025
  • RM5 million to RM25 million. Mandatory since 1 July 2025
  • Up to RM5 million. Mandatory since 1 January 2026
  • Under RM3 million. Exempt, unless the company belongs to a larger group
Download this infographic (SVG)

Counting and fixing differences

A count is a process, not a text box. The system holds a recorded quantity, somebody counts the shelf, the difference is calculated, a reviewer accepts or rejects it, and the accepted adjustment is written as its own entry with a reason. Rolling counts by location or by value are usually easier on an operation than closing for a yearly count, and they catch problems while the cause is still recent enough to find.

Reports then come from the same record: movement history by item or location, adjustments by reviewer and reason, ageing stock, items that keep disagreeing with their count and exceptions nobody has closed. We build these into the screens where someone acts on them. Admin dashboards covers the staff-side views in more detail.

A stock count is a workflow, not a text box. Skip the recheck and the adjustment creates the error it was meant to fix. A full text version follows.

A stock count is a workflow, not a text box

Editorial framework. Skip the recheck and the adjustment creates the error it was meant to fix.

Basis: Perfect Design: how ecommerce works. Reviewed .

Read the graphic as text
  • Recorded. The quantity the system believes is there
  • Counted. What somebody actually found on the shelf
  • Difference. Calculated, with a reason attached to it
  • Recheck. Did the figure move while you were counting
  • Adjustment. Accepted by a reviewer, written as an entry
Download this infographic (SVG)

Stock across several locations

Once stock sits in more than one place, three questions shape the design. Does a customer buy from a specific location or from the total? Is stock in transit between branches owned by the sender, the receiver or neither? And can one branch see another's figures, or only that stock exists somewhere?

Selling against a total is convenient but risky, because every order is fulfilled from a real place. If a branch can fulfil an order, it needs a way to accept or decline it. Several locations also change how counting works: counts happen per location and the totals are calculated from them.

What to bring to the first conversation

Your item list and how it varies, your locations, the events that change stock today and who handles them, the availability rule you want to promise against, the problems that already cause arguments, and the systems that must connect along with who controls their access. That is enough to size a build honestly, and to tell you if a product would serve you better.

FAQ

More questions about inventory systems

Straight answers to what people ask. Anything else, message us and a person replies.

Ask a question
What happens when the system and the shelf disagree?

That is normal, and the system is built to expect it. The shelf wins, but only after a count is reviewed, and the correction is saved as an adjustment with a reason and an author rather than by overwriting the number. Repeated differences on the same item or location are the useful signal, because they usually point to a process problem rather than theft.

Can it handle stock across several branches?

Yes. Each location keeps its own figures and counts, totals are calculated from them, and we agree with you whether customers buy from a specific branch or from the total, and who owns stock in transit between branches.

How long does it take?

A more complex website or business system normally takes three to four weeks, and a larger platform is scheduled against the agreed scope. For inventory work, the pacing item is usually agreeing the availability and adjustment rules rather than building the screens.

Tell us how your stock moves today

Describe what you stock, where it sits and what already goes wrong. We reply normally within one working day, and we will say plainly if a product would serve you better than a build.