Een sorteermachinemonitor die elk pakket op de verkeerde baan vindt
Deze service houdt de pakketsorteermachine van een Nederlands 3PL-fulfilmentbedrijf in de gaten. De sorteermachine stuurt een kopie van elke scan naar een webhook, die uit de barcode de vervoerder afleidt en controleert of het pakket op de juiste baan is beland. Managers krijgen elk uur een mail met de nauwkeurigheid.
In het kort
De sorteermachinemonitor is een kleine Node.js-webhook die elke scan van de pakketsorteermachine ontvangt. Hij herkent de vervoerder met 14 barcoderegels, vergelijkt de verwachte baan met de baan waar het pakket echt naartoe ging en telt herhaalde scans maar één keer. Tellingen worden per uur opgeslagen, en managers krijgen een mail met de nauwkeurigheid, pakketten op de verkeerde baan en onbekende barcodes.
- Barcoderegels
- 14
- Gecontroleerde sorteerbanen
- 10, incl. error/manual
- Rapportage-interval
- Elk uur
- Geautomatiseerde tests
- 24

01 / Het probleem
Waarom dit systeem nodig was
Het magazijn installeerde een pakketsorteermachine die pakketten naar de banen van DHL, PostNL, bpost, Colis Privé, Evri en andere vervoerders stuurt. De sorteermachine kiest zelf de baan. Niemand aan de operationele kant kon zien hoe vaak dat goed ging.
Een pakket op de verkeerde baan vertrekt met de verkeerde vervoerder of blijft in een rolcontainer staan tot iemand het vindt. Zonder data kwamen missorteringen pas dagen later boven als klachten van vervoerders en tickets over zoekgeraakte pakketten. Een fout van de sorteermachine was niet te onderscheiden van een nieuw labelformaat.
De service moest ook veilig bereikbaar zijn. Het is het enige systeem dat de leverancier van de sorteermachine kan bereiken. Daarom had het eigen sleutels, een IP-allowlist en limieten nodig, en mocht het geen scans vertragen of kwijtraken als de sorteermachine opnieuw verstuurde.
02 / De bouw
Hoe ik het heb gebouwd
Ik schreef de herkenning van vervoerders als een geordende lijst regex-regels, overgenomen uit de baanconfiguratie die met de leverancier van de sorteermachine is afgesproken. Specifieke prefixen gaan eerst en de brede bpost-regel van 24 cijfers als laatste. Een barcode die nergens op past, hoort op de error/manual-baan. De service leest de uitvoerbaan uit de scan of uit het apparaat-ID en markeert elke scan als correct, verkeerde baan of niet te controleren.
Elke scan krijgt een ID dat is gehasht uit de barcodes, de verzendtijd, het apparaat en de baan. Herhaalde scans hebben hetzelfde ID en tellen één keer mee over de huidige en vorige periode. Tellingen blijven in het geheugen en worden per periode als één document naar Firestore geschreven met atomaire ophogingen, elke 5 minuten of als een periode eindigt. Bij een mislukte schrijfactie blijven de tellingen bewaard voor de volgende poging, en bij afsluiten wordt eerst alles weggeschreven.
De beveiliging bestaat uit meerdere lagen. Er kunnen twee sleutels tegelijk actief zijn, zodat een nieuwe sleutel zonder downtime wordt uitgerold, en sleutels worden in constante tijd vergeleken. Berichten zijn beperkt tot een IP-allowlist, een token-bucket rate limit, vertraging bij verkeerde sleutels per adres en maximale groottes van 64 KB per scan en 2 MB per batch. Via een health-endpoint kan de host de service herstarten als die stopt.
03 / Functies
Wat de sorteermachinemonitor doet
Webhook voor scans
Endpoints voor losse scans en batches accepteren de JSON van de sorteermachine, inclusief varianten in veldnamen en dubbel gecodeerde berichten.
Vervoerder herkennen aan de barcode
Veertien geordende regex-regels koppelen elke barcode aan een vervoerdersbaan. Onbekende formaten gaan naar error/manual.
Verwachte tegenover werkelijke baan
Elke scan wordt vergeleken met de baan die de vervoerder hoort te gebruiken en gemarkeerd als correct, verkeerde baan of niet te controleren.
Dubbele scans filteren
Dankzij een gehasht scan-ID wordt een scan die de sorteermachine twee keer stuurt maar één keer opgeslagen en geteld.
Tellingen per periode
Per periode worden de tellingen en tot 200 probleempakketten bewaard, zodat Firestore maar een paar schrijfacties per uur krijgt.
Nauwkeurigheidsmail per uur
Managers krijgen de nauwkeurigheid, pakketten op de verkeerde baan met verwachte en werkelijke baan, en onbekende barcodes die misschien een nieuwe regel nodig hebben.
Toegangscontrole
Wisselende sleutels, een IP-allowlist, rate limits en maximale berichtgroottes beschermen het enige endpoint dat de leverancier ziet.
Testmodus en health-check
Met een testvlag zie je hoe een scan is gelezen zonder dat die wordt opgeslagen, en een health-endpoint maakt automatische herstarts mogelijk.
04 / Workflow
Zo werkt het, stap voor stap
- 01
De scan ontvangen
De sorteermachine stuurt elk resultaat naar de webhook, die eerst sleutel, IP, tempo en berichtgrootte controleert.
- 02
De vervoerder herkennen
De barcode wordt opgeschoond, naar hoofdletters gezet en langs de geordende regels gehaald om de verwachte baan te vinden.
- 03
Vergelijken en tellen
Verwachte en werkelijke baan worden vergeleken, herhaalde scans vallen weg en het resultaat telt mee in de huidige periode.
- 04
Rapporteren aan managers
Een minuut na het einde van elk uur mailt het beheerpaneel één keer de nauwkeurigheid en de probleempakketten van die periode.
05 / Schermen
Productschermen
Kies een scherm om de interface, workflow en operationele details te bekijken.

Overzicht van functies
06 / Wat er veranderde
Het resultaat in de praktijk
- Managers zien elk uur de nauwkeurigheid per baan, in plaats van dagen later via vervoerders over missorteringen te horen.
- Pakketten op de verkeerde baan staan in een lijst met barcode, scantijd en beide banen, zodat de vloer weet welke pakketten opgezocht en omgeleid moeten worden.
- Nieuwe labelformaten van vervoerders verschijnen in de lijst met onbekende barcodes. Zo weet het team wanneer een baanregel moet worden toegevoegd.
Veelgestelde vragen
Vragen over een vergelijkbaar systeem
Vergelijk bij elke scan de baan waar het pakket heen had moeten gaan met de baan waar het echt naartoe ging. De service herkent de vervoerder aan de barcode, zoekt de baan van die vervoerder op en leest de werkelijke baan uit het bericht van de sorteermachine. De nauwkeurigheid is het aantal correcte scans gedeeld door alle controleerbare scans, elk uur gerapporteerd.
Die telt één keer. Elke scan krijgt een ID dat is gehasht uit de barcodes, de verzendtijd, het apparaat en de baan, dus een herhaling levert hetzelfde ID op. De service onthoudt ID's uit de huidige en vorige periode, zodat ook herhalingen net na de wisseling van het uur worden afgevangen. De sorteermachine kan na elke fout veilig opnieuw versturen.
Die horen op de error/manual-baan en staan in het uurrapport. Een barcode die op geen enkele vervoerdersregel past, wordt gemarkeerd als onbekend formaat. De mail toont die pakketten met scantijd en baan, en meldt dat een nieuw labelformaat van een vervoerder misschien een regel nodig heeft.
Elk pakket op de verkeerde baan staat in de uurmail met de barcode, de vervoerdersregel, de verwachte baan en de werkelijke baan. Het rapport toont ook de eigen redencode van de sorteermachine als die er een meestuurt. Per periode worden tot 200 probleempakketten getoond, terwijl de tellingen altijd alle scans omvatten.
Een korte storing van de database kost geen tellingen. Mislukt een schrijfactie naar Firestore, dan blijven de tellingen in het geheugen en gaan ze mee met de volgende keer wegschrijven. Bij een nieuwe deploy slaat de service eerst zijn tellingen op. Kan een scan niet worden geaccepteerd, dan krijgt de sorteermachine een foutmelding met het verzoek opnieuw te sturen, en het filteren van dubbele scans voorkomt dat die herhaling twee keer telt.
Hij accepteert alleen berichten met een geldige sleutel, van toegestane IP-adressen en binnen de limieten voor tempo en grootte. Tijdens een sleutelwissel kunnen twee sleutels actief zijn, pogingen met een verkeerde sleutel worden per adres vertraagd, en berichten boven 64 KB, of 2 MB voor batches, worden geweigerd. Behalve de scanpaden en een health-check stelt de service niets open.
Samenwerken
Wil je weten hoe nauwkeurig je sorteermachine echt is?
Ik bouw monitoring en koppelingen voor magazijnapparatuur, van webhooks voor de sorteermachine tot de rapporten die je managers elk uur lezen.
Bespreek je projectVerder lezen
Gerelateerde case studies
Shift Board | Carrier Cutoff & SLA Planning
Een live planningsbord dat de pickachterstand vergelijkt met de cut-off-tijd van elke vervoerder, extra pickers adviseert en SLA-mails precies één keer verstuurt.
Lees de case study: cut-off-planner voor het magazijnEnterpriseAI Returns Scanner | Label Reading & Returns Intake
Een AI-retourenscanner die het verzendlabel leest, de retour aan de juiste ChannelDock-orderregel koppelt en dubbele boekingen voor Bol- en Amazon-retouren voorkomt.
Lees de case study: AI-retourenscannerEnterpriseWarehouse Operations Dashboard | Real-Time Workforce Control
Een realtime dashboard voor fulfilmentteams om personeel in te zetten, taken toe te wijzen, aanwezigheid te volgen en rapporten naar CSV of Excel te exporteren.
Lees de case study: realtime magazijnplanning