Roast ops

Air-traffic desk for this roastery. Sim data is fake. Import replaces prices. UPS and Stripe stay outside this page.

Client desk · Health · Onboarding JSON · Margins · Ready

Write token

Leave blank in sim. When OPS_IMPORT_TOKEN is set, posts must send it as x-ops-token.

What is still real-only

Import client prices

Button: POST /ops/import-prices. CSV or JSON. Rows are marked source=import and survive the next sim seed. This app does not scrape OrderSpace.

Add a client

POST /ops/accounts. Blank net days means Immediate (0).

Vendor bill

POST /ops/vendor-bills. Blank net days means Immediate. POST /vendor-bills stays closed.

Intake an order

POST /ops/intake. House SKUs map to packer SKUs. Missing prices come from the client contract. Missing terms become Immediate, or the contract's net days when the client is already saved.

Clients

NameKindTermsSourcePrices

Payables

VendorOpen centsDue

Margins

GET /ops/margins reads view_profit_margin_analysis. Drop-ship adjusted green is the green lot cost. Roast shrink is not applied. The $3/lb Colombia green figure is a simulated placeholder until a quote arrives. This desk does not write that view. POST /orders stays closed.

SKU Green $/lb Adjusted green COGS Wholesale Net / lb Margin %

Orders

AccountStatusFulfillmentDue

Intakes