Northbeam Precision / Receiving Dock
| Product | Packing list | Pallet side | Close ups | Verdict |
|---|---|---|---|---|
| Nothing read yet. | ||||
How this works
Shape. A phone at the dock, a small capture app on the shop server, and four chained workflows: read and reconcile, propose, approve, commit. 56 nodes, three webhooks and a scheduled trigger. The cloud instance is kept as a deactivated hot standby, and it is never active on both sides at once, because both would fire the commit trigger and create duplicate listings.
The printed packing list is ground truth and the model is not. The model identifies and transcribes. It never decides how many. Counts anchor to the printed expected case count, and three independent counts are compared: the paperwork, the pallet-side shots, and the close-up set. Disagreement is surfaced, never resolved automatically. The operator's editable count, checked against the list, is the authority, because multi-tier counting is not deterministic and the same photographs can produce slightly different case counts run to run.
Completeness is the sharpest edge in the system. Lot codes are printed with slashes and stored with dashes, and the same supplier prints the same lot with and without a trailing run group. A rule that is too strict throws away real lots. The worst defect in this system's life was exactly that: an over-strict completeness check silently discarded entire real lots with no error anywhere. The fix was a looser rule and a standing principle: surface, do not resurrect. An automatic rescue of zeroed lots was tried and rejected, because it resurrected edge-cropped bleed as phantom cases.
Bleed guard. If a frame already produced a confident read, a partial read of a different lot in that same frame is treated as bleed-over from the adjacent case and dropped. Own-lot partials are never dropped. The honest limitation, published rather than hidden: two different real lots in one photograph where the second is only partial will drop the partial without surfacing it. Standard operating procedure is one lot per photograph, so it is rare.
Downstream name limits are a design constraint, not a detail. The accounting system caps item names, and the connector that links storefront to accounting matches by exact name. A generated SKU longer than the cap gets silently truncated, which merges distinct lots onto one accounting item behind a green success message. That happened: ten distinct lots collapsed onto five items. The fix is a canonical lot pattern proven against roughly 120 historical items, plus a hard length guard that errors rather than truncating. Flip the guard off above and watch the merge happen.
Verify the landing, do not trust the success message. A read-only verification tool walks the storefront parent product and enumerates its actual variations, rather than querying by SKU, because a SKU query returns a hit even when the variation is attached to the wrong parent.
Measured in production. On the verified reference intake: 14 lots, 36 cases, 180,000 units, read in 47 seconds from 19 images, 36 of 36 line items matched against the printed slip, and an independent human re-read of every label matched the pipeline lot for lot. First listing sold inside 75 minutes. Receiving went from three people to one on a phone, about an hour of combined work per pallet, estimated.