PlatformStock & inventory
Know — stock, inventory & traceability
Stock and inventory management: where it went, not what is left.
SmartFactory is stock and inventory management software for manufacturers: what is in the warehouse, what is line-side at the press, what is out at a subcontractor, what shipped this morning and which lot went into it. Underneath, every one of those screens is a read of one append-only ledger, written by one piece of code and never edited after the fact. That is why a recall here is a search rather than a weekend.
The job
Four questions, always asked in a hurry.
A stock system earns its keep on the days something has gone wrong: a customer complaint with a lot number on it, a line stopped waiting for material that the software says is on site, an auditor who wants to see the movement behind a number. These are the four questions, and a manufacturer needs all four answered from the same data.
What have we got?
On-hand by item, by location and by lot — with quarantined material and stock sitting at a subcontractor counted correctly rather than counted twice.
Where is it?
A bin in the warehouse, line-side at a press, in work, in quarantine, forty miles away at the platers, or already on a customer’s site. Every one of those is a place, not a status.
What is it worth?
Value moving through raw material, work in progress and finished goods, taken from the same movements the balances came from — so the stock figure and the accounts figure have one parent.
Which lot, and where else did it go?
Backwards from a finished unit to every lot inside it, forwards from a suspect lot to every unit carrying it. The same walk, run in either direction.
None of those are difficult to answer once. They are difficult to answer consistently, two years later, when the person who did the count has left and the spreadsheet has been through four owners. That is an architecture problem before it is a feature problem — which is the next section, and then the rest of this page gets on with the job.
Why the numbers hold up
One ledger underneath, and nothing in the system can edit it.
Most stock software keeps a balance and updates it. SmartFactory keeps the movements and derives the balance. The difference never shows in a demo and shows in every audit.
- Balances, valuations, availability, genealogy and shortages are all reads of the same rows, written by one piece of code — so two screens cannot quietly disagree about how much you have.
- Nothing is edited after the fact. A cancelled receipt or a cancelled despatch posts its own reversal and both rows stay on the ledger, so the history stays continuous rather than tidy.
- Refusals live in the ledger rather than in whichever screen remembered to check — which is why a quarantined lot cannot be issued to a job or despatched to a customer, whatever route you take to it.
- Stock events go out on signed webhooks committed in the same transaction as the movement, so an event can never exist for a movement that did not happen.
- A balance can be rebuilt from the movements at any time, as a dry run first, reporting every difference it found before anything is posted.
That is the whole of the architecture argument, and this page will not make it again. Everything below is the software you would actually use on a Tuesday.
The warehouse model
Every place stock can be is a place, with rules.
Ask a stock system where something is and you should get a location, not a status. SmartFactory models the warehouse the way a floor already talks about it — a bin in stores, line-side at a press, the machine it is staged at, the bay it goes out of — and works availability out from that rather than from a column.
- Warehouse bins, line-side locations and per-machine locations are separate things, so “we have four hundred” and “there are four hundred at the press” stop being the same sentence.
- Locations carry rules, and the rules are enforced underneath every screen. A location that cannot be picked from is not picked from — by anybody, including by the code.
- Stock that has physically left the building still has a location of its own: the subcontractor’s, or the customer’s. It is never simply absent from the system.
- Receipts, issues, transfers and adjustments are all movements with a from, a to, a time and a person on them, which is what makes a variance explainable rather than arguable.
- Value follows the movements rather than a month-end spreadsheet: raw material, work in progress and finished goods each hold what the ledger says they hold.
- Cycle counting runs from an A/B/C due list, so the counting effort goes to the bins where the money actually is.
Lot and serial traceability
Which job consumed serial SN-44718 — and which serials went into WO-1042.
Those are the two questions a recall asks, and they are the two questions most stock systems answer with a spreadsheet and a phone call. Here they are two clicks, in opposite directions, off the same data.
- RAW MATERIAL L-4471 Polymer · supplier lot 22-119B
- MOULDED WO-1042-01 Housing · 5,900 produced
- ASSEMBLED SN-44718 Unit · shipped 21 Jul
One scan answers both directions: which lots went into this unit, and which other units came out of the same lot.
- Trace backwards from a finished unit through every lot that went into it, and forwards from a suspect raw-material lot to every unit that carries it — the same walk, run in either direction.
- Serials sit under lots, and lots under items, so a unit always has a parent even when the supplier sent no lot code of their own. Both codes are kept: the one your floor scans and the one a recall notice quotes.
- Consumed serials become children of the unit they went into, so an assembly carries a real as-built tree rather than an inferred one — three levels deep resolves in one query.
- A global serial box in the stock menu resolves a scanned unit straight to its life history whatever state it is in. Scan something off the shelf, see everything that happened to it.
- Where a chain runs deeper than the trace will walk, the answer says where it stopped rather than quietly returning a shorter story.
- There is no separate genealogy table to fall out of step. The join through the jobs is the graph, so there is no second copy of the truth to keep true.
Goods in
Book a delivery in properly, once, at the door.
Everything downstream inherits whatever happened at the goods-in desk. Get the receipt right and the inventory is right for the rest of that material’s life; get it wrong and no amount of reporting rescues it later.
- A goods-received note records what actually turned up against what was expected, so a short delivery shows its variance instead of being quietly rounded up to the order.
- Partial deliveries need no special handling: the balance arrives later as its own receipt against the same reference, and the outstanding gap stays visible in between.
- Receive in the units the supplier ships in — a drum, a reel, a box — with the converted stock quantity shown live underneath and the conversion factor snapshotted onto the receipt, so changing it next year cannot restate last year.
- Items flagged as inspection-required land straight in quarantine on receipt, and lots carry an expiry taken from the delivery or derived from shelf life — with a derived date marked as derived, so nobody mistakes it for a printed one.
- The certificate of analysis attaches to the lot itself, not to a folder on somebody’s desktop, and travels with it through every movement.
- The Post button says what is about to happen before you press it: 12 lines, 4 to quarantine, 38 labels. And a posted receipt is never un-posted — a cancellation posts its own reversal, so both rows stay on the ledger.
Quarantine
Quarantine is a place, not a tick-box.
A flag on a stock row still counts the pallet as available in every query somebody forgets to filter. A location cannot be picked from, so every existing total is right without anyone remembering anything.
- Quarantine, scrap, work-in-progress and in-transit are real locations marked non-pickable, so quarantined stock is excluded from availability by construction rather than by convention.
- Releasing a lot is a movement out of quarantine into a real bin, recorded with who released it — and accepting with concession requires a note before it will go through.
- Rejecting a lot posts nothing at all, because the pallet is physically still where it was. Pretending otherwise is how a rejected pallet gets shipped.
- Released stock can be pulled back into quarantine at any time with a reason. That is the recall path, and it works on stock already out on the line.
- A quarantined lot cannot be issued to a job or despatched to a customer — the refusal happens in the ledger itself, not in whichever screen remembered to check.
- Where availability excludes quarantined stock, the figure says how much it excluded, so nobody concludes the material has gone missing.
What the check itself found, and the capability study behind it, is on quality, RFT and SPC.
Consumption and issues
A scan always wins.
This is where inventory stops being an office exercise. Material is issued to a works order on the floor, by the person holding it, on a device — and the software proposes which lot to take. It does not insist, because a proposal an operator cannot override is a proposal an operator will work around.
- First-expired-first-out by default, first-in-first-out if you prefer — and an undated lot is never treated as expiring first. Scan a different lot label and that is the lot that gets consumed.
- Lots are proposed from the job’s line-side location first, then the machine’s, then anywhere pickable — and the screen says which it used.
- Nothing is reserved ahead of need, so nothing can drift. If someone else takes the material between the proposal and the confirmation, the post refuses with what is actually left and re-proposes — the truth one second late, rather than an allocation that was wrong for three days.
- For serialised work the scan is the whole interface: scan the unit, see it confirmed, scan the next. A unit that is the wrong part, already consumed, or sitting somewhere the job cannot pick from is refused with its actual state named, not a generic error.
- If the fortieth scan goes stale, the thirty-nine good ones are kept. Dropping them is the behaviour that makes operators stop using a screen.
- Back-flushed consumption is recorded as back-flush, never as an operator’s issue, and the shortfall is attributed across the lots actually issued to that job — so computing the quantity never costs you the lot.
- What comes off the machine becomes stock for the next stage automatically, as a lot named for the works order, with the job that produced it recorded. Scrap is not posted as a negative, because it never entered stock.
The scanning and the machine data behind these movements are covered on shop floor data capture.
Stocktakes and cycle counting
A stocktake posts the difference, never the count.
A stocktake is the one process where stock software can destroy its own history in an afternoon. Overwrite the balance with the counted figure and every movement before it becomes unexplainable, which is exactly when people stop trusting the system and start keeping a spreadsheet again.
- Counting is blind by default: the counter cannot see the expected figure, because a counter who can see the expected number will find it.
- A line counted at 95 against a system 100 posts an adjustment of minus five with a reason. It does not overwrite the balance with 95 — the movement history stays continuous through the count.
- The person who counted is not the person who approves the adjustment, and the approval is refused when they are the same user.
- The factory keeps running during a count. The variance is measured against the frozen snapshot, and the movements since are shown to the approver — counted 95, system was 100 at open and is 97 now, three movements since.
- Cycle counting works from a due list by A/B/C class rather than a scheduler, because a queue of unattended count tasks is a queue of ignored tasks.
- A balance can be rebuilt from the ledger at any time — as a dry run first, reporting every difference it found, before anything is posted.
Subcontract stock
Five hundred left on Tuesday. Four hundred and eighty came back on Friday.
For anyone who sends parts out for plating, printing or assembly, this is the hole in every stock system in this bracket: the ledger reads five hundred housings on hand while they are physically forty miles away.
- Sending parts to a subcontractor is a transfer, never an issue. The stock is still yours — it has moved, not been consumed — so it stays on your balance and in your valuation the whole time it is out.
- Each subcontractor gets their own non-pickable location, so nothing can be picked from it by accident and every on-hand total stays correct without a special case.
- The twenty that did not come back sit visibly outstanding, with their age, until a person accounts for them — as scrap with a reason, or as a later return. Nothing auto-reconciles, because a system that quietly closes a twenty-unit gap has taught its users the gap did not matter.
- Lots and serials travel with the parts and come back attached to them. A trip to the platers does not break the genealogy chain.
- It is driven by the process: an operation marked as external processing offers send to subcontractor and book back in on the job itself.
Where those external operations are drawn in the first place is the process designer.
Despatch
Goods out, on the same ledger as goods in.
- Picking uses the same proposal rules as a shop-floor issue, and the same scan flow for serialised units, because a pick is a pick. Nothing is held while the picker works.
- Posting a despatch moves the stock into that customer’s own location rather than deleting it, so the customer record carries a true running history of everything they have had.
- Every serial on the note moves to Shipped in the same transaction as the movement, and a unit can only ship once — enforced in the database, not by a check somebody might skip.
- Over-despatch is refused; under-despatch is normal. A line can ship in three parts, and the undespatched balance simply stays undespatched — there is nothing else to reconcile.
- The delivery note carries item, description, quantity, lot and — where the item is serialised — the serial list, along with the delivery address as it was on the day. It carries no prices at all: a delivery note with money on it is a different document wearing the wrong hat.
- Cancelling a posted despatch posts a reversal rather than erasing the original, and the note stays retrievable with its cancellation on the face of it.
Labelling
Your customer’s goods-in can scan our labels.
- Receipt labels carry proper GS1-128 element strings — GTIN, batch or lot, expiry and count — printed through the same durable queue as everything else in the label engine.
- Serialised receipts print one label per unit, each carrying its own serial, so a two-hundred-unit delivery becomes two hundred scannable units rather than one pallet nobody can split.
- Despatch labels add SSCC pallet identifiers with a properly computed check digit, plus your customer’s own order number as its own element — which is exactly what their goods-in scanner is looking for.
- That matters commercially: a supplier whose labels scan first time at a customer’s door is a supplier who stops appearing on the goods-in exception report.
- A printer problem can never fail a stock transaction. Labels are queued after the movement commits, so a paper-out at the door does not roll back a delivery.
- And if no label template is configured, the receipt says so out loud — silence there would be indistinguishable from a printer fault.
Materials planning
A planning run is only as good as the two numbers it starts from.
Material requirements planning explodes a demand plan through the bills of material and nets the result against what you already hold and what is already on order. The arithmetic is rarely the part that goes wrong.
The input is. Planning output is usually not wrong because the calculation is wrong — it is wrong because the on-hand figure it started from was a month old, and the consumption behind it was a standard rather than a measurement. This software supplies both properly: on-hand is derived from movements a person or a scan actually made, and consumption is recorded against the operation that consumed it — the process designer records which stage takes which material, and refuses to guess when nobody has said.
Run it alongside whatever holds your quantities today, let the two systems disagree for a quarter, and look at which one the floor believes. Whichever you give the master role, the locations, lots, consumption and traceability live here — that choice is a setting, described in who owns the numbers above.
Bring us the item you can never find.
The one with a balance nobody believes, stock in three places and a lot code that stops dead at goods-in. Half an hour on that item will tell you more about whether this software fits your factory than any feature list can.