I flipped one gate off and the bale failed
I flipped a single toggle off in Assay, the black-plastic recovery demo I built, and the same 1D-CNN on the same stream turned a 99.2% polypropylene bale into a 94.2% one carrying 1.94% PVC (demo seed 11), which the APR Grade A spec, at least 97% PP and no more than 0.5% PVC, rejects. Nothing about the classifier changed between those two runs. The only difference was a confidence gate: with it on, low-confidence objects are held back to manual QC and any PVC-suspect object is hard-rejected before it can reach the bale; with it off, the model's raw argmax label decides everything, and PVC along with a handful of misreads leak straight into a food-grade bale.
I had assumed, before I built that toggle, that a decent model was most of the job. Watching the same network ship a sellable bale in one run and a rejected one in the next, on identical objects, is what corrected me. A materials recovery facility does not sell accuracy; it sells a bale that meets a written spec, and the thing that decides whether it meets that spec sits outside the network entirely.
Confidence gate off, naive argmax: the same model on the same stream fills the rPP bin to 155 objects, routes nothing to QC, and the bale reads BALE WOULD BE REJECTED.
Why every bale leaves with a signed certificate
I stopped trusting my own say-so about purity the moment I pictured handing a bale to a downstream recycler who has been burned before. If I tell a plant manager the bale is 99% polypropylene, the fair reply is "prove it." So every run in Assay ends with a signed certificate: a hashed (sha256) JSON and printable record that states the bale's measured composition, checks each APR clause with a pass or fail, and lists how many objects were auto-accepted, how many were routed to QC, and how many PVC pieces were hard-rejected, along with the recovered tonnage and revenue computed for the 50,000 t/yr facility profile.
I built it so this record is generated fresh on every run and fails loudly when the spec is missed, because a purity guarantee you cannot show an auditor is not a guarantee. As the EU's PPWR (Reg 2025/40) and California's SB 54 push toward a 2030 world where carbon-black packaging counts as recyclable only where MWIR-capable sorting exists (WP45 research, 2026), the facility that wins is not the one with the prettiest benchmark. It is the one that can hand someone a filable receipt for the bale it just made.
The signed certificate with the gate on: 99.2% PP, 0.00% PVC, PASS APR Grade A, with the QC and PVC-reject counts, recovered tonnage and revenue on the record.
The accuracy number I refused to dress up
I could have put a 99% figure on screen, and it would have been a lie by omission. Specim quotes near-99% for MWIR polymer classification in lab conditions, but that is not what a cold-start model sees on a dirty side-belt. My from-scratch numpy 1D-CNN scores 0.894 balanced accuracy on a held-out heavy stream of 1,700 objects drawn from a deliberately dirtier distribution than it trained on, sitting just above the 83.4% peer-reviewed field benchmark for MWIR-plus-CNN sorting on real waste (Resources, Conservation & Recycling, Jan 2026). I anchored it against an interpretable peak-ratio rule baseline at 0.668 so the model is never grading its own homework.
I keep coming back to what that honest 0.894 buys once the gate is on. Across 40 random heavy-stream bales, the gated bale meets APR Grade A about 85% of the time versus roughly 22.5% for naive argmax, on the same model. The honesty has a cost I show rather than hide: at the chosen thresholds (a 0.86 confidence gate, a 0.06 PVC reject line) the system routes about 12.6% of objects to manual QC and still let 1 PVC piece slip across 60 bales while catching 99.8% of the rest. It would rather send more to QC than contaminate the bale. That same instinct runs through the whole build: the demo even recommends the cheaper edge GPU (Jetson AGX Orin) over an FPGA when the belt-speed math allows at 3 m/s, saving 32,000 euros and about 20 weeks, instead of upselling the expensive part.
The honest scoreboard: 0.894 held-out accuracy beside the 0.668 baseline and the 0.834 field benchmark, and gated bales meeting APR 85% versus 23% ungated across 40 random bales.
The plastic your NIR sorter never sees
I built this whole thing because a black polypropylene tray on a black belt is a zero-signal void to every standard NIR sorter, the TOMRA Autosort and Machinex and Pellenc class of machine. Carbon black absorbs across the near-infrared, so 3 to 15% of the waste stream falls through to residue and landfill (WP45 research, 2026). What those machines are blind to is not actually invisible: in the mid-wave infrared (2.7 to 5.3 microns) carbon black dims the signal but does not erase it, and a polymer's diagnostic absorption bands stay readable. Assay reads a 154-band MWIR spectrum for each object, generated by a physics-grounded emulator standing in for a Specim FX50 (the sensor and the ejector are stubbed, and the app says so), and the 1D-CNN labels it PP, PE, PS, ABS, or PVC in a few milliseconds.
I made a point of not letting Assay pretend to replace anyone's primary sorter. It is a side-belt station that reads the black-heavy reject the primary NIR sort already gave up on, and its most conservative move is to say it is not sure, out loud. A multilayer laminate whose spectrum matches no single polymer, a contaminated piece, an ambiguous read: those go to manual QC rather than getting guessed into the bale. Abstaining on what it cannot prove is what keeps the bale honest.
The live sort: the 1D-CNN tags each object PP/PE/PS/ABS/PVC from its MWIR spectrum, and the ambiguous ones are flagged to QC rather than dropped into the bale.
What I stopped believing about recycling AI
I no longer believe the black-plastic problem is an accuracy race. For a year the framing I heard was to get the classifier from NIR-blind zero up toward the lab's 99%, and building Assay convinced me that is the wrong finish line. The classifier can be honestly good and still ship a failing bale; the calibrated abstain, the asymmetric PVC reject, the deterministic policy check, and the certificate are what turn a good model into a sellable bale, and they keep doing their job as the model improves. You can run the whole thing, flip the gate yourself, and read the certificate at veriprajna.com/demos/materials-recovery-ai.
A recovery system that oversells its own purity is a contradiction, and I say that to anyone who will listen. The bale either measures up to the spec or it does not, and I would rather build the machine that tells you which, on paper you can file, than the one with the biggest number on a slide.