A fruit exporter in the Mekong Delta runs three collection points and about 1,200 smallholder farmers. Each crate arrives with a farmer ID, a plot number, a harvest date and a weight. The traceability chain — the thing the buyer's audit actually checks — begins when someone scans or writes that link at the collection point, in the open, at 38 °C, with dust on everything and a hose running somewhere behind the scale.
This is the least glamorous part of agri-tech and the part that fails most often. Not in the dashboard. At the point where a crate is weighed and a label is applied.
Where the chain breaks
Four failures account for most of the lost records we hear about:
- The label dies before the record does. A paper label glued to a wet, chilled crate lifts at the corner within a day. If the QR is unreadable at the packing house, the crate becomes anonymous and the traceability claim collapses at the first audit.
- The phone dies before the shift does. A consumer phone at 38 °C, screen at full brightness, camera running as a scanner, drains in four hours. The person holding it puts it in a pocket and writes on paper — and the paper is the record now.
- The signal is not there. Collection points are frequently outside reliable coverage. If the app needs a live API call to validate a farmer ID, the queue at the scale stops moving.
- The weight never reaches the record. The scale has an RS232 port, the app has no serial driver, and someone types the number. Typing is where the discrepancy between the farmer's receipt and the buyer's system begins.
The label is a hardware decision
Most traceability projects treat printing as a stationery problem. It is a materials problem, and it decides which printer and which device you need.
| Storage after packing | Label that survives | What to check |
|---|---|---|
| Ambient, dry, 1–3 days | Direct thermal paper | Print head warranty at high duty cycle |
| Chilled, 0–8 °C, condensation | Thermal transfer, synthetic stock | Adhesive rated for wet surfaces |
| Frozen, −18 °C | Thermal transfer, freezer-grade adhesive | Applied before freezing, not after |
| Field, dusty, handled twice | Synthetic, laminated | Abrasion resistance of the print, not the label |
The practical rule: direct thermal for same-day, ambient movement; thermal transfer with a synthetic stock for anything that will be chilled, stacked or stored. A 58 mm portable printer handles the first. The second usually means a desktop printer at the collection point, or a portable thermal-transfer unit that costs more than the handheld.
Whichever you choose, scan your own label back after 24 hours in the actual cold room. Not in the office, not on a sample straight off the printer.
Scanning in the field is a different test
The environment sets the specification, and it sets it in a way an office pilot never reveals:
- Dust. A collection point in dry season is a dust bowl. IP6X is the first digit that matters, and it is the one buyers forget to read. IP65 is the floor; IP67 is normal for anything that gets rained on or hosed down.
- Sun. Midday scan of a printed label with the screen in shade and the label in sun. Below 500 cd/m² the operator is working by guesswork and stepping between the crate and their own shadow.
- Gloves and wet hands. Thin nitrile in a packing house, heavy cotton in a field. The touch panel has to work through both, and through a wet finger on a wet screen.
- Distance and angle. A crate on the ground, a label near the bottom edge, an operator standing. A 2D engine with a reasonable depth of field removes a stoop per scan; across 800 crates a day that is a physical cost, not a convenience.
Offline is the default, not a feature
Design the flow so the device is authoritative for the shift and the server is authoritative for the day:
- Master data is downloaded before the shift — farmer list, plot list, product codes, price table. It has to be small enough to refresh over a weak link, and versioned so the app knows when it is stale.
- Every transaction is written locally with a device-generated ID. Farmer ID, plot, weight, timestamp, photo, operator.
- Sync is an upload of a batch, not a live API call. Retry until acknowledged, never delete before acknowledgement.
- Duplicates are resolved by the device ID, so a retried upload does not create two records for the same crate.
- Conflicts are visible. If the price table changed mid-shift, the record keeps the version it was created with and flags the difference — silently rewriting history is what auditors find.
A device with a removable battery protects this queue. When the pack is swapped at noon, the app must keep its local database. Consumer phones with sealed batteries reboot and lose it, which is one of the quiet reasons paper comes back.
What to specify
| Requirement | Ask for this | Why it matters here |
|---|---|---|
| Sealing | IP67, port covers replaceable | Wet crates, hose-down, dust |
| Screen | 500 cd/m² minimum, readable in direct sun | Midday work in the open |
| Scan | 2D imager, 30 cm+ depth of field, glove-capable touch | One motion per crate |
| Power | Removable pack, 10,000 mAh class, spare per shift | No mid-day dead device |
| Connectivity | 4G with a real offline queue, Wi-Fi for the packing house | Collection points are not covered |
| Interfaces | RS232 or Bluetooth SPP for the scale | Weight captured, not typed |
| Label | Thermal transfer + synthetic stock for chilled product | The label outlives the trip |
Pilot on one collection point, for one week
Give the unit to the person who actually weighs the crates, not to the project manager. Run a full week, including a rainy one. Then check three things: how many crates were recorded without a retype, how many labels still scanned after 48 hours in cold storage, and how many records needed manual repair after sync.
Those three numbers decide whether the traceability claim survives an audit. The device model is secondary — but it is usually what makes the three numbers move.
We supply single units for collection-point pilots, with the scale cable and the printer tested on the same desk before dispatch.





