{
  "schema": "leumas.docs.page/1",
  "id": "adapter:domain/inventory-planner",
  "slug": "adapters/domain/inventory-planner",
  "kind": "capabilities",
  "bucket": "package",
  "title": "inventory-planner",
  "name": "Inventory Planner",
  "eyebrow": null,
  "chip": null,
  "summary": "Inventory, stock-control and supply-chain planning metrics pack for operations, retail, warehouse and procurement teams: compute the Reorder Point (reorderPoint) from demand rate, lead time and...",
  "keywords": [
    "inventory-planner",
    "warehouse",
    "procurement",
    "reorderpoint",
    "safetystock",
    "lead-time",
    "king",
    "service-level"
  ],
  "audience": "both",
  "funnel": {
    "product": null,
    "cta": null
  },
  "body": "# inventory-planner\n\nInventory & supply-chain planning intelligence pack. Deterministic operations-research math (reorder\npoint, safety stock, EOQ, ABC, turnover, stockout risk, par levels) for ops, retail, warehouse and\nprocurement teams, with an optional AI stocking-policy layer on the ABC tool that activates only when\na model is reachable (and silently falls back to the heuristic core otherwise).\n\n**Planning estimates only** — validate against your own demand data and supplier terms.\n\n## Tools\n\n| Tool | Args | Does |\n|---|---|---|\n| `reorderPoint` | `{demand, leadTime, safety?}` | Reorder point = demand×leadTime + safety. `safety` is units, or `{serviceLevel, demandStdDev}` to derive it. |\n| `safetyStock` | `{serviceLevel, demandStdDev, leadTime, leadTimeStdDev?}` | z(SL)×σ×√leadTime; combined demand+lead-time form when `leadTimeStdDev` is given. |\n| `eoq` | `{demand, orderCost, holdCost}` | Wilson EOQ + orders/year, cycle days, minimized total annual cost. |\n| `abcAnalysis` | `{items:[{name,annualValue}], options?}` | Pareto A/B/C classification + per-class policy. `options.advise` adds AI advice. |\n| `turnover` | `{cogs, avgInventory \\| beginning+ending}` | Inventory turnover + days-on-hand + grade. |\n| `stockoutRisk` | `{meanDemand, demandStdDev, leadTime, onHand}` | P(stockout) during lead time under a normal-demand model + implied service level. |\n| `parLevel` | `{demand, leadTime, reviewPeriod, safetyStock? \\| demandStdDev}` | Min / par (order-up-to) levels for periodic review. |\n\nOnly `abcAnalysis` has an AI path; its result is tagged `{ mode: 'heuristic' | 'llm' }`.\n\nA self-contained normal CDF / inverse-CDF converts service level <-> z-score, so no stats library is needed.\n\n## Example\n\n```js\nimport pack from './index.js';\nawait pack.adapters.eoq({ demand: 12000, orderCost: 80, holdCost: 3 });\n// { eoq≈800, ordersPerYear:15, cycleDays≈24.3, totalAnnualCost≈2400, … }\n\nawait pack.adapters.reorderPoint({ demand: 50, leadTime: 7, safety: { serviceLevel: 95, demandStdDev: 12 } });\n// { reorderPoint≈402.2, leadTimeDemand:350, safetyStock≈52.2, safetyBasis:'serviceLevel 95% (z=1.645)' }\n\nawait pack.adapters.stockoutRisk({ meanDemand: 50, demandStdDev: 12, leadTime: 7, onHand: 380 });\n// { stockoutRiskPct, serviceLevelPct, zScore, grade, … }\n```\n\n## DRY boundaries\n\n- **`numbers`** owns generic scalar math and series stats; **`statistics`** owns general\n  descriptive/inferential statistics; **`finance`** owns time-value-of-money. This pack owns\n  *inventory-science composition* — EOQ, reorder point, safety stock, ABC/Pareto, turnover,\n  service-level stockout risk and par levels — which none of those own.\n- Self-contained: the only cross-pack import is `../_shared/llm.js` for the optional AI layer.\n\n## Hybrid intelligence\n\nEvery deterministic core runs offline with no model. `abcAnalysis` accepts `options.advise:true` to\nrequest LLM stocking-policy advice; with no model configured/reachable it returns the exact same\nclassification tagged `mode:'heuristic'`. A down model never throws.\n",
  "source": {
    "path": "shared/engines/adapters/domain/inventory-planner/README.md",
    "blobSha": "",
    "commit": "",
    "committedAt": "",
    "provenance": "no-git",
    "bytes": 3281,
    "hash": "9df42a5bdac75f1132d87edbc233615c3f8dde4b"
  },
  "urls": {
    "html": "/p/adapters/domain/inventory-planner",
    "json": "/docs/adapters/domain/inventory-planner.json",
    "md": "/docs/adapters/domain/inventory-planner.md"
  },
  "links": {
    "composes": [],
    "usedBy": [],
    "product": [],
    "howTo": [],
    "skills": []
  }
}
