Polymr

Lot, expiry, EDI, AP. One loop or four spreadsheets.

A finished pallet of yogurt is not a finished pallet. It is a finished pallet plus a per-batch shelf-life clock, plus a lot genealogy chain back through every ingredient lot consumed, plus an EDI 856 ASN against the retailer EDI 850, plus an AP three-way match that has to land same-day to recover supplier credits. Polymr keeps lot, expiry, AP, and EDI on the same operational loop.

FSMA-204 trace, last 7 days
24 s
median fan-out enumeration, was 19 hrs
Last trace pulled by QA lead 14:08 today on L-77, ran across 4 batches, 27 pallets, 6 retail accounts. Notification packets drafted by 14:11.

Built for the food and beverage shape.

Polymr reads recipe sheets and ingredient spec PDFs into batch records with allergen attestation per finished SKU. Onboarding a new co-pack does not require a recipe re-type. Polymr lifts ingredient lots, addition order, in-process checks, and allergen flags from the supplier doc and lands them as a structured batch template that the QA lead reviews before the first run.

FSMA-204 lot-level traceability runs across receiving, batch, and ship in one query. Every consumed lot, every produced pallet, every customer destination is a first-class row. Shelf-life forecasts read against the perishable inventory and the open ship plan, so the cooler manager sees the lot that will not move in time and the planner sees the SKU that risks a write-off before the period close.

The trace is a graph, not a paper trail.

Ingredient lot L-77 from V-218 was consumed across four batches in the W21 window. Each batch produced finished pallets across multiple SKUs; the trace lists every pallet, every customer destination, and every retail account that touched the lot. It walks across LIMS, the plant batch ledger, and the WMS shipment log. Returns in 24 seconds rather than 19 hours.

L-77Milk powder, V-218, received 2026-05-09
FSMA-204 trace · 24 s
Inbound lot L-772,200 kg · 4 batches consumed
B-997138% consumed
PMR-FB-12P-9112…P-91184 retail accounts · 1,260 ea
B-997428% consumed
PMR-FB-12P-9119…P-91243 retail accounts · 1,080 ea
B-998222% consumed
PMR-FB-22P-9125…P-91312 retail accounts · 840 ea
B-998812% consumed
PMR-FB-22P-9132…P-91382 retail accounts · 410 ea
One inbound lot → 4 batches → 27 pallets → 38 retail destinations. Resolves as graph query, not paper-pull.

FEFO at the handheld, not at the spreadsheet.

The shelf-life clock is live against finished inventory. Cooler-by-cooler, lot-by-lot, the panel surfaces what is about to expire and what action the WMS pick handheld should rank first. The 1,280 units of W19 yogurt in CW-A12 leave the cooler in time because the pick list is FEFO-aware before it lands on the handheld, not after the QA review at month-end.

Shelf-life clock, finished lots expiring <14 dlive, every 60 s
LotSKUCoolerExpiryDaysUnitsRecommended
L-7724PMR-FB-22 cheeseCW-A122026-06-0421,280release to clearance
L-7728PMR-FB-08 yogurt W19CW-A142026-06-064860FEFO pick set
L-7731PMR-FB-12 milkCW-B022026-06-086440FEFO pick set
L-7740PMR-FB-22 cheeseCW-A122026-06-1192,200hold
FEFO is enforced at pick time. 1,280 units of W19 yogurt do not obsolesce in Cooler-West-A12.

The recall packet drafts itself.

When V-218 flags L-77 for moisture, the recall card opens on the QA lead's queue with the fan-out enumerated, the affected retail accounts listed, and the customer notification packets drafted against each account's template. The FSMA-204 24 h clock starts on the trigger event, not on the email.

The QA lead reviews each packet, edits if needed, approves the bundle. SAP writes the hold transactions; the customer portals receive the notifications under the existing identifiers.

recallRCL-2026-0044L-77 milk powder, supplier moisture flag
opened 14:08
4 batches
Downstream lots
27
Finished pallets
6
Retail accounts
6 drafted
Customer notifications
14:08 trigger received from V-218 portal, parsed against L-77
14:08 fan-out enumerated, 27 pallets across 6 retail accounts
14:11 customer notification packets drafted, awaiting QA lead approval
14:30 FSMA-204 24 h clock countdown started
Three minutes from supplier flag to drafted notification packets. Was a 19-hour exercise pre-rollout.

Six failure modes a lot-traced F&B plant lives with.

Each is what an operations VP, a QA lead, or an AP controller will name when asked why recalls run on a multi-day clock and supplier credits get renegotiated instead of recovered.

  • Recall trace latency
    Ingredient lot L-77 from V-218 takes 19.4 hours of plant + AP work to trace across every finished pallet that consumed it

    A flagged batch of milk powder lot L-77 needs a downstream FSMA-204 trace. L-77 fed four batches (B-9971, B-9974, B-9982, B-9991) across the W21 production window. Each batch produced finished pallets across twelve SKUs (PMR-FB-12 yogurt, PMR-FB-14 cream, PMR-FB-22 cheese, and nine others). Each pallet shipped against retail destinations across thirty-eight stores in the Region North footprint. The fan-out walk crosses LIMS, plant batch sheets, AP receipt logs, and the WMS shipment ledger. typically 18-22 hours of QA + planning + IT time. The trace is correct but the customer SLA is 24 hours and the regulatory clock is shorter.

  • FEFO compliance drift
    Finished-good SKU PMR-FB-12 reaches expiry on 1,280 units because FEFO picking pulled from the wrong bin

    PMR-FB-12 yogurt has a 28-day shelf life from production. The Cooler-West WMS bin holds lots with rolling expiry windows from W19 through W25. The pick list for the W22 Region-North retailer EDI 850 was built on FIFO logic against bin entry date rather than FEFO against expiry date. The W19 lot in Cooler-West-A12 with 7 days remaining shelf life was supposed to ship first; instead the W21 lot from Cooler-West-A18 with 20 days remaining shipped, leaving 1,280 units of the W19 lot to obsolesce against an 11-day stale forecast.

  • Retailer EDI duplicate
    Retailer EDI 850 from Region North arrives twice with the same PO number and AP does not dedupe

    The W22 weekly EDI 850 from the largest Region-North retailer transmits at 06:14 Monday with PO# 4412881 against 18 line items totalling $48,200. The same PO retransmits at 11:48 with the same PO number and identical lines because the retailer's VAN had an acknowledgement timeout. The Polymr-less AP queue creates two open orders. Plant fulfills against the first, the second sits in "expected" status, and three weeks later AP cannot reconcile against the single supplier invoice. Polymr collapses the duplicate at receipt time against the EDI signature hash.

  • Cook-step yield variance hidden
    Cook-step yield variance on batch B-9971 is not logged for four hours and the day plan stays optimistically wrong

    B-9971 of PMR-FB-14 cream finishes its cook step at 11:42 Tuesday against a target yield of 92%. The operator measures actual yield at 87.4% during the transfer to packaging at 11:58 but the entry into the MES does not happen until end-of-shift batch close at 15:30. the operator was running B-9974 in parallel. The afternoon plan continues to project against 92% across the next three batches. The downstream packaging line under-fills the Region-North EDI 856 ASN by 320 units against PO 4412881 and the retailer chargeback hits at month-end.

  • Co-packer mixed-lot ASN
    Co-packer V-244 sends a mixed-lot ASN against PO-84179 and lot resolution falls to a receiving clerk

    V-244 co-packs PMR-FB-22 cheese against the standing weekly order. Their W22 ASN against PO-84179 lists 1,140 units across 18 pallets but indicates the pallets carry a mixed-lot composition. pallets 1-6 are V-244 internal lot V44-2218, pallets 7-12 are V44-2221, pallets 13-18 are V44-2224. Each lot needs to land separately in the plant lot ledger to maintain genealogy. The receiving clerk transcribes the lot break manually from the BOL footnote and gets it right most weeks. The week he is short-staffed, the entire 1,140 units land under V44-2218 and the genealogy chain breaks for the downstream blending step.

  • AP three-way match drift
    AP three-way match fails on 8 of 22 invoice lines this week because the goods receipt did not carry the lot

    The W22 AP run reconciles 22 supplier invoice lines against the PO commits and the goods receipt records. Eight fail: V-218 short-shipped 32 units against PO-84179, V-244 shipped a different lot than the ASN indicated against PO-84212, V-301 invoiced a price 4.2% above the PO commit on PO-84228, and so on. Pre-Polymr the failures land in a monthly batch and supplier credits are renegotiated rather than recovered against the original PO. Same-day catch turns the negotiation into a debit memo.

What this looked like at a three-plant F&B manufacturer.

Anonymized engagement
Operations VP, mid-market food and beverage manufacturer (three plants)
Situation
Receiving handled 90-140 inbound pallets per day per plant. Each pallet carried a lot code. Each finished batch consumed against multiple inbound lots; each finished pallet shipped against multiple customer orders.
What was breaking
A recall trace for one ingredient lot took 18-22 hours of plant + AP work to enumerate every finished pallet that had consumed it. AP three-way match (receiver / PO / invoice) surfaced mismatches 30-60 days after receipt, too late to recover supplier credits.
  • Planning + purchasing
  • Quote-to-procure
  • Margin and bottleneck analysis
Outcome · 7 weeks
0.4hrs
Recall-trace turnaround
was 19.4 hrs−98%
Illustrative, reflects this specific deployment. Outcomes vary by plant, stack, and scope.