Skip to content

Inventory

Inventory in Factorial is a digital record of the physical inventory in the factory. Every build step, test result, piece of equipment, quality issue, and operator that comes into contact with a inventory is tracked and the data is easily accessible.

Inventory can be created, installed, uninstalled, consumed, transformed, merged, split, and scrapped and every step of the process is controlled and auditable.

Creating inventory

Inventory can be created in the following ways:

  • CSV import
  • Bulk loading APIs
  • Produced from work order
  • Purchased
  • Created manually

When Factorial is first implemented, typically inventory is imported using CSVs or the API.

From there, new inventory is generally produced in house or purchased externally. Right now Factorial doesn't have a full featured purchasing system (with quoting, purchase orders, etc), but it supports creating inventory through a purchase, and marking it's cost and supplier.

Inventory created in-house can be produced by executing a work order that produces inventory. Work orders that produce inventory automatically create an inventory line for the inventory that they produce.

Install/Uninstall

Inventory can be installed and uninstalled onto other inventory lines. Tracking installs/uninstalls is usually done automatically during the process of executing work orders. The step, operator, equipment used, location, and any other custom metadata is tracked along with the install/uninstall operation. Install/uninstall tracking helps Factorial maintain a digital twin of complex assemblies, enabling quality containment, root cause analysis, rolled up costs per unit, and more. More information about ABOMs will be added to this documentation.

Consume

Some inventory cannot be uninstalled once it's used. For example glue or paint is consumed, and not installed. Inventory can be consumed and attached to a parent inventory, or simply consumed. Consumed inventory cannot be used anymore and the system will not show it as available. Consuming inventory is distinct from scrapping, scrapped inventory is intended to be viewed as waste, while consumed inventory had a productive use.

Transform

Transforming inventory changes it's part number from one to another while maintaining traceability on what happened to the inventory before the transformation. For example, when stamping sheet metal into a car door, rather than 'installing' the sheet onto the door, the sheet can be 'transformed' into the car door, then the door installed onto the car. The inventory history would show the complete history of the metal sheet, including supplier, any previous work orders executed against it (maybe it was heat treated, or has a coating applied), and then would show that it got transformed into a car door.

Inventory transformation is a powerful feature for configuring the system to enforce invariants. For example if a body panel requires a specific coating before it can be installed, the install step could require a "body panel - coated" part, and a previous work order could transform "body panel" -> "body panel - coated", without losing any traceability on what happened to the body panel before the transformation.

Split

Splitting an inventory line creates two new inventory lines allowing their ongoing histories to diverge, while maintaining shared history from before they were split. An example use case is if a batch of ten car doors are being made, and 3 of them don't pass an inspection. The 7 good ones can be split off and continue on, while the 3 bad ones can be scrapped or reworked. The inventory can later be merged, if applicable, or can remain separate indefinitely.

Lot tracked or untracked assemblies (inventory with installations) can also be split, and Factorial will maintain a record of what is installed where. If installations are ambiguous, Factorial will represent that with a deterministic confidence score about where something is installed. For example if 6 screws from Lot A and 4 from Lot B are used on a batch of 10 car doors, and that batch is split into two inventory lines, qty 5 and 5, Factorial will be clear that Lot A and B of screws could be installed on one or both inventory lines, and each line will show it expects there to be 3 screws from Lot A and 2 from Lot B on each line, but that this is just an expected value estimate, and that the installations are ambiguous.

Serial tracked inventory cannot be split, since serials are indivisible.

Merge

Untracked inventory lines are automatically merged when they enter the same location. This keeps digital records clean by default. Lot tracked inventory can be merged manually if they have the same lot number.

Scrapping

Scrapping inventory makes that inventory unavailable, and indicates that the inventory was wasted. Inventory can be partially scrapped by splitting and then scrapping.

History

Inventory history tracks and displays everything that happens to an inventory line. The exact step something was installed on, which work station, which piece of equipement was used, who did it, when the action was done, is all stored in inventory history. History for a lot, serial, or individual inventory line are all accessible and performant to query, allowing in depth analysis at historical trends or pinpoint root cause analysis. Time travel features allow exploring entire assemblies as they changed over time.

Further reading

  • Units of measure (link)
  • ABOMs (link)
  • Kits (link)
  • Barcodes/Scanning (link)
  • Custom fields