Projects

End-to-end RFID traceability

Every bottle has its own identity from bottling to the dock, so we know what leaves on each pallet and can claim what gets lost.

Details

Year 2025 – 2026
Outcome RFID-verified pallets since March 2026
Tools UHF RFID, SGTIN-96, Chainway UR4, Python, Flask, PostgreSQL

How it works

  1. 1 Labeling the labeling machine encodes an SGTIN-96 per bottle
  2. 2 Validation every parcel is tied to its order
  3. 3 Pallet parcels are grouped by carrier
  4. 4 RFID portal three antennas read the exit at the dock
  5. 5 WMS traceability and packing list per pallet
  6. 6 Claim proof for the carrier, or a logged return

Context

When a parcel went missing, proving to the carrier what had left and when was almost impossible. And at unit level we didn’t know which bottles were in each shipment.

What I did

Every bottle now carries an SGTIN-96: the labeling machine encodes it on the label and passes the link to the WMS, and manual bottling links it with an RFID handheld. At the dock we installed a portal with Chainway UR4 readers and three antennas. A small Windows service collects the reads over UDP, removes duplicates and sends them in batches to the WMS API.

Shipment validation ties each parcel to its order and pallet, and the portal confirms the dispatch. On top of that there’s a traceability page per pallet, a packing list and a document so carriers take responsibility for what they lose. The same portal logs returns as soon as they come through the dock.

Outcome

Since March 2026 every pallet leaves with its content verified by RFID, and returns are logged on arrival, without waiting for someone to scan them.

What I learned

Read rates depend a lot on where the antennas go and how reading is configured: the first test pallet only reached 61% and needed tuning. I also learned that phantom reads are real, so anything triggered by a read has to be safe to repeat and, when in doubt, do nothing.