HS logo
back to work
case study · 2026 · Blue Diamond Attachments

BD Photo Capture

A Windows desktop app that documents warehouse shipments: scan an order, shoot with a live preview, and photos auto-file into the correct synced folder, across two departments, self-updating, in production.

PythonOpenCVTkinterPillowNumPyPyInstaller

The problem

Operators made a folder and dragged photos into it by hand, so shipment photos regularly ended up in the wrong place. At 200+ photos across 50+ orders a day, misfiling was constant.

What it does

  • Scan an order, shoot with a live preview, and photos auto-file into the correct synced folder.
  • Two versions from one codebase: Parts on a ThinkPad kiosk, Whole Goods on a tablet.
  • Whole Goods clears the serial after every save, forcing a fresh scan per machine, the main mis-tag guard.
  • Ships as a self-updating one-file executable, currently v3.8, in production.

The hard part

Tablets simply wouldn't update, stuck on an old version while newer builds shipped. The cause: the update folder was derived from the photo-save path, which pointed at a file-server mirror of SharePoint, not the SharePoint the tablets actually read. The fix was one fixed, known update location every station reads directly.

how it fits together

BD Photo Capture · architecture

Scan → shoot → auto-file, reliably

A resilient capture app that files every photo into the right place and updates itself in the field.

  1. Scan the order
    Barcode or typed order code; the app opens or reuses the correct order.
  2. Live camera preview
    Native-resolution frame, upscaled on the display side only, never forced (forcing distorts and drops fps).
  3. Capture + auto-file
    Photos save into the correct synced folder, created only on save, next free number, never overwriting.
  4. Two versions, one codebase
    Parts on a ThinkPad kiosk, Whole Goods on a tablet; they share widgets and state, only the layout changes.
  5. Self-update
    Each station checks a fixed network location on launch and updates itself if a newer build is present.
Python · OpenCV · Tkinter · Pillow · NumPy · PyInstaller

product screens

Parts capture on the ThinkPad kiosk.
Whole Goods console, ready for the next order.
Whole Goods on the tablet, mid photo-set.

key engineering decisions

Never force a capture resolution

Forcing a size made some cameras stretch the image and drop fps; the app upscales the native frame on the display side only, aspect-locked.

Health on frame arrival, not image change

A perfectly still subject used to read as a dead feed; health now keys on frames arriving, with tolerance for USB stalls.

results & outcomes

  • Shipment photos land in the right place every time, so the warehouse always has the record it needs for a warranty or freight-damage claim.
  • Documents roughly 1,400 shipment photos a week, about 6,000 a month, across two departments with no one dragging files into folders, so documentation scales without adding labor.
  • Self-updating stations pull new builds on their own, so a fix reaches the floor without IT touching each machine.
  • Resilient camera and save handling, so no false disconnects, no distortion, and no photo ever silently overwritten.