B5875 NYC DOE bid submission lifecycle

Bid intake → pricing → spec mapping → submission packet → award · 11 phases · due 2026-06-03

B5875 is the NYC Department of Education Food Distribution bid. As of 2026-05-23 the platform tracks 246 specs through Amendment 13, 6 PPI tabs, GFS Price Quotes, Sept 2026 menus (214 rows, 5 core menus, K-8+HS deduped, 100% dated), and 34 Fall 2026 recipes at gfs-nycdoe-hub.pages.dev. This diagram is the canonical lifecycle for bid submission — every amendment re-triggers pricing review.

Amendment 13 live 246 specs tracked QBL 2026-06-03

Lifecycle — 11 phases, intake to contract

B5875 lifecycle — intake → parse → spec map → cost → propose → HITL → packet → submit → amendment → award → contract Pre-submission Submission Post-submit 01 / Intake bid PDF + Excel Dropbox / email EXTERNAL · R2://bids/B5875/ 02 / Parse extract line items qty · deadlines · reqs CLOUD · document_converter 03 / Spec mapping bid_lines.item_code → spec_items + assemblies DATABASE · flag deviations 04 / Cost build pricing_master + vendor_costs → margin/line DATABASE · pillar 1 05 / Price proposal AI suggests honoring margin floors CLOUD · /bid-command-center 06 / HITL approval every line price stages as proposed_action SECURITY · risk 3 07 / Submission packet bid_lines + PPI tabs + Price Quotes + recipes BACKEND · bundle 08 / Submit NYC DOE portal manual today (STUB) EXTERNAL · QBL 2026-06-03 09 / Amendment arrives incremental updates currently at Amend 13 MESSAGEBUS · re-trigger 10 / Award notification workflow_definitions .bid_award_notification BACKEND · risk 4 11 / Contract convert to customer_programs rows for the SY DATABASE · D1 Workflow contracts on the substrate bid_amendment_arrives risk 3 · fan_out 3 BACKEND · 1 real / 2 stub bid_price_update risk 3 · fan_out 7 (canonical) BACKEND · 1 real / 6 stub bid_award_notification risk 4 · fan_out 4 BACKEND · 1 real / 3 stub draft_quote risk 3 · fan_out 7 BACKEND · 1 real / 6 stub spec_deviation_flagged risk 2 · fan_out 2 BACKEND · 1 real / 1 stub D1 tables — bid persistence bids PK bid_id · B5875 row · status DATABASE · D1 bid_lines 246 specs · prices · margins DATABASE · D1 bid_pages PDF page index for citations DATABASE · D1 bid_requirements DBE · insurance · M/WBE DATABASE · D1 customer_programs post-award contract rows DATABASE · D1 B5875 · NYC DOE Food Distribution · 246 specs Amend 13 · gfs-nycdoe-hub.pages.dev

Phase detail — 11 phases

01 Intake

Bid PDF + Excel arrives via Dropbox or email and is staged in R2.
Storage
R2://bids/B5875/
Canonical folder
~/Desktop/GFS-NetSuite-Cloudflare/Bids/

02 Parse

document_converter extracts line items, quantities, deadlines, and explicit requirements.
Tool
src/document_converter.ts (PDF/DOCX/XLSX → Markdown)
Output
structured rows for bid_lines, bid_pages, bid_requirements

03 Spec mapping

Match bid_lines.item_code to our spec_items + assemblies. Flag deviations.
Match
exact item_code; fuzzy fallback by brand + pack_size
Deviation flag
pack mismatch, format mismatch, missing kosher claim
Workflow
spec_deviation_flagged contract (risk 2)
Rule
submit prices even when spec deviates — let buyer evaluate (per Mike's directive)

04 Cost build

Pull cost_basis from pricing_master + vendor_costs. Compute margin per line.
Source
pillar 1 cost-basis pipeline (ADR-012)
Margin floor
enforced at line-level; flagged when below threshold

05 Price proposal

AI suggests prices honoring margin floors; Mike reviews via /bid-command-center.html.
Surface
bid-command-center.html
Workflow
bid_price_update (canonical, risk 3, fan_out 7)

06 HITL approval risk 3

Every line price stages as a proposed_action. Mike approves before submission.
Mechanism
R560 atomic UPDATE...RETURNING claim → one winner per row
Token
X-Edit-Token required to approve

07 Submission packet

Bundle bid_lines + PPI tabs + GFS Price Quotes + Fall 2026 recipes (34 recipes).
Includes
246 specs (Amend 13) · 6 PPI tabs · Sept 2026 menus (214 rows / 5 core menus) · 34 Fall 2026 recipes

08 Submission STUB

File via NYC DOE portal — manual today.
QBL
2026-06-03
Future
automated portal submission deferred — portal lacks public API

09 Amendment intake

Incremental updates (currently at Amendment 13). Re-trigger pricing review.
Workflow
bid_amendment_arrives (risk 3, fan_out 3, 1 real / 2 stub)
Behavior
re-runs phases 03–07 only for affected line items

10 Award / Award notification

Workflow definition bid_award_notification fires when award arrives.
Workflow
bid_award_notification (risk 4, fan_out 4, 1 real / 3 stub)

11 Contract

Convert to customer_programs rows for the school year.
Table
customer_programs — one row per (customer, program, SY)
Downstream
drives quarterly bid eligibility refresh + annual price roll (July 1 cutover)

Tables, workflows, surfaces

kindnamepurpose
tablebidstop-level bid record — one row per RFP (B5875 is one)
tablebid_linesper-line spec + qty + our price + margin; 246 rows for B5875 Amend 13
tablebid_pagespage index for source-document citation
tablebid_requirementsDBE/M-WBE, insurance, certifications
tablecustomer_programspost-award contract rows for the school year
workflowbid_amendment_arrivesamendment re-triggers pricing review
workflowbid_award_notificationfires on award notification (risk 4)
workflowdraft_quotedraft customer quote from bid context
workflowbid_price_updatecanonical line-price update path
workflowspec_deviation_flaggedspec deviation surfaced for buyer evaluation
surfacebid-command-center.htmlprice review + propose + approve UI
surfacegfs-nycdoe-hub.pages.devcustomer-facing B5875 portal