AI for Materials Recovery and Black Plastic Sorting

The value is the guarantee, not a perfect model.

Assay recovers the black plastic your NIR sorter is physically blind to, and proves the bale. Flip one toggle and the same model on the same stream ships a bale the APR spec rejects. The confidence gate, not the classifier, is what makes a bale sellable.

A from-scratch 1D-CNN reads a 154-band MWIR spectrum, a calibrated gate abstains on what it cannot prove, and every bale leaves with a signed purity certificate. Run it, then read the receipt.

Narrated walkthrough of the running Assay dashboard (5:01).

85% vs 22.5%

Gated vs ungated bales that meet APR Grade A

Same model, 40 random heavy-stream bales

0.894

Held-out balanced accuracy, near the 83.4% field benchmark

MWIR 1D-CNN, 1,700-object heavy stream

2.7–5.3 µm

MWIR band that sees carbon black NIR cannot

154 bands, Specim FX50 (emulated)

Three benchmark scopes are kept separate throughout this page: a single demo-seed-11 bale, the 40-bale aggregate, and the 60-bale fitted-gate stats. They are never merged.

A black tray on a black belt is a zero-signal void to NIR

The recovery problem starts as a physics problem, and it does not end there.

Carbon black absorbs across the near-infrared, so a black PP tray on a black belt returns almost nothing to a standard optical NIR sorter. The object falls through to residue and landfill. Between 3% and 15% of the waste stream is black plastic lost this way, and on a 50,000 tonne-per-year MRF running 5% black that is roughly 2,500 tonnes a year of recoverable material, an opportunity on the order of 2.2 to 2.7 million euros per year in rPP value plus avoided landfill gate fees (Veriprajna WP45 research, 2026).

The mid-wave infrared band (2.7 to 5.3 microns) is where the same object stops being invisible. Its polymer absorption features still show up there, so a sensor that reads MWIR can tell PP from PE from PVC where NIR sees a black hole. That much is a sensing story. But reading the spectrum is not the same as producing a sellable bale.

A MRF does not sell accuracy. It sells a bale that meets a spec. The APR Model Bale Spec Grade A rPP is 97% or more PP and 0.5% or less PVC, and a bale that misses is a rejected bale, a landfill redirect fee of 50 to 150 dollars a tonne, and a damaged downstream-recycler relationship (Veriprajna WP45 research, 2026). A single PVC false-negative in a PP bale is a chlorine problem the whole load pays for. The hard part is not classifying the plastic. It is proving the bale.

The gate the model cannot override

Assay classifies each object, then decides in plain code whether it belongs in the bale, whether it needs a human, or whether it must be rejected outright. The classifier proposes; deterministic gates dispose.

Read the spectrum

A hand-rolled numpy 1D-CNN (Conv1D×3 to global average pool to two dense layers to softmax) classifies each object PP/PE/PS/ABS/PVC from its 154-band MWIR spectrum, with real forward and backprop, Adam, and temperature calibration (temperature 1.811). It runs as plain numerical code in the roughly 5 ms conveyor hot path. There is no LLM anywhere in the decision.

Abstain, don't guess

If the calibrated max-softmax confidence falls below 0.86, the object is routed to manual QC and held out of the bale rather than guessed. Any PVC-suspect object above a low asymmetric threshold (0.06) is hard-rejected as a chlorine risk, because a PVC false-negative in a PP bale is catastrophic and deserves an asymmetric rule.

Certify the bale

As the bale accumulates only auto-accepted items, a deterministic policy gate checks it against the encoded APR Model Bale Spec Grade A rPP (97% or more PP, 0.5% or less PVC). Pass or fail is a rule the model cannot override, and every bale ships a signed (sha256) certificate stating its measured purity, each clause checked, and the model hash.

The pipeline per object is a straight line: an emulated 154-band MWIR spectrum, per-band standardization, the 1D-CNN classification with a calibrated confidence, the confidence gate and PVC hard-reject, accumulation into the bale, the deterministic APR policy gate, and finally the signed certificate and the live dashboard. The trust layers, the abstain and the PVC reject and the policy check, sit outside the model, in code you can read.

That separation is the durable part. The classifier can improve or regress and the gate still does the same job: it holds the ambiguous out of the bale and refuses PVC. Flip the gate off and the same 0.894 model on the same stream ships a failing bale, which is the clearest possible demonstration that the guarantee lives in the infrastructure, not the network weights. The demo is deterministic (seed 11), trains in about 31 seconds, and caches its weights, so every run reproduces.

One toggle tells the whole story

Screenshots below are of the actual running Assay dashboard. The spectra and objects are synthetic, produced by a physics-grounded emulator standing in for a Specim FX50, stated plainly in the app. What is real is the CNN, the gates, the policy check, and the eval.

The Assay MWIR side-belt dashboard mid-run with the confidence gate on: the live spectral plot at the scan head, sort bins filling to rPP 121, PE 29, PS 11, ABS 10, PVC reject 31, and manual QC 38, and a green Bale Certified progress bar.

The live sort, with the guardrails on

Black objects stream the MWIR side-belt at line 04. The 1D-CNN labels each one from its spectrum and the ejector stub bins it: recovered PP into the rPP bin, other polymers to their bins, PVC to a hard reject, and the low-confidence objects held back to manual QC rather than guessed. With the gate on, the accumulated bale certifies as it fills. The 38 objects sent to QC are the honesty cost of not contaminating the load.

The Assay signed rPP bale certificate with the gate on: 99.2% PP, PASS against APR Grade A rPP, PP content 99.2% and PVC content 0.00% both checked, 121 objects in the bale, 38 routed to manual QC, 17 PVC caught and 0 leaked.

The passing bale (gate on)

On demo seed 11 the gated bale measures 99.2% PP with 0.00% PVC leak and passes as APR Grade A rPP. The certificate is not a marketing badge. It lists the measured composition, checks each APR clause with a pass or fail, and records that 17 PVC objects were caught and none leaked, alongside the recovered tonnage and revenue computed live for the 50,000 tonne-per-year facility profile. It regenerates on every run and exports as filable JSON or printable HTML.

The Assay certificate for the same stream with the gate off: 94.2% PP, FAIL and bale rejected, PP content 94.2% failing the 97% clause and PVC content 1.94% failing the 0.5% clause, both marked with a red cross.

The failing bale (gate off, same model)

Flip the confidence gate off and the classifier reverts to naive argmax. Nothing about the model changed. The same stream now ships a bale at 94.2% PP with 1.94% PVC, which fails both APR clauses and is rejected: PP under the 97% floor, PVC nearly four times the 0.5% ceiling. The difference between the passing bale and the rejected one is the abstain and PVC-hard-reject layer, not a better network. That holds even as the underlying CNN improves.

The Assay model benchmark panel showing 0.894 for the MWIR 1D-CNN, 0.668 for the peak-ratio rule baseline, and 0.834 for the RCR Jan 2026 field benchmark, with gated bales meeting APR at about 85% and ungated at about 22.5% over 40 random bales.

Honest accuracy, and the aggregate that carries the thesis

The benchmark panel reports the CNN at 0.894 balanced accuracy on a held-out heavy stream, sitting next to the 0.668 interpretable peak-ratio baseline and the 0.834 peer-reviewed field benchmark (Resources, Conservation & Recycling, Jan 2026), so the model is not self-graded and is anchored near the honest field number rather than a lab 99%. The aggregate underneath is the point: across 40 random heavy-stream bales, the gated bale meets APR Grade A about 85% of the time versus about 22.5% ungated.

The Assay compute-architecture latency panel at 3.0 m/s: optimized edge GPU (Jetson AGX Orin, TensorRT, 14 ms) recommended with a 42 mm burst over about 3.4 nozzles, and FPGA dataflow marked not justified, saving 32,000 euros and about 20 weeks.

It recommends the cheaper hardware when the math allows

The latency engine computes displacement as belt speed times detection-to-fire latency, and calls an architecture sufficient when the firing burst spans no more than about four ejector-nozzle pitches. At 3.0 m/s it recommends the optimized edge GPU (Jetson AGX Orin, TensorRT, 14 ms), whose 42 mm burst spans about 3.4 nozzle pitches inside the window, and states FPGA is not justified, saving 32,000 euros and about 20 weeks. Drag the belt past roughly 3.6 m/s and it flips to FPGA. It does not upsell the more expensive part.

The measured numbers, with their exact scope

These are demo eval figures on synthetic-but-honest data, never an open-world or production guarantee. The three scopes below are different sets and are never blended.

Measurement Scope Value
Model balanced accuracy / macro-F1 Held-out heavy stream, n=1,700 0.894
Peak-ratio rule baseline Same held-out stream (anchor) 0.668
Peer-reviewed field benchmark RCR, Jan 2026 (context, not ours) 0.834
Gated bale meets APR Grade A 40 random heavy-stream bales ~85%
Ungated bale meets APR Grade A Same 40 bales, naive argmax ~22.5%
Single demo-seed-11 bale (gated) One bale, gate on 99.17% PP / 0% PVC → PASS
Single demo-seed-11 bale (ungated) Same bale, gate off 94.19% PP / 1.94% PVC → FAIL
Routed to manual QC / PVC capture / PP recovery 60-bale fitted-gate set ~12.6% / ~99.8% / ~71.2%

The number that carries the thesis is the gated-versus-ungated gap on the same model. Raising the classifier's accuracy is a slow, capped project. Turning on the abstain-and-reject layer moves a bale from a roughly 22.5% chance of passing to roughly 85%, immediately, on the model you already have. The fitted gate does cost something honest: about 12.6% of the stream goes to manual QC, and about 71.2% of the PP is recovered rather than all of it. It routes more to QC instead of failing your bale, and it catches about 99.8% of PVC with 1 leak across 60 bales.

What this demo does not do

  • It is a runnable demo that proves the mechanism, not a deployed pipeline on a real line.
  • The Specim FX50 sensor is emulated by a physics-grounded synthetic spectral generator; the PLC and pneumatic ejector are a logged OPC-UA stub; RGB object segmentation is assumed given. Nothing here is a live sensor feed or a fired ejector.
  • 0.894 is a held-out heavy-stream test figure (n=1,700), not the roughly 99% Specim lab number and not an open-world guarantee. We anchor it to the 83.4% peer-reviewed field benchmark.
  • It shows 1 PVC leak across 60 bales, about 12.6% routed to QC, and about 71% PP recovery. It is good and honest, not perfect, and we do not claim zero PVC, zero contamination, or 100% purity.
  • We build the vendor-neutral retrofit side-belt brain, not the machine. We do not clone, replace, or beat TOMRA, Steinert, Machinex, Pellenc, or any shipping sorter, and we sit downstream of the primary NIR sort.
  • The certificate is filable purity evidence, not a PPWR, California SB 54, RecyClass, or EPR compliance, certification, or conformity claim. Those regulations are cited as context.
  • The WEEE/XRF bromine fusion, weekly recalibration loop, and alternate-sensor qualification are an extensibility path, deferred, not demonstrated here.
  • No customers, MRFs, recyclers, or field tonnage are implied. RCR Jan 2026, APR, PPWR, SB 54, RecyClass, and the named sorters are public references, not our clients.

Questions plant and recycling-technology teams ask

How do you sort black plastic when a NIR sorter can't see it at all?

Carbon black absorbs across the near-infrared, so a black tray on a black belt is a zero-signal void to an optical NIR sorter. Its mid-wave infrared signature (2.7 to 5.3 microns) is not blank, because the polymer's own absorption bands still show up there. Assay reads a 154-band MWIR spectrum per object and a from-scratch numpy 1D-CNN classifies it as PP, PE, PS, ABS, or PVC. In this demo the FX50 sensor is emulated by a physics-grounded spectral generator, stated plainly in the app.

Do we have to rip out our existing NIR sorter to use this?

No. Assay is a side-belt sensing station that reads the black-heavy residue reject coming off your primary NIR sort. It sits downstream of the sorter you already run and recovers the fraction that would otherwise fall through to residue and landfill. We do not replace or clone TOMRA, Steinert, Machinex, Pellenc, or any shipping sorter, and we make no claim to out-sort them.

How accurate is the classifier, really?

On a held-out heavy stream of 1,700 objects on a deliberately dirtier-than-training distribution, the MWIR 1D-CNN scores 0.894 balanced accuracy, sitting near the 83.4% peer-reviewed field benchmark (Resources, Conservation & Recycling, Jan 2026), with an interpretable peak-ratio rule baseline at 0.668 anchoring it. We show that honest cold-start band on purpose. We do not quote the roughly 99% Specim lab figure as ours, and 0.894 is a test-set number, not an open-world guarantee.

If the model isn't perfect, how can you guarantee a bale meets spec?

The guarantee comes from infrastructure outside the model, not from the classifier. A calibrated confidence gate abstains any object below 0.86 softmax to manual QC instead of guessing it into the bale, PVC is hard-rejected as a chlorine risk, and a deterministic policy gate checks the accumulated bale against the APR Model Bale Spec (Grade A rPP is 97% or more PP and 0.5% or less PVC). Across 40 random heavy-stream bales the gated bale meets APR Grade A about 85% of the time versus about 22.5% for naive argmax on the same model.

What does the bale certificate actually prove to an auditor?

Every bale ships a signed (sha256) record, filable as JSON or printable HTML, that states the bale's measured composition, each APR clause checked with a pass or fail, the model hash and architecture, the confidence threshold, and the counts auto-accepted, abstained to QC, and hard-rejected, plus recovered tonnage and revenue. It is purity evidence, not a regulatory certification. We make no PPWR, SB 54, or RecyClass conformity claim.

Do we need expensive FPGA hardware to run this at line speed?

Not at a typical belt speed. The latency engine computes displacement as belt speed times detection-to-fire latency and checks that the firing burst spans no more than about four ejector-nozzle pitches. At 3.0 m/s it recommends an optimized edge GPU (Jetson AGX Orin, TensorRT, 14 ms), whose 42 mm burst spans about 3.4 nozzle pitches, and marks FPGA not justified, saving 32,000 euros and about 20 weeks. Push the belt past roughly 3.6 m/s and it honestly flips to FPGA. It recommends the cheaper option whenever the math allows.

Technical Research

The research behind this demo — the architecture, the verification design, and the enterprise blueprint.

Put a purity gate between your classifier and your bale

If a rejected bale costs you revenue and a downstream relationship, the failure mode is the missing gate, not the model.

We built Assay to show that a calibrated abstain, a PVC hard-reject, and a deterministic policy gate can turn an honestly-good classifier into a filable bale certificate. The same framework takes a different spec and a different sensor. Tell us the black fraction your line loses and the grade your recycler demands, and we will work through whether a gated recovery station fits.

Black-fraction recovery review

  • ✓ Estimate the black plastic your NIR sort loses to residue
  • ✓ Map the bale spec your downstream recycler enforces
  • ✓ Scope an MWIR side-belt station downstream of your sorter
  • ✓ Define the abstain and PVC-reject thresholds your grade needs

Gated recovery station build

  • ✓ Spectral classifier plus deterministic gates as inspectable code
  • ✓ Calibrated abstain to QC and asymmetric PVC hard-reject
  • ✓ Signed per-bale purity certificate against your spec
  • ✓ Belt-speed latency math that picks the cheapest sufficient compute