Skip to content

Demand Agent (Profasee: Bruno)

Forecasts demand, flags stockouts before they tank campaigns, and recommends reorder timing and quantity. The engine for this already exists; this agent is a thin conversational + brief layer over it.

Already built

  • forecasts/forecast_all_lifecycle.py: per-ASIN lifecycle demand forecast (Chronos), with stock-aware demand uncensoring (see Forecasting ยง11).
  • scripts/compute_po_recommendations.py + forecasts/po_recommender.py: reorder recommendations.
  • forecasts/score_run.py + forecasts/calibrate.py: self-healing calibration (scores forecasts vs actuals, adjusts).
  • Outputs land in forecasts.predictions, forecasts.po_recommendations, forecasts.scores.

Reads

  • forecasts.predictions, forecasts.po_recommendations (its own outputs)
  • raw.fba_restock, raw.awd_inventory, raw.inventory_ledger_summary (current stock + days of supply)
  • agg.sales_daily_unified (actual demand), raw.purchase_orders (open POs), raw.product_skus

Recommends (for the brief)

  • Stockout risk: ASINs projected to hit zero within the lead-time window, with days-of-supply and the date.
  • Reorder now: SKUs that should be ordered this cycle, quantity, and the cost of waiting (lost units at forecast demand).
  • Overstock: capital tied up in slow movers.

Actions (later, action mode)

Demand mostly informs the other agents rather than writing to Amazon. Its one direct action is creating/flagging PO recommendations as "approved" for the human's ordering workflow. The high-value coordination is outbound: it tells PPC to pause ads on stockout-risk ASINs.

Guardrails

Read-heavy, low write risk. Standard reasoning-log + sourcing rules apply. Every stockout/reorder claim cites the ASIN, the forecast run id, and the days-of-supply source.

First task in the brief

Surface the top stockout risks and the reorder list from the latest forecasts.runs, each line with ASIN, days of supply, forecast demand, and the dollar cost of stocking out. This is mostly a query plus formatting.