Combo how — packages-available + min(floor) sellable qty
Brand: am.co.za / AM.CO.ZA. Shortcut guide · 2026-09-07 03:15 SAST.
Precomputed starter-package sellable qty lives in:
- packages-available.md (human table)
- packages-available.json (machine JSON)
Not prices. Do not invent restock days. Catalog machine lists stay in category packs — this file is the stock math for named combos already in that JSON.
When to use the JSON
| Situation | Action |
|---|---|
Client names a starter package in the file (e.g. H-DTF/A3/XP600, V4-H720, F-UVDTF/300) |
Read sellable_qty / sellable_total / limiting_part from packages-available |
| Package not in the file | Compute from product JSON + latest.json using rules below — or answer part-by-part |
| Need specs / what’s in the box | Fetch product page / am.im JSON — packages-available is qty join only |
| Available total = 0 | Read limiting part + status.json; HELPING: missing required part does not hard-kill the conversation |
How combo qty is computed (HOW-TO)
Rules source: stock/HOW-TO.md. JSON also carries rules_summary.
- Read
https://am.im/product/{slug}.json(slug= SKU lowercased, non-letters → dash). - Walk
stock.ordered/compulsoryparts. - For each managed physical compulsory part that is not a high-Spillrank kit rider:
floor(Available_at_branch / compulsory). - Package sellable at that branch = min of those floors.
- Skip virtual / unmanaged parts (training codes, InkRIP, VinylCut, FlexiPRINT, etc. — treat as available).
- Skip high-Spillrank riders (e.g.
AM-WIPE/5) — never block a package. - Available = branch on-hand from latest.json; missing key = 0.
- If totals are 0: check InTransit / InComplete / Demo in status.json. Do not invent days.
When to still fetch product JSON
- Confirm compulsory BOM /
stock.orderedchanged since packages-available was generated. - Virtual/unmanaged flags (
stock.virtual,stock.unmanaged). - Title, visit URL, training credits, or kit story for the client.
- Price: use catalog Sales Price on the dump / product page — never invent; this scenario file does not quote ZAR.
- Price history:
https://am.im/price/{slug}.jsonlive if needed.
Answer shape
- Quote branch sellable from packages-available when present.
- Name the limiting part when Total = 0.
- Say majority may still be here / Demo / Incomplete when HELPING applies — without inventing ETA.
- For “what machine should I buy?” start with first-shop.md, not this math.
Related: single-sku-stock.md · signals.md · roadmap.md.
Navigate
- Scenario router: INDEX.md (AIs) · index.html (browsers)
- Master path: roadmap.md · roadmap.html
- KB entry: START_HERE.md