US Tech Automations

Free worked example Synthetic data Existing $49 offline product

Which orders can this stock fill?

A small maker has parts on one shelf and three orders. This page walks the same greedy allocation KitClear Offline uses, on a labelled synthetic snapshot, in both partial and whole-order modes. It is a static lesson. It cannot take your files or recompute a new snapshot in the browser.

This page
Free worked example
Product
$49 one-time (Gumroad)
Data
Synthetic. No customer records.
Modes
Partial units and whole orders, side by side

Download the free example

Buy KitClear Offline on Gumroad — $49Existing one-time $49 offline edition. Not a 12-month subscription. Instant zip after purchase. This page does not take your files.

Watch the synthetic workflow

This recording uses made-up inputs in the offline product. It shows the supported steps; it is not a customer result. Captions describe the steps; there is no audio.

Read the recording transcript

SYNTHETIC. No customer data. Neutral names already in the fixture (board, case, cable, sensor-kit, board-pair).

What this page is

A free, inspectable teaching example attached to KitClear Offline. The numbers below are the accepted engine’s output on inputs/example.json. Download example.zip for the source, both output packets, a README, and a per-member SHA-256 list. A short reusable lesson is in lesson.md.

A static sample cannot process buyer input. There is no upload, no form, and no input tracking. To run your own snapshot you buy the $49 offline edition and run it on your machine.

Supported inputs

UTF-8 JSON object with exactly these documented fields: stock, boms, orders, partial_fulfillment (boolean, required), optional reservations, optional synthetic. Other fields are refused. Duplicate JSON members, non-integers, and trailing junk are refused.

  • stockMap of 1–2,000 component IDs to on-hand integers 0–1,000,000.
  • reservationsMap of known components to locked integers 0–1,000,000. Locked quantity cannot exceed on-hand. Missing reservation is 0. Reserved stock is unavailable to these orders.
  • bomsMap of 1–200 product IDs to one-level bills. Each bill has 1–100 components; units 1–10,000 integers. Product and component IDs must be disjoint. Nested bills are unsupported. Every BOM component needs an explicit stock quantity (zero is allowed).
  • ordersArray of 1–100 rows. Each row has exactly id, sku, quantity (1–100,000), priority (1–10,000). IDs unique; SKU must have a bill. IDs are case-sensitive printable strings of 1–64 characters.
  • partial_fulfillmenttrue fills the greatest whole-number quantity stock allows. false fills an order completely or leaves it at 0 and moves on.

Three CSVs are also accepted by the product, with exact column names (order may change): stock.csv component, on_hand, reserved; boms.csv sku, component, units; orders.csv order_id, sku, quantity, priority. This page’s zip uses the JSON form. Each file and the normalized object must stay within 1 MiB.

The synthetic snapshot

Available stock is on-hand minus reserved: board 10, case 7, cable 20. Orders are processed high priority first: ORDER-A, then ORDER-B, then ORDER-C.

Stock and reservations

componenton_handreservedavailable
board12210
case707
cable20020

Bills of materials

skucomponentunits
sensor-kitboard1
sensor-kitcase1
sensor-kitcable2
board-pairboard2
board-paircable1

Orders

order_idskuquantitypriority
ORDER-Asensor-kit610
ORDER-Bboard-pair35
ORDER-Csensor-kit22

Why two reserved boards cannot be used

Twelve boards are on hand. Two are reserved. The engine subtracts reservations before it looks at any order, so available boards start at ten. Those two reserved boards stay locked for this run. They are not assigned to ORDER-A, ORDER-B, or ORDER-C, in either mode.

Both modes, side by side

Partial mode filled [6, 2, 0] for ORDER-A, ORDER-B, ORDER-C. Whole-order mode filled [6, 0, 0].

Partial units (true)

Fill as many whole units as leftover stock allows, then continue.

order_idskupriorityrequestedfilledunfulfilled
ORDER-Asensor-kit10660
ORDER-Bboard-pair5321
ORDER-Csensor-kit2202

After ORDER-A (6 sensor kits) leftover is board 4, case 1, cable 8. ORDER-B can make 2 of 3 board-pairs. ORDER-C needs a board and a case; boards are gone, so it fills 0.

Whole orders (false)

Fill the order completely or skip it and keep the parts.

order_idskupriorityrequestedfilledunfulfilled
ORDER-Asensor-kit10660
ORDER-Bboard-pair5303
ORDER-Csensor-kit2202

ORDER-A still fills 6. ORDER-B wants 3 board-pairs and only 2 are possible, so it fills 0. The skip leaves board 4, case 1, cable 8 — room for one more sensor kit. ORDER-C asked for 2, so it is also skipped and that room sits unused. A later smaller order could have taken it. This fixture has no such order.

Material picks and shortages

Picked = (on-hand − reserved) − remaining available. Additional-for-unfulfilled is max(0, parts still needed for unfilled units − remaining available). That additional figure is a mathematical shortage for review, not a purchase order and not a savings claim.

Partial materials

componentpickedlockedremainingadditional
board10204
case6011
cable14060

Picks: board 10 = 6 (ORDER-A) + 4 (two board-pairs). Case 6 and cable 14 follow the same filled units. Extra boards 4 and extra case 1 cover the unfilled board-pair and both of ORDER-C.

Whole-order materials

componentpickedlockedremainingadditional
board6244
case6011
cable12080

Picks: board 6, case 6, cable 12 — ORDER-A only. Remaining board 4 / case 1 / cable 8 is the unused room described above. Extra boards 4 and extra case 1 are the same shortage arithmetic on a larger unfilled remainder.

The four files each mode writes

The engine writes allocation.json, orders.csv, materials.csv, and README.txt. It does not write a separate HTML report; the tables on this page and the linked static renderings are those four files, shown for inspection.

Partial packet

Input SHA-256: a50043ca31586576d1055a94e18a972cbb66bf3fcc6f451ff54aa095a54b9348

order_id,sku,priority,requested,filled,unfulfilled
ORDER-A,sensor-kit,10,6,6,0
ORDER-B,board-pair,5,3,2,1
ORDER-C,sensor-kit,2,2,0,2

Whole-order packet

Input SHA-256: 17270b54df3f93022d5808779b8bf779806b1a61abf110ec06e98b6317bb91ca

order_id,sku,priority,requested,filled,unfulfilled
ORDER-A,sensor-kit,10,6,6,0
ORDER-B,board-pair,5,3,0,3
ORDER-C,sensor-kit,2,2,0,2

Limits

  • Greedy policyDescending integer priority, then input-order ties. Not a global optimum.
  • One-level integer billsNo nested bills, no fractional units, no substitutions.
  • One stock locationNo multi-warehouse, dates, forecasts, or purchasing.
  • Review, not assemblyNo physical assembly or safety guidance. Shortages are not purchase orders.

Practitioner lesson

Decide which of today’s orders current stock can fill before anyone starts packing. Subtract reserved parts first. Walk highest priority first. Choose whether a partial kit is allowed. If it is not, skipping a large order can leave parts for a later smaller one — only if that later order is small enough. Full text: lesson.md.

Download the synthetic zip

The zip holds the source JSON, both four-file packets, a README that restates synthetic status and limits, and MANIFEST.sha256. It is not the paid product.

Download example.zip

The $49 offline edition

KitClear Offline is a one-time $49 download you run on your own machine. It is the existing Gumroad product, not a 12-month Stripe offer. Use the button at the top of this page. Refunds follow Gumroad’s purchase terms. Support: operations@ustechautomations.com.

Example source

Synthetic input and product output generated and checked on 2026-09-20. The source files and output files are provided above. The linked Gumroad price was checked on the same date. No customer records were used.