Statadventure Optimization Lab

Find the money in your inventory, purchasing and operations, and act on it
Margin Studio
You are looking at sample data. Every number is illustrative. Load your own on Import your data before sharing anything.

Where the opportunity comes from

Sample data until you load your own. Modules overlap, so the total is an upper bound.

Stochastic (Q, r) inventory optimization

Finds the order quantity and safety stock that minimize ordering + holding + stockout cost, given demand and lead-time uncertainty, and compares to what you do today.
Columns: sku, annual_demand, monthly_demand_std, unit_cost, order_cost, lead_time_days, lead_time_std_days, current_order_qty, current_safety_stock

Cost vs. service for one SKU

Grey curve = best total cost at each safety-stock level. Orange = your policy today; blue = the optimum.

Annual cost: today vs. optimized

Each row is a SKU; the connecting line is the saving.

Where the savings are

A few SKUs usually carry most of the opportunity. Start at the top.

Policy comparison (table view)

Multi-server queue (M/M/c & G/G/c) capacity sizing

Use for dock doors, pick/pack stations, machines, inspection, customer service. Finds the staffing level that minimizes server + waiting cost and meets a wait-time target.

Annual cost by number of servers

Server cost (blue) plus cost of waiting (orange). Too few servers: waiting explodes. Too many: idle labor.

Wait vs. utilization (the hockey stick)

Average queue wait at your current server count as load rises. Run hot and small volume gains cause large delays.

Staffing heatmap: average wait by servers and volume

Outlined cells meet your wait target. Read across to see how much volume growth each staffing level absorbs.

Staffing options (table view)

Sourcing network optimization (min-cost transportation LP)

Finds the lowest total landed-cost allocation of suppliers to plants subject to supplier capacity, including duty and an added-tariff scenario. Exact solution via successive shortest paths.

Optimal supply flows

Band width = units shipped. Hover a band for the exact volume.

Landed-cost bridge

Optimal allocation (table view)

Demand forecasting with backtests & accuracy tracking

Fits naive, seasonal naive, moving average, exponential smoothing, Holt trend and Holt-Winters; tunes each on history, scores them on a held-out recent window, and picks the winner. Better forecasts mean less safety stock.
CSV columns: period, demand (one row per period, oldest first).

History, backtest & forecast

Hover for values. The shaded band is the likely range (about 80%).

Which method wins?

Table view

Holdout errors: over vs. under

Orange = forecast too high; blue = too low. A run of one colour means bias.

Seasonality heatmap

Darker = higher demand. Repeating dark columns show the seasonal pattern.

Accuracy tracking: best method on the holdout

Tracking signal = cumulative error ÷ mean absolute deviation. Beyond ±4 means the forecast is persistently biased and should be re-tuned.

Multi-product capacity: optimal mix & bottleneck pricing (linear program)

Chooses how much of each product to make to maximize contribution margin given limited hours on each resource. Reveals the true bottleneck and what one more hour on it is worth (shadow price).

Optimal plan vs. demand

Bar = units to make; black tick = demand. Short bars are products to ration.

Hours used vs. capacity

Resources that reach their tick are your bottlenecks.

Margin per bottleneck hour

Products ranked by what each scarce hour earns. Give scarce hours to the top of this list.

Optimal production plan (table view)

Resources & shadow prices

Multi-echelon inventory: risk pooling across a distribution network

Compares three ways to buffer demand uncertainty: every region holds its own safety stock, a central DC pools the upstream risk, or everything ships direct from one central stock. Savings fall as regional demand becomes more correlated.

Annual cost by network strategy

Holding cost of safety stock (blue) plus any direct-ship freight premium (orange).

Safety-stock reduction vs. correlation

The square-root law: pooling independent regions cuts buffers sharply; perfectly correlated regions gain nothing.

Strategy comparison (table view)

Reports

Build a report from your current results, then print it or save it as a PDF, download it as a file, copy a summary or email it. In the hosted Lab you can also share a link. A downloaded or shared report is a snapshot: it keeps the figures it had when you made it.
Sections

SIOP: Sales, Inventory & Operations Planning

SIOP aligns demand, inventory targets and capacity into one plan. Materials planning is part of that cycle: the plan sets the production schedule, publishes it to the MRP, and the MRP feeds material constraints back. Work through the four steps, then publish.
1 Sales review2 Inventory targets3 Operations & capacity4 Reconcile & decide5 Publish to MPS → MRP

1 · Sales: demand plan

Statistical baseline forecast (units per month) and hours per unit
Sales overrides (% adjustment per month: promotions, new contracts, lost accounts)
Scenarios: Upside = +15%, Downside = −15%. The plan below is built from the consensus demand (baseline × overrides × scenario).

2 · Inventory: targets and costs

3 · Operations: capacity and cost

Regular capacity (hours per month)

4 · Reconcile & decide

Required vs. available hours

Where demand-driven hours (orange) exceed regular capacity, the plan builds inventory ahead or uses overtime.

Demand plan vs. production plan

Production runs ahead of demand before peaks to protect service within capacity.

Projected inventory value

The optimized plan holds only the inventory it needs to meet demand within capacity.

Plan cost by strategy

Labor, overtime, holding and service penalty (late deliveries and months below safety-stock target) for the optimal plan versus level and chase strategies.

Gap register: what leadership must decide

Financial view (optimal plan)

5 · Publish & scenarios

Months 1–3 of the production plan become the 12-week master production schedule (4 weeks per month).

Materials planning (MRP): what to buy and build, when, and what is short

Explodes the production schedule through the bill of materials, nets against stock and scheduled receipts, applies lot sizes and lead times, and produces planned orders by week with exception messages. Edit the tables or import CSVs. Week 1 is the current week. The SIOP plan publishes its production schedule here, and any late components are fed back to SIOP as material constraints.
Item master: sku, description, type (Make/Buy), lead_time_weeks, lot_rule (L4L/FOQ/MOQ), lot_size, safety_stock, on_hand, unit_cost, supplier. BOM: parent, component, qty_per, scrap_pct. MPS: sku, w1…w12. Receipts: sku, week, qty. Routings: sku, work_center, hours_per_unit. Work centers: work_center, hours_per_week. With your own data loaded, the item master, open POs, open sales orders and forecasts come from the rest of the Lab; these tables then hold overrides, routings and capacity.
Item master
Bill of materials
Master production schedule (finished goods demand by week)
Scheduled receipts (open POs and production orders)
Routings (hours per unit at each work center)
Work centers (hours available per week)

Time-phased plan for one item

Projected on-hand stays above safety stock because planned receipts fill each gap.

Projected inventory value

Total value of projected on-hand across all items, including planned receipts.

Material shortages

What runs short if nothing new is ordered, whether an order placed today still arrives in time, and which finished goods each shortage blocks. Click an item for its plan and where its demand comes from.

Clear to build

How many of each finished good today's stock supports (each on its own, counting sub-assemblies that can be built), the component that limits it, and whether that covers the next 4 weeks.

Capacity by work center

Planned order releases by item and week

Darker = larger order value. Outlined cells are late: the order should already have been released, so it needs expediting.

MRP grid

Planned orders (table view)

Procurement workbench

Turns MRP planned buy orders into consolidated purchase orders by supplier, scores suppliers, analyzes spend concentration, and compares quotes and price breaks on total cost, not just unit price.

Purchase orders

Status is saved in this browser. "✨ Draft" opens the S.I. Agent with the PO details so you can review the message before sending anything.

Send approved purchase orders to NetSuite

Creates the POs you have marked Approved above as purchase orders in NetSuite through your connector service. Always preview first: the preview validates every order and shows exactly what would be created, without touching NetSuite. Needs the item master dataset (for NetSuite item and vendor ids) and write-back enabled in the connector.

Supplier scorecards

Edit supplier performance data
Each bar is the weighted score; segments show what each metric contributes.

Spend by supplier

Spend by item

Quote comparison on total cost

Total cost = material (net of payment-terms value) + freight and duty + ordering + holding and safety stock for the quoted lead time. The first quote is treated as the incumbent.

Price-break optimizer

Uses the demand, order cost and holding rate above. All-units discount: a bigger order lowers the unit price, but raises holding cost.

Shortage & excess radar

Upload an ERP inventory export. The radar projects days of supply against when new supply actually arrives, flags shortages before they hit, finds excess stock above target cover, and writes a prioritized action for every item.
Columns: sku, description, supplier, on_hand, daily_usage, open_po_qty, open_po_due_days, lead_time_days, unit_cost, criticality (A/B/C). Common ERP header names (Item, Part Number, On Hand Qty, Vendor…) are recognized automatically.

Days of supply vs. when new supply arrives

Bar = days until you run out. Black tick = when the next supply lands (open PO due date, or the lead time if nothing is on order). A bar shorter than its tick is a shortage.

Time-phased cover (next 12 weeks)

Darker = more weeks of cover. Outlined cells are projected stockouts.

Inventory value by status

How much of your working capital is healthy, at risk, short or excess.

Prioritized actions (table view)

Money lens: every dollar the Lab has found, ranked

Every recommendation with a dollar value, from every module, in one list: annual savings, one-time cash (working capital, refunds) and losses avoided (shortages and risks, at cost). Each line says whether it comes from your data, the sample, or inputs typed into a model. Tracking status comes from the Action center.

Where to find more money

Modules still running on sample data, or missing a dataset, and what loading it would find.

    Action center

    Every module's recommendation as one ranked, trackable plan. Assign owners, set dates, update status. Tracking is saved in this browser.

    Top actions by dollar impact

    Action plan

    S.I. Agent: bring your own model

    Connect your own AI model, then ask questions about your results: explanations, executive summaries, stress tests, client emails, action plans. With your own key, requests go straight from your browser to the provider you choose and never pass through Statadventure. If you pick Statadventure credits instead, they pass through the credits service, which records only token counts and amounts.
    Local models: choose OpenAI-compatible and use e.g. http://localhost:11434/v1 for Ollama (start it with OLLAMA_ORIGINS=* so the browser may connect). Keys entered in a browser are visible to that browser; for shared or production use, point the base URL at your own proxy.
    Preview exactly what is sent with each question
    Ask S.I. Agent anything about the current results. Try a suggestion above.

    Missions: let S.I. Agent work toward a goal

    Give the agent a goal. It plans, reads your results, runs simulations and what-ifs, tests its own ideas, and reports back with exact settings. It can only change your model after you approve each change, can never touch your ERP, files, settings or keys, and you can undo everything it changed. Uses the connection and confirmation above.

    Supplier confirmations

    Ask each supplier to confirm its open purchase order lines: the date it will ship or deliver and the quantity, or that it cannot supply a line. The plan uses the answers at once: the Replenishment planner, Predict & protect and Materials planning read the confirmed date and quantity instead of the ERP's due date, so a late or short answer shows up here as a stock-out risk, with the order the planner suggests, the day the supplier gives it.

    By supplier

    Add each supplier's e-mail once; it is saved with the workspace. A request covers the lines not answered yet.

    Lines

    To record a reply that came by e-mail or phone, choose the answer; for a new date or quantity, then change them. "Plan" shows what the answer does to the plan.

    S&OP cycle: the monthly routine

    The SIOP page is the plan; this page is the meeting rhythm around it. Each month runs five steps, from closing the data to the executive meeting. Give each step an owner and a date, use the figures shown for each meeting, log every decision with an owner, and send the meeting pack before the executive meeting. Open decisions can be brought forward to the next month.

    The five steps

    What leadership must decide

    From the SIOP plan's gaps, then the most valuable open actions. Log the ones you take to the meeting.

    Decisions log

    Meeting pack

    Every step's status, the figures for each meeting, the decisions to make and the log, as one document (Markdown, readable as plain text) to send before the executive meeting.

    Customize with AI

    Describe how you want the Lab to work for you, in your own words. AI turns it into a customization: your own names for pages, pages hidden from the menus, the page that opens first, a dashboard of the figures you care about, a note for your team and quick questions for S.I. Agent. The Lab checks every change, shows it to you first and changes nothing until you press Apply. You can undo it at any time. This never changes the Lab's code or your data.
    Paste an answer from another AI

    Change the code itself

    For changes settings cannot make (a new calculation, a new page, a different layout) in your own copy of the Lab. Describe the change, copy the prompt, and give it to an AI coding assistant such as Claude Code opened in the Lab's folder. The prompt tells it how the Lab is built and to test the change before finishing. Review what it changes and keep a backup of the folder.
    
      
    ?

    Account information

    Stored in this browser only. There is no sign-in: this profile personalizes the interface and reports.

    Preferences

    Logo preview
    AI provider and model settings are in the S.I. Agent tab.

    Privacy and local data

    Your profile, settings and workspace live in this browser's storage. Nothing is sent to Statadventure. See the Data links tab for backups and a list of everything stored.

    AI credits

    Use S.I. Agent without your own API key. Usage is metered against a daily and a weekly allowance that reset on a schedule. Extra credits can be bought any time and never reset. Your questions pass through the credits service to the model provider; only token counts and amounts are recorded, never your text. Choose "Statadventure credits" as the provider on the S.I. Agent tab.

    Buy credits

    Recent usage

    Plans

    Example plans and prices. Edit PLANS in js/settings.js. Upgrading opens your own payment link; this app never sees card details.

    Billing details

    Payment method and invoices

    Card numbers are entered only on your payment provider's own page. They are never typed into or stored by this app.
    Billing configuration (administrator)
    Paste the https:// links from your payment provider (for example Stripe Payment Links and the Stripe customer portal). They power the Upgrade and Manage buttons above.
    How to connect your data (read this first)
    Connector service: live data from your ERP, inventory app, store, database or spreadsheet (26 pre-built connections)
    A small service you run yourself holds the ERP or database credentials, signs in, pages through results, normalizes dates and serves the same six datasets to this app: items, stock by location, open POs, PO history, sales history and open sales orders. Pre-built for 11 ERPs (NetSuite, Dynamics 365 Business Central and Finance & Supply Chain, QuickBooks Online, SAP Business One, Sage Intacct, Epicor Kinetic, Acumatica, SYSPRO, Odoo, Spire), inventory apps (Fishbowl, Katana, Cin7 Core, Unleashed), sales channels (Shopify, Amazon), databases (SQL Server with ready-made queries for Prophet 21, Sage 100 and SYSPRO; PostgreSQL; MySQL; SQLite), data warehouses (Snowflake, BigQuery, Databricks) and spreadsheets (Excel on SharePoint or OneDrive, Google Sheets). After the first load it reads only new history. It can sync on a schedule and report what changed (stock-outs, sharp drops, overdue POs) to the Live data indicator in the top bar. Nothing is sent to Statadventure. It is read-only unless you explicitly enable NetSuite write-back in its config.
    1. Copy connector/config.example.json to connector/config.json, add your system under "sources" (examples below), set the secret environment variables and a CONNECTOR_API_KEY (16+ characters).
    2. Check the credentials: python3 connector/server.py --check-source erp (or --check for NetSuite column discovery).
    3. Start it: python3 connector/server.py. Then enter its address and key below.
    NetSuite export kit: queries and saved-search recipes

    Connected data sources

    Each link feeds one module from a CSV or JSON file at a URL, including Google Sheets published to the web and REST endpoints. Links on a schedule refresh while this page is open.

    Add a data link

    Tip: point this at a file that a scheduled export keeps fresh. See "How to connect your data" above for recipes and the columns each module needs.
    Requests go from your browser straight to the URL. Servers must allow browser access (CORS). Google Sheets: share as "Anyone with the link can view". ERP systems: schedule an export to a file URL, or put a small gateway (Zapier, Power Automate, an API proxy) in front. Imports replace the module's current data and are validated for required columns first.

    Sync log

    Workspace data

    Back up everything you have entered (tables, datasets and control settings) as a file, restore it later or on another computer, or autosave it in this browser.

    Stored in this browser

    Data readiness & connected data

    Plans look right and still fail when lead times are stale, costs are missing, BOMs are wrong or master data is inconsistent. Connect your ERP datasets (Settings → Data links), then audit them here before relying on any recommendation.

    Readiness by area

    Green 85+, amber 65–84, red below. Each finding lowers the score by severity and share of records affected.

    Lead-time reality check

    Orange = lead time in your item master; blue = average from received POs. A longer blue dot means orders are being placed too late.

    Supplier on-time delivery

    ABC / XYZ segmentation

    A = top 80% of annual value. X = steady, Y = variable, Z = erratic (coefficient of variation ≤0.5, ≤1, above).

    Findings

    Build the models from connected data

    Raw ERP datasets are turned into model inputs here. Assumptions: order cost defaults to $75 per PO; criticality (A/B/C) comes from annual value; actual lead times replace stated ones when 3+ received POs exist; current order quantity is preferred stock minus reorder point. Each button replaces that module's current data.

    Pilot summary

    A privacy-safe summary (counts, scores and finding titles only; no SKUs, suppliers or customers) to share when validating the product with a prospect.

    Monte Carlo simulation: test decisions against thousands of possible futures

    The other tabs assume averages. Real operations face random demand, late suppliers, tariff announcements and breakdowns. This tab simulates them, compares your options on the same futures, and ends with a ranked list of exactly what to change, what it is worth (with a range) and how sure the simulation is.

    Decision brief

    Press Run all simulations. Your decisions appear here, ranked by value.

    1. Inventory: best reorder point and order quantity, tested day by day

    Each SKU is simulated for many random years with variable daily demand and variable supplier lead times. A search finds the reorder point and order quantity with the lowest simulated cost (or the lowest cost that still meets your fill rate), then judges it on fresh futures it never saw, so the savings are not flattered.

    Chance cost is below a level

    Simulation vs formula

    2. Sourcing risk: how concentrated should your suppliers be?

    Simulates tariff announcements, supplier outages and demand swings against fixed supplier shares. Spot purchases cover shortfalls at a premium; anything still short is penalized. Each cap on single-supplier share is a different plan; the best one trades expected cost against bad-year cost.

    Cost versus concentration cap

    Chance cost is below a level

    3. Production risk: what random demand and breakdowns do to margin

    Runs the Product mix model through random demand and machine downtime. Shows how much a fixed plan loses against re-planning each period, and what an extra hour of the bottleneck is really worth on average.
    Simulation results are estimates under the assumptions above (independent lead times, the chosen demand shape, no learning or price response). Rerun with several seeds before a large commitment, and pilot any change on a few SKUs first.

    Factory redesign: rebuild the system from first principles

    Do the steps in this order, and do not skip ahead to automation. 1. Question every requirement (each must have a named owner). 2. Delete steps and parts. 3. Simplify what remains. 4. Accelerate to takt time. 5. Automate selectively, only what survived. Then integrate suppliers and iterate in two-week experiments. The roadmap below states the exact change, what it saves per unit and per year, what it costs and how fast it pays back. Edit the process map and parts list to match your product; untick anything you disagree with and everything recalculates.

    Step 1. Question every requirement

    The redesign roadmap

    Each row is one change. Values are computed against the full plan: what you would lose if you dropped it (ticked) or gain if you added it (unticked).

    Where the cost goes

    Process today

    Bar = minutes per unit. Tick = time allowed by takt. Number = utilization. Green value-add, blue necessary non-value, orange waste.

    Process redesigned

    Iterate rapidly

    A redesign is a series of small tested bets, not one big plan. Save each accepted design as a version, run the experiments below (about two weeks each), then tick what passed, untick what failed, and save the next version.

    Two-week experiments for the plan

    Process map and parts list (edit to match your product)

    Process steps

    Parts (bill of materials)

    Step time here excludes part-attach time; the engine adds it from the parts installed at that step. "Installed at step" must match a step name exactly.

    Industry data: U.S. big-ticket manufacturers and KPIs

    Large companies first, then mid-size, grouped by the kind of big-ticket product they make, with where they build it, plus a library of manufacturing KPIs with formulas. Sites are the principal production sites we could identify, not a complete list. Rows marked web were checked against a filing, company page or trade press; compiled rows come from established public information and should be confirmed before you rely on them. The full database (SQLite, CSV, JSON) is in the db folder.

    Replenishment planner: what to order, move and clear for every item at every location

    Each item-location gets its own forecast (the method that did best on the last months it had not seen), an ABC/XYZ class, a service level, safety stock from forecast error and lead-time variability, a reorder point and an order-up-to level. Orders are suggested when stock plus open orders falls to the reorder point, rounded to MOQ and order multiples; spare stock at another location is moved first.

    Suggested purchase orders by supplier

    Containers

    Transfers between locations

    12-month supply plan

    Every item rolled forward month by month with this policy: today's suggested orders, open POs on their due dates, then a new order whenever stock plus open orders no longer covers the lead time plus a month. Share each supplier's purchase forecast with them so they can reserve capacity, and give finance the purchase cash plan.

    Purchase forecast by supplier

    Planning inputs: events, product lifecycle and supplier terms

    Demand events and promotions

    A future promotion lifts the forecast by its % in its months (use a negative % for a planned cut). A past one-off, such as a project order or a promotion that will not repeat, is replaced by the item's normal month so it does not inflate the forecast. Leave the item blank for every item; months as YYYY-MM.

    Product lifecycle

    New items use a like item's forecast (scaled by %), blending to their own as they build 12 months of history. Phase out items are never reordered; stock above the demand until the last month (YYYY-MM, default 3 months) is excess and open POs become cancellation candidates.

    Supplier terms

    When an order is below a supplier's minimum order value or free-freight threshold, items from that supplier that will need ordering within the pull-forward window (default 30 days) are added, soonest first. Ships in sets the container a supplier fills, for the container check on its orders.

    Policy

    Service level by class

    Rows: A, B, C by annual value (top 80%, next 15%, last 5%). Columns: X, Y, Z by forecast error relative to demand (steady, variable, erratic).
    XYZ
    A
    B
    C

    What service costs

    Predict & protect: see stock-outs, demand shifts and supplier trouble before they happen

    Projects stock for every item at every location day by day, using the forecast, open purchase orders with their due dates, transfers and the suggested orders. It watches last month's sales against what the model expected, scores suppliers on delivery and dependence, lets you test a supplier delay or a demand surge, and ranks every opportunity with the reason. The same results are available to the S.I. Agent.

    Opportunities, ranked by dollar impact

    Disruption what-if

    Supplier risk

    Score out of 100 from on-time delivery and lead-time variability (from your PO receipts), recent lead-time drift, share of spend and overdue lines.

    Cash you can unlock

    Working capital ahead

    Tariff recovery: IEEPA refund claims and surcharge true-up

    On February 20, 2026 the Supreme Court ruled the IEEPA tariffs unlawful. Refunds of the duty you paid are claimed through CBP's CAPE portal in ACE; they are not automatic, and the first phase covers entries not yet liquidated or no more than 80 days past liquidation. If you billed customers a tariff surcharge, they may ask for their share. This page lists which entries to claim and by when, what each customer paid, a fair share of the refund, and any surcharge still billed after the tariff ended. Load your customs entries (from your broker or ACE) and surcharge invoice lines on Import your data. Planning aid only, not legal or customs advice: confirm windows and contract terms with your broker or counsel.

    No customs entries or surcharges loaded yet. Load them on Import your data, or press Load sample data.

    Customers: what they paid and a fair share of the refund

    Fair share = the customer's share of IEEPA surcharge billed while the tariff applied × the refund you expect, never more than they paid, plus any IEEPA surcharge billed after it ended. Set each customer's contract terms to see what is owed by contract.

    Draft letter to

    Edit before sending; have counsel review if your contracts are unclear.

    Customs entries: claim now, and by when

    Lists the entries you can claim now. Check the columns against CBP's current CAPE upload template, or give the list to your broker.

    Surcharges billed by tariff program

    Program is read from the surcharge description: IEEPA (also "fentanyl" or "reciprocal"), Section 301, Section 232, or unlabelled. Unlabelled surcharges are not counted toward any program: label them in your invoice export to include them.

    Stock/requirements list: everything that affects one material, in date order

    For the chosen material: today's stock, every requirement (from the production schedule and from planned orders of parent items), every receipt (open orders and planned orders), and the running available quantity after each one. Exception messages flag shortages, stock below safety, late releases, and open orders that should be moved in, pushed out or cancelled, each with a suggested date. Click a parent item to follow the requirement upstream. It uses the same plan as Materials planning.

    Projected available quantity

    All materials with exceptions

    Sorted by shortages first. Click a material to open its list.

    Dashboards

    Data guide: what the Lab needs, and what each file unlocks

    Load files on as Excel or CSV, first row = column names. Column names are not case-sensitive and common ERP names are recognized. Start with the core files; every file after that sharpens the results or opens another page.

    Rules that apply to every file

    • Same item number everywhere. Files link by sku (part or item number), so use the same one in every file.
    • One row per line, not per document: one row per sales line, PO line or entry.
    • Dates as YYYY-MM-DD work best; Excel date cells are converted automatically.
    • Same units throughout: quantities in the stocking unit, costs per unit (not per line).
    • Excel (.xlsx) or CSV, up to 25 MB a file; each sheet of a workbook is read as its own file. Save older .xls files as .xlsx first.
    • Your data stays in this browser and is saved automatically. Download a backup from Settings from time to time.

    What each page needs

    “Needs” is the minimum for the page to use your numbers; “Better with” adds accuracy or detail. ✓ means loaded.

    Typed into the page, not loaded from a file

    Load it automatically

    Instead of exporting files, connect your systems through the connector service: 26 pre-built connections covering 11 ERPs (NetSuite, Dynamics 365 Business Central and Finance & Supply Chain, QuickBooks Online, SAP Business One, Sage Intacct, Epicor Kinetic, Acumatica, SYSPRO, Odoo, Spire), inventory apps (Fishbowl, Katana, Cin7 Core, Unleashed), Shopify and Amazon, SQL Server (with ready-made queries for Prophet 21, Sage 100 and SYSPRO), PostgreSQL, MySQL, Snowflake, BigQuery, Databricks, Excel on SharePoint or OneDrive and Google Sheets. Several can feed one plan, for example stock from Fishbowl and sales from QuickBooks. Or point a data link at a shared sheet or a scheduled export. Both are set up in and refresh the same datasets listed above.

    Import your data

    Start with one file: an inventory or item export from your ERP, as an Excel workbook or CSV. Drop it below and the Lab recognizes what it is from its columns, shows you a preview, and loads it with one click. Everything stays in this browser. For a daily refresh instead of uploads, use Settings → Data links. Not sure what to load? See the .
    Drop Excel or CSV files hereor
    Paste from a spreadsheet instead

    Your datasets

    Load the highlighted dataset next. Each template shows the exact columns; common ERP column names (Item, On Hand Qty, Vendor and similar) are recognized automatically.

    Start here: tailor the Lab to your business

    First time here? A 3-minute tour shows you each part of the Lab on the real screens.
    About 20 short questions. Every one is optional, answers stay in this browser, and the result is a module order, a data path, a learning path and a prioritized finance checklist. Your profile is also shared with S.I. Agent so its answers fit you.

    Discovery interview: tell us how your operation really works

    A deeper conversation than the questions above: about 55 questions in 10 short sections, or 28 key questions in about 15 minutes. Each says why it is asked and what it changes in the Lab. Answer in your own words; skip anything. Everything stays in this browser, and your key answers go to S.I. Agent so its advice fits you. Prefer to talk it through? Let S.I. Agent interview you one question at a time.

    Finance checklist: improve cash, margin and cost in order

    A phased program from foundations to strategic moves. Each item says why it matters, the steps, the KPI and its formula, where to do it in the Lab, and (when your data supports it) a dollar estimate. Estimates overlap and are ceilings, not forecasts. Progress is saved in this browser.

    Working-capital calculator

    Enter annual figures from your income statement and balance sheet. Everything is calculated locally.

    Learning hub

    Plain-language guides on inventory, planning, procurement, tariffs and working capital, tied to the Lab's tools. Search anything. If the guides do not answer it, ask the AI: your question goes with the most relevant guide excerpts and your profile.
    Opens S.I. Agent with your question and the matching guides.

    Metrics reference

    Every metric the Lab computes, in one place: what it means, the equation, the variables, how to read it, the assumptions behind it, which function implements it, and its current value from your data. Search by name, symbol or concept.

    Inventory: continuous-review (Q, r) with normal demand

    Daily demand d = D/365,  daily σd = σmonth/√30.4
    Lead-time demand σLT = √( L·σd² + d²·σL² )
    Safety stock SS = z·σLT,   reorder point r = d·L + SS
    Loss function G(z) = φ(z) − z·(1 − Φ(z))      (expected shortage per cycle = σLT·G(z))
    Total cost TC(Q,z) = S·D/Q + h·(Q/2 + z·σLT) + π·(D/Q)·σLT·G(z)
    Optimality:  Q* = √( 2D·(S + π·σLT·G(z)) / h ),   1 − Φ(z*) = h·Q*/(π·D)
    Fill rate = 1 − σLT·G(z)/Q
    What it delivers: lower total cost at equal or better fill rate, by right-sizing both order quantity and buffer SKU by SKU. Typical gain comes from over-ordered slow movers and under-buffered volatile ones.

    Queueing: Erlang C and Allen–Cunneen

    Offered load a = λ/μ,  utilization ρ = a/c  (must be < 1)
    Erlang B recursion: B(0)=1,  B(k) = a·B(k−1) / (k + a·B(k−1))
    Erlang C (probability of waiting): C = B(c) / (1 − ρ·(1 − B(c)))
    M/M/c wait:  Wq = C / (cμ − λ)
    G/G/c (Allen–Cunneen):  Wq ≈ Wq(M/M/c) · (ca² + cs²) / 2
    Little's Law: Lq = λ·Wq,   WIP L = λ·(Wq + 1/μ)
    Tail (approx): P(Wait > t) ≈ C · exp( −t · C / Wq )
    Cost per hour = c·(server cost) + λ·Wq·(waiting cost)
    What it delivers: the staffing/equipment level that minimizes total cost, and the value of reducing variability (standardized work, scheduling arrivals), which cuts waiting without adding capacity.

    Sourcing: transportation problem

    minimize   Σi Σj  cij · xij
    subject to Σj xij ≤ capacity_i        (each supplier)
               Σi xij  = demand_j         (each plant)
               xij ≥ 0
    cij = price_i · (1 + duty_i + added tariff_i) + freight_ij
    Solved exactly as min-cost flow by successive shortest paths (SPFA); a penalty supplier absorbs any unmet demand.
    What it delivers: the cheapest feasible supplier mix under any tariff scenario, and the dollar value of re-sourcing versus staying put.

    Forecasting

    Naive: ŷt = yt−1       Seasonal naive: ŷt = yt−m       Moving average: mean of last k
    SES:   lt = α·yt + (1−α)·lt−1                       forecast = lt
    Holt:  adds trend bt = β(lt − lt−1) + (1−β)bt−1     forecast = lt + h·bt
    Holt-Winters (additive): adds seasonal st = γ(yt − lt) + (1−γ)st−m ;  forecast = lt + h·bt + st+h−m
    Parameters tuned by grid search on training window (min squared error); scored on holdout:
    WAPE = Σ|e| / Σy,   bias = Σ(ŷ − y) / Σy,   tracking signal = Σe / MAD
    Safety stock scales with forecast-error σ, so SS reduction ≈ 1 − RMSE(best)/RMSE(naive)

    Product mix (linear program)

    maximize   Σj mj·xj
    subject to Σj aij·xj ≤ Ri      (hours on resource i)
               xj ≤ demandj,   xj ≥ 0
    Solved with the primal simplex method. Dual values y*i are shadow prices:
    y*i = extra contribution margin from one more hour on resource i (zero if not a bottleneck).

    SIOP aggregate plan (linear program)

    maximize   Σ (R − cost) · x(f, k, t, u)           x = units of family f made in month t (k: regular / overtime) to serve demand of month u
    cost  = hours/unit × labor rate × (1 + overtime premium if k = overtime)
            + holding × unit cost × (u − t)             if u ≥ t   (made early, held in stock)
            + late penalty × price × (t − u)            if u < t   (made late, backlogged)
    subject to Σ x(f, ·, ·, u) + opening stock used ≤ demand(f, u)       (+ safety-stock build in month 1)
               Σ hours/unit × x(·, regular, t, ·) ≤ regular hours(t);  Σ … x(·, overtime, t, ·) ≤ overtime hours(t)
    Solved exactly with the simplex method. Compared with level (constant output) and chase (output follows demand) plans.

    Materials requirements planning

    Low-level code: each item is planned after every parent that uses it.
    For each week t:  net = max(0, gross + safety stock − (projected on hand + scheduled receipt))
    planned receipt = lot-sized(net)  [L4L: net;  FOQ: ceil(net / lot) × lot;  MOQ: max(net, lot)]
    projected on hand = on hand + receipts + planned receipt − gross
    planned release week = t − lead time   (before week 1 = late, flagged for expediting)
    component gross requirement = Σ parent planned releases × quantity per

    Procurement

    Score = Σ weight × metric, each metric scaled 0–100: on-time %, quality = 100 − 10 × defect %,
    price = 100 − 3 × (index − 90), lead-time stability = 100 − 4 × variability %, responsiveness = (rating − 1)/4
    Quote total = D·p·(1 − r·terms/365) + D·(freight + p·duty) + S·D/Q + h·landed·(Q/2 + z·σ·√L)
    Price breaks (all-units): TC(Q) = D·p(Q) + S·D/Q + h·p(Q)·Q/2, minimized over each break quantity and its EOQ
    Spend concentration: HHI = Σ (supplier share)²

    Shortage & excess radar

    d = daily usage × (1 + scenario %)          days of supply = on hand / d
    next supply arrives at day t = open-PO due date (if on order) else lead time L (order placed today)
    Shortage days = max(0, t − days of supply);  shortage units = d × shortage days
    Status: Short if shortage days > 0;  At risk if (on hand + on order)/d < L + buffer;  Excess if (on hand + on order)/d > excess threshold
    Recommended order = max(0, d·(L + target cover) − on hand − on order);  excess units = on hand + on order − d·target cover

    Multi-echelon risk pooling

    σpool² = (1−ρ)·Σσi² + ρ·(Σσi)²              (regional demand correlation ρ)
    Regions hold all buffer:   SS = z · Σσi · √(Lc + Lr)
    Central pooling:           SS = z · Σσi · √Lr  +  z · σpool · √Lc
    Full centralization:       SS = z · σpool · √(Lc + Ld)  + freight premium · annual demand

    Planning models using stated assumptions (normal demand, Poisson-like arrivals with variability adjustment). Validate inputs against your own data before acting. Not legal, customs, or tax advice. © Statadventure