High-altitude master view of the Bid Center — the system that runs between annual NetSuite pricing locks. NS holds locked annual prices; bid season runs all year between annual rolls. The Bid Center accumulates customer-specific pricing work (127 commercial items × 8 brands, 14 USDA commodity items, 69 active customers, 4 regions, 44 external bids). Three intake paths feed it: Path 1 email intake at bids@ai-globalfoodsolutions.co; Path 2 direct chat where Mike kicks off a review in chat; Path 3 July 1 rollover which converts a year of accumulated work into NS named price lists, customer by customer. The trace thread across the entire pillar is customer + SY-version (e.g. ACC Distributors / SY2627-v2.5) — analogous to the SO PO# thread. Live tool: gfs-pricing.pages.dev.
bids@ai-globalfoodsolutions.co (HITL on auto-customer-match). Path 2 direct chat (Mike kicks off). Path 3 July 1 rollover (annual flip).src/email.ts parses → proposed_actions row0 5 1 7 * or manual /api/bid/rollover/startcustomer_id + sy_version (e.g. ACC Distributors / SY2627-v2.5)customers · name_synonyms.json · bid_customers · bid_quote_versionsCustomer-Pricing/Prompts/. Each is a contract.commercial_items.json (127 items × 8 brands) · commercial_regional_prices.json (4 regions) · per-customer customer.json · External_Bids/bids_log.json (44 bids)bid_customers · bid_items · bid_regional_prices · bid_external_pipeline · bid_reviews · bid_programs · bid_price_snapshots · bid_quote_versionsPOST /api/ns/push/named-price-list?preview=false&confirm=truecustomer_id · X-Edit-Tokenevents.bid.namedlist_pushed per customer · events.bid.rollover_completed for the cohort| kind | name | purpose |
|---|---|---|
| Mailbox | bids@ai-globalfoodsolutions.co | Path 1 inbound bid intake |
| File (folder) | Customer-Pricing/commercial_items.json | 127 commercial items × 8 brands |
| File (folder) | Customer-Pricing/commercial_regional_prices.json | 4-region pricing grid |
| File (folder) | Customer-Pricing/<customer>/customer.json | per-customer config + SY-version state (69 customers) |
| File (folder) | Customer-Pricing/External_Bids/bids_log.json | external bid pipeline log (44 bids) |
| File (folder) | Customer-Pricing/Prompts/ | 11 skill workflow definitions |
| File (output) | Customer-Pricing/<customer>/quotes/<sy_version>.docx | per-customer per-SY quote |
| File (output) | Customer-Pricing/STATUS.json | per-customer freshness metadata |
| D1 table | bid_customers | normalized customer identity (69 active) |
| D1 table | bid_items | 127 items × 8 brands mirror |
| D1 table | bid_regional_prices | 4-region grid |
| D1 table | bid_external_pipeline | 44 external bids tracked |
| D1 table | bid_reviews | 23 .md analyses linked |
| D1 table | bid_programs | HPS MAP GPO allowance program (SY2526 / SY2627) |
| D1 table | bid_price_snapshots | line-level price snapshot per (customer, SY-version) |
| D1 table | bid_quote_versions | SY-version per customer · is_latest=1 drives rollover |
| Endpoint | POST /api/bid/rollover/start | manual trigger for the Jul 1 path |
| Endpoint | POST /api/ns/push/named-price-list | NS write-back per customer (preview + confirm) |
| Endpoint | POST /api/proposed-actions/bulk-decide | cohort approve / reject / subset |
| Workflow | prepare_next_school_year | Path 3 driver |
| Durable Object | PushMutexDO | prevents concurrent NS writes per customer |
| Code path | src/email.ts | Path 1 inbound email pipeline (incl. bids@) |
| Live tool | https://gfs-pricing.pages.dev | the visual Bid Center dashboard |