Solution design · all figures are example or default values

Parcel Hub WMS + WCS + Digital Twin: Solution Design

A full design for a platform that plugs into every hub's existing sorters, systems and cameras with minimal load, mirrors each floor as a live digital twin, tracks every parcel, bag, person and machine from gate-in to dispatch, and lets you configure WMS and WCS logic safely. All numbers in this document are example or default values, configurable per site, not real data.

1. Executive overview and goals

The platform sits on top of what each hub already runs. It reads events from sorters, scanners, DWS, handhelds, cameras and existing WMS and TMS without loading them, builds one live model of the floor, and turns it into control: who should be where, which chute serves which destination, and what each parcel category costs in time and money.

GoalWhat it meansExample target
VisibilityEvery vehicle, bag, parcel, person and machine located and timed at every stageScan-event coverage of 99.5% or more of parcels at every mandatory stage
ThroughputRaise effective site TPT without new hardware by removing bottlenecksEffective PPH up 10 to 20% versus baseline
TurnaroundCut TOT inbound-to-dispatch per category, hit every connection cutoffConnection adherence 98% or more
WorkforceRight person at the right station at the right hourPeople utilisation 80 to 88%, idle under 10%
QualityFewer missorts, no-reads, damages and shortagesSort accuracy 99.9% or more, no-read under 1%
SecurityCamera-based detection of pilferage, intrusion and rough handlingEvery HV-cage incident with a video clip in under 60 s
CostLower cost per parcel by stage and by siteCost per parcel down 8 to 15%
ControlOne studio to configure WMS process logic and WCS device logic, tested on the twin firstZero untested config pushed to a live sorter
Low intrusionIntegrate with existing sorters, systems and cameras without loading themUnder 2% added CPU or IO on any source system
Design principle. Observe first, then advise, then control. Every site starts read-only; WCS control is switched on per site only after shadow-mode certification.

2. System architecture

read-firstRTSP, localevents onlyeventssort intentcommandssandbox testSite systemsSorter PLC and WCS, scanners, DWS,existing WMS and TMS, HRMS, IoTCCTV / IP camerasExisting RTSP or ONVIF streamsEdge AI boxDetect, track, classify; videostays on siteEdge gateway (per site)OPC-UA, MQTT, Modbus, S7, TCP, CDCagent, file drop, local bufferEvent busKafka or Redpanda, schemaregistry, per-tenant topicsStream processingNormalise, dedupe, enrich, fusescan and vision, KPIsTwin engineLive state store, layout graph,replay, simulationWMS coreShipment, bag, manifest,exceptions, workforceWCS orchestrationSort plans, chute maps, devicecommands, fallbackAnalytics and AILakehouse, forecasting,optimisation, what-ifConfiguration studioVersioned configs, sandbox,approvals, rollbackApps and APIsControl tower, floor apps,handhelds, client portal, APIs
LayerResponsibilitiesTypical technologyNote
L0 Site systemsExisting sorter PLC and WCS, scan tunnels, DWS, handhelds, legacy WMS and TMS, HRMS, badge readers, CCTVCustomer-ownedUntouched; read-first
L1 Edge and integrationProtocol adapters, CDC agents, file watchers, edge AI for video, local store-and-forward, time sync, device registryEdge gateway plus GPU edge box on siteSurvives 72 h WAN outage
L2 Event backboneDurable ordered log, schema registry, replay, per-tenant isolationKafka, Redpanda or PulsarExactly-once into state
L3 Stream processingNormalise, dedupe, join scan to shipment, fuse vision with scans, sessionise people, rolling KPIsFlink, Kafka Streamsp95 under 2 s end to end
L4 Twin engineLive state of every object, layout graph, history, replay, discrete-event simulationIn-memory state store plus time-series DBFloor refresh 1 s
L5 WMS coreShipment lifecycle, bag and manifest, exceptions, RTO, cage, DG, workforceDomain microservices, PostgresMulti-tenant
L6 WCS orchestrationSort-plan compiler, chute mapping, device command API, manual fallbackDeterministic service plus edge executorCommand ack under 100 ms at edge
L7 Analytics and simulationLakehouse, forecasting, optimiser, what-if, ML for ETA and anomalyIceberg or Delta, ClickHouse, PythonHourly retrain where needed
L8 Config studioNo-code editors, version control, sandbox on twin, approvals, staged rolloutWeb app plus config serviceGit-like history
L9 ExperienceControl tower, site and shift dashboards, floor tablet, handheld app, client portal, public APIsWeb, Android, REST and GraphQL, webhooksRole-based

3. Integration layer

Connector catalogue

SourceProtocolsLow-load methodData obtained
Sorter PLCOPC-UA subscribe, Siemens S7, Modbus TCP, EtherNet/IPSubscribe to tags with deadband; no polling of control loopsRead only by default; write only via WCS executor with interlock
Sorter WCS / SCADAVendor API, TCP socket telegrams, DB read replica, log tailMirror telegrams from a span or secondary portSort result, divert confirm, alarms, states
Scan tunnel and DWSTCP or serial telegram, FTP image drop, vendor SDKTap the existing feed; no second triggerBarcode, L x W x H, weight, image ref, read status
HandheldsOur Android app, or intent and broadcast capture on existing appBatch upload every 5 s, offline queueScans, user, station, GPS where outdoors
Existing WMS / OMSLog-based CDC (Debezium) on read replica, outbox table, webhooksNever query primary; replica or binlog onlyShipments, pre-alerts, manifests, routes
TMS / linehaulREST API, webhooks, EDI, SFTP CSVRate-limited poll with ETag and since-cursorTrips, vehicles, ETA, schedule, seals
Client / carrier pre-alertsAPI, SFTP, email-to-parsePull windows aligned to cutoffsExpected AWBs, weights, COD, DG flags
HRMS and attendanceAPI, biometric device export, CSVShift-start pull plus 15 min deltaEmployee, contract type, attendance, cost rate
Badge and BLE / UWB tags (optional)MQTTEdge aggregates to 5 s presence per zonePerson location by zone
CCTV / IP camerasRTSP, ONVIF Profile S and T, NVR re-streamPull the NVR sub-stream or a second stream; inference on site; only events and short clips leaveHeadcount, activity, parcel sightings, security events (section 10)
IoT sensorsMQTT, LoRaWANReport by exceptionChute full, door open, temperature, power
ERP and billingBatch API, nightly fileOff-peak onlyCost centres, rates, invoices

Load-minimisation strategies

StrategyHowEffect
Read from replicas and logsCDC from binlog or WAL, read replicas, never the primary OLTPNear-zero query load on source
Subscribe, do not pollOPC-UA monitored items, MQTT, webhooksPush only on change
Deadband and exception reportingAnalog tags report only on change beyond thresholdCuts tag traffic 80 to 95%
Adaptive rate limitsToken bucket per source; back off when source latency risesSource SLA protected
Passive tapsMirror telegram ports, log tailing, span portsNo added transactions
Video on the edgeInference next to the cameras; events of a few hundred bytes go to the cloud, not videoWAN use per camera drops from Mbps to kbps
Edge pre-aggregationCompress, batch, dedupe at site before WANWAN bandwidth down
Off-peak backfillHistorical loads scheduled outside sort windowsNo peak impact
Circuit breakersConnector pauses itself if source health degradesFail-safe
Shadow mode firstAll WCS logic runs in observe-only until certifiedNo control risk

Latency targets

PathTargetApplies to
Device event to edgeunder 50 msSorter, scanner
Camera frame to vision eventunder 500 msEdge AI box
Edge to cloud bus (p95)under 1 sAll events
Event to twin state (p95)under 2 sFloor view
Event to KPI tile (p95)under 5 sRolling 15-min KPIs
Sort decision lookup at edgeunder 30 msScan to divert window
WCS command to device ackunder 100 msEdge executor
Pre-alert to sort-readyunder 60 sRules and destination assigned
Alert raise after breachunder 30 sPush and app

Data contract

AspectRule
SchemaAvro or Protobuf, versioned in registry, backward compatible
Envelopeevent_id, event_type, schema_version, tenant_id, site_id, occurred_at, received_at, source, idempotency_key
IdentityCanonical IDs: AWB or parcel ID, bag ID, vehicle and trip ID, user ID, device ID; mapping table for source IDs
OrderingPartition key by parcel or bag ID; per-device sequence number
Quality checksMandatory fields, valid enums, timestamp sanity, referential lookups; failure goes to quarantine
SLAPer connector: freshness, completeness, error rate, monitored on an integration health board

Failure handling and buffering

ScenarioBehaviour
WAN downEdge stores events (72 h, disk-backed), keeps local sort-decision cache running, replays in order on reconnect
Edge gateway downActive-passive pair; sorter keeps running on its own WCS since we are non-blocking
Camera or edge AI box downZone marked vision-blind in the twin; workforce and parcel logic fall back to scans and logins only
Source schema changeSchema registry rejects incompatible change, routes to quarantine topic, alerts integration team
Duplicate or late eventsIdempotency key per event, event-time processing with 10-min allowed lateness, watermarks
Clock driftNTP or PTP at edge, cameras included; both device time and receive time stored
Poison messageDead-letter topic with replay tool
Our cloud downSite runs independently; edge keeps sort cache and handheld offline mode

4. Site and floor master data

Site

FieldType / unitSourceNotes
site_id, tenant_id, name, codestringSetupUnique per tenant
site_typeenum: gateway, hub, mother hub, DC, spoke, RTO centreSetupDrives template
address, lat, long, timezonetext, deg, IANASetupDefault Asia/Kolkata
operating_hours, shift_patterntime rangesSetupe.g. 3 x 8 h or 2 x 12 h
built_area, floors, mezzaninesq ft, countLayoutPer floor
rated_capacity_pph, rated_capacity_dailyparcels/h, parcels/dayEngineeringDesign value
clients_served, service_typeslistCommercialExpress, surface, B2B, RTO
connection_schedulelist of route, cutoff time, vehicleTMSDrives priorities
power_backup_min, dock_count_in, dock_count_outmin, countFacilities
cost_ratesINR per hour by role, per sq ft, per kWhFinanceFor cost per parcel

Zone

FieldType / unitSourceNotes
zone_id, site_id, floorstringLayout
zone_typeenum: yard, inbound dock, de-bag, inscan, induction, sorter, manual sort, chute and bagging, staging, outbound dock, cage, DG, RTO, exception, damage repair, MHE parkingLayout
polygonlist of x,y (m)CAD importFor twin, heatmaps and camera zones
area_m2, capacity, capacity_unitm², number, parcels/bags/palletsEngineering
access_level, owner_teamrole, teamAdminSecure zones need roles
max_dwell_min, max_headcountmin, peopleConfigDwell and crowding alerts
camera_idslistCamera registryCameras covering the zone

Dock

FieldType / unitSourceNotes
dock_id, door_no, directionstring, enum in/out/bothLayout
dock_typeenum: leveller, ground, telescopic conveyor, boomFacilitiesAffects unload PPH
vehicle_types_allowedlist: 2W, 3W, LCV, 14 ft, 17 ft, 20 ft, 22 ft, 32 ft SXL, 32 ft MXLConfig
dock_height_mm, has_conveyor, conveyor_ratemm, bool, parcels/hFacilities
assigned_routes, prioritylist, rankConfigOutbound docks
stateenum: free, reserved, occupied, unloading, loading, blockedLiveTwin, confirmed by camera
x, y, headingm, degCAD

Station

FieldType / unitSourceNotes
station_id, zone_id, station_typeenum: de-bag table, inscan, DWS, induct, manual sort wall, put wall, bagging, exception desk, label reprint, repack, cage deskLayout
positions_max, positions_minpeopleEngineeringHeadcount bounds
rated_pph_per_positionparcels/hTime studyStandard rate
skills_requiredlistConfigMatches skills matrix
devices_boundlist of device IDsDevice registry
stateenum: open, closed, starved, blocked, downLive

Sorter

FieldType / unitSourceNotes
sorter_id, oem, model, install_yearstringAsset
sorter_typeenum: cross-belt, tilt-tray, sliding shoe, bomb-bay, narrow-belt, pop-up wheel, pusher, AMR robotic, linearAsset
loop_length_m, speed_mps, carrier_count, carrier_pitch_mmm, m/s, count, mmOEM
design_throughput_iphitems/hOEMIdeal rate for OEE
min_dims, max_dims, min_wt, max_wtmm, kgOEMDefines conveyable
induct_count, chute_count, reject_chute_idscount, listOEM
max_recirccountConfigThen reject
scan_tunnelsides, cameras, spec read rateOEM
plc_protocol, plc_endpoint, tag_mapenum, URI, mapIntegration
planned_maint_windowstime rangesMaintenanceExcluded from OEE availability

Induct

FieldType / unitSourceNotes
induct_id, sorter_id, induct_typeenum: manual, semi-auto, auto, roboticAsset
rated_rate_iph, positionsitems/h, peopleOEM
merge_priority, gap_mmrank, mmWCS
scanner_id, dws_idIDsRegistry
stateenum: running, starved, blocked, stopped, faultedPLC

Chute

FieldType / unitSourceNotes
chute_id, sorter_id, chute_no, sidestring, int, L/ROEM
chute_typeenum: gravity, roller, spiral, bag hanger, gaylord, cage, toteAsset
capacity_parcels, full_sensorcount, boolAssetCamera fill estimate where no sensor
destination_mappincode set, route, hub, client, serviceSort planVersioned
bag_rulemax parcels, max kg, max fill %Config
ptl_light_idIDRegistryPut-to-light
stateenum: open, full, near-full, disabled, jammed, overflowLive

Lane / staging

FieldType / unitSourceNotes
lane_id, lane_typeenum: route lane, cutoff lane, overflow, bulky stagingLayout
capacity, capacity_unitbags, pallets, cagesEngineering
linked_dock, linked_route, cutoff_timeID, ID, timeConfig
polygonx,yCAD

Cage / secure

FieldType / unitSourceNotes
cage_id, cage_typeenum: high-value, DG, hold, legal hold, damage, lost and foundLayout
capacity, access_roles, camera_idscount, roles, IDsSecurity
dual_controlboolConfigTwo-person open and close
seal_policyper bag or per cageConfig
loiter_threshold_ssConfigVision alert

Device

FieldType / unitSourceNotes
device_id, device_typeenum: handheld, ring scanner, fixed scanner, scan tunnel, DWS, printer, scale, RFID, PTL, camera, edge AI box, PLC, badge reader, BLE tagRegistry
make, model, firmware, serialstringAsset
ip, mac, protocolstringIntegration
bound_station, bound_userIDLive
battery_pct, last_heartbeat, state%, timestamp, enumLiveAlert when stale over 2 min

Camera

FieldType / unitSourceNotes
camera_id, nvr_id, stream_urlstring, RTSP URICCTV registryCredentials held in vault
make, model, lens_mm, fov_degstring, mm, degAsset
resolution, fps_native, fps_inferencepx, fpsConfigInference FPS lower than native
mount_height_m, tilt_deg, x, ym, degSurveyPlaced in twin
homography3x3 matrixCalibrationPixel to floor coordinates
zones_covered, rois, tripwirespolygons, linesConfigCounting and intrusion lines
models_enabledlistConfigPer camera
privacy_maskspolygonsConfigToilets, rest areas, outside views
stateenum: online, offline, obstructed, low-lightHealthTamper detection

Layout and MHE

FieldType / unitSourceNotes
origin, unit, floor_plan_filex,y, m, DXF, DWG, SVG or IFCCADTwin base
object_x, object_y, object_z, rotation, footprintm, deg, polygonCADPer object
path_graphnodes and edges with length m and speed m/sEngineeringWalking and conveyor travel time
conveyor_segmentslength m, speed m/s, accumulationOEMTransit time
mhe_assetstype (pallet jack, BOPT, forklift, roll cage, trolley), count, charge stateAssetEquipment utilisation

Every object carries x, y and a footprint so the twin can draw it, plus valid_from and valid_to so layout changes are versioned like any config.

5. Process-by-process design

Floor flow

bagsbulky, looseyesnorejectreinductloose loadGate-in and yardDock and unloadBag scan vs pre-alertDe-bagInscan and DWSCategory and destinationConveyable?Machine sortSecondary / manual sortException deskBagging and sealStaging and loadDispatch and handover

5.1 Gate-in and yard

  1. Pre-arrivalTrip ETA from TMS, expected bags and AWBs from pre-alert
  2. Gate-inVehicle number (ANPR or manual), seal number and photo, driver ID, trip ID
  3. Seal checkSeal intact and matches dispatch record
  4. Yard slotVehicle placed in yard queue with priority score
  5. Dock callDriver called to assigned dock

Scan and vision events

EventTriggerKey fields
VEHICLE_GATE_INGate scan or ANPR cameravehicle_no, trip_id, seal_no, seal_ok, photo_ref
VEHICLE_YARD_PARKEDYard slot scan or camerayard_slot
VEHICLE_DOCK_CALLEDSystemdock_id, called_at

Parameters captured

ParameterUnitSource
Scheduled vs actual arrivalminTMS, gate
Seal mismatch flagboolGate
Yard wait (gate-in to dock-on)minEvents
Vehicle type, fill %enum, %TMS
Priority score0 to 100Rule: cutoff proximity, volume, client SLA

Resources

  • 1 security guard per gate per shift (example)
  • ANPR camera or handheld
  • Yard marshal for 15+ vehicle yards

Rules

  • Docking priority = earliest outbound connection at risk, then volume, then arrival order
  • Seal mismatch puts vehicle on hold and requires supervisor

Exceptions

  • Seal tampered or mismatch
  • Unscheduled vehicle
  • Vehicle late beyond threshold

KPIs

  • Arrival adherence %
  • Yard dwell min
  • Gate-in to dock-on min

5.2 Dock and unloading

  1. Dock-onVehicle docked, dock state to occupied (camera confirms)
  2. Seal breakSeal scanned and broken, photo
  3. UnloadBags and loose parcels scanned on exit from vehicle
  4. ReconcileLive count vs pre-alert: short, excess, damaged
  5. CloseUnload complete, vehicle released or reassigned to outbound

Scan and vision events

EventTriggerKey fields
VEHICLE_DOCKEDDock scan or cameradock_id, vehicle_no
UNLOAD_START / UNLOAD_ENDHandheld or camera activitydock_id, team_ids
BAG_INSCANBag tag scanbag_id, origin, weight, seal_ok
LOOSE_PARCEL_INSCANAWB scanawb
BAG_SHORT / BAG_EXCESSReconcilebag_id, manifest_id

Parameters captured

ParameterUnitSource
Bags expected vs receivedcountPre-alert, scans
Unload durationminEvents
Unload ratebags or parcels per hourDerived
Bag weight variance vs manifestkg, %Scale
Dock occupancy%Derived
Crew sizepeopleCheck-in, camera headcount

Resources

  • Unload crew 2 to 4 per dock (example)
  • Telescopic conveyor, pallet jack, roll cages
  • Handheld or ring scanner per crew
  • Dock camera

Rules

  • Bulky and loose parcels go straight to manual sort or bulky staging
  • High-value bag goes to cage, DG bag to DG zone
  • Weight variance over 5% (example) flags tamper check

Exceptions

  • Short bag
  • Excess bag
  • Wet or torn bag
  • Seal broken bag
  • Wrong-hub bag (misroute in)
  • Rough handling seen on camera

KPIs

  • Unload PPH
  • Dock turn time
  • Shortage and excess rate
  • Dock utilisation

5.3 De-bagging

  1. Bag open scanBag ID scanned at de-bag table, seal number recorded
  2. Empty bagParcels tipped onto table or feed conveyor (camera detects de-bag action)
  3. Parcel scanEach parcel scanned to bag (or captured by tunnel downstream)
  4. Bag close-outCount vs bag manifest, bag marked empty and sent to bag pool

Scan and vision events

EventTriggerKey fields
BAG_OPENEDHandheld or fixed scannerbag_id, station_id, user_id
PARCEL_DEBAGGEDScanawb, bag_id
VISION_DEBAG_DETECTEDCamerastation_id, parcel_count_est
BAG_RECONCILEDSystemexpected, found, short_awbs, excess_awbs

Parameters captured

ParameterUnitSource
Parcels per bagcountManifest
De-bag time per bagsEvents
De-bag PPH per personparcels/hDerived
Bag queue at stationbagsTwin, camera
Short and excess parcelscountReconcile

Resources

  • 1 to 2 people per de-bag table (example)
  • De-bag tables or tipping stations, feed conveyor
  • Fixed scanner or handheld
  • Overhead camera per 2 to 4 tables

Rules

  • Excess parcel gets auto-lookup; if not found it becomes no-data exception
  • Damaged parcel diverted to damage desk with photo
  • Camera count differs from bag count by more than 1: recount task

Exceptions

  • Short parcel in bag
  • Excess parcel
  • Damaged or leaking
  • Unlabelled parcel

KPIs

  • De-bag PPH
  • Bag queue time
  • Parcel-level shortage rate

5.4 Inscan and DWS

  1. InscanParcel scanned into hub custody (handheld or tunnel); camera at profiler gives auto inscan status
  2. DWS captureLength, width, height, actual weight, image
  3. CategoriseCategory assigned from dims, weight, flags
  4. Destination resolveSort rules give destination, chute and bag
  5. LabelReprint if barcode unreadable or relabel needed

Scan and vision events

EventTriggerKey fields
PARCEL_INSCANScanawb, station_id, user_id
VISION_INSCANProfiler cameratrack_id, awb_ocr, confidence
DWS_CAPTUREDDWSl_mm, w_mm, h_mm, wt_g, vol_wt_g, image_ref
CATEGORY_ASSIGNEDSystemcategory, flags
DESTINATION_RESOLVEDRules enginedest, route, chute_id

Parameters captured

ParameterUnitSource
Declared vs actual weightg, %Pre-alert, DWS
Volumetric weightgL x W x H / divisor (example 5000 cm³ per kg)
Chargeable weightgmax(actual, volumetric)
Read resultenum: good, no-read, multi-readScanner
Data statusenum: found, no-dataLookup

Resources

  • DWS units, label printers
  • Inscan operators where not automated
  • Label reprint station
  • Profiler camera

Rules

  • Weight discrepancy over threshold triggers billing adjustment event
  • Category drives path: conveyable to induct, others to manual sort

Exceptions

  • No-read
  • No-data
  • Weight discrepancy
  • Dimensions out of sorter range
  • Seen by camera but not scanned

KPIs

  • Inscan PPH
  • DWS read rate
  • Weight discrepancy rate

5.5 Machine sort

  1. InductOperator places parcel label-up on induct belt, or auto-induct
  2. ScanTunnel reads barcode, sends to WCS
  3. DecideWCS returns chute from sort plan cache
  4. DivertCarrier tilts or belt discharges to chute
  5. ConfirmDivert confirm or recirculate or reject; camera at sorter exit marks primary sort done

Scan and vision events

EventTriggerKey fields
PARCEL_INDUCTEDPLCinduct_id, carrier_id
SORTER_SCANTunnelread_status, codes
SORT_DECISIONWCSchute_id, reason
PARCEL_DIVERTEDPLCchute_id, confirm
VISION_PRIMARY_SORTChute camerachute_id, track_id
PARCEL_RECIRC / PARCEL_REJECTPLCreason: no-read, chute full, no-data, late decision

Parameters captured

ParameterUnitSource
Induction rateitems/h per inductPLC
Carrier fill %%PLC
Recirculation count per parcelcountPLC
Decision latencymsWCS
Sorter state timerunning, idle, starved, blocked, faultPLC
Chute fill level%Sensor or camera

Resources

  • 1 to 2 inductors per induct (example)
  • Sorter, scan tunnel, chutes
  • Maintenance technician on shift
  • Chute cameras for jams

Rules

  • Max recirculation 2 (example) then reject chute
  • Chute full: hold divert, recirculate, or overflow chute per plan
  • Dynamic chute reassignment allowed only from approved plan

Exceptions

  • No-read
  • No-data
  • Chute full
  • Jam or pile-up
  • Double induct
  • Oversize detected

KPIs

  • Sorter TPT and OEE
  • Induct PPH per person
  • Recirculation %
  • No-read %
  • Sort accuracy

5.6 Secondary / manual sort

  1. ReceiveBulky, non-conveyable, rejects, exceptions and secondary-sort parcels arrive (camera marks arrival as secondary sort)
  2. ScanHandheld scan shows destination and location
  3. PlacePut to wall, cage, pallet or floor grid location
  4. ConfirmLocation scan confirms placement

Scan and vision events

EventTriggerKey fields
MANUAL_SORTHandheldawb, location_id, user_id
VISION_SECONDARY_SORTArea camerazone_id, track_id
LOCATION_FULLHandheldlocation_id

Parameters captured

ParameterUnitSource
Manual sort PPHparcels/h per personDerived
Walk distance per parcelmPath graph, vision tracks
Wrong-location scanscountValidation

Resources

  • Manual sorters (example 1 per 120 to 200 parcels/h)
  • Put walls with PTL, pallets, cages
  • Pallet jacks for bulky

Rules

  • Destination locations laid out by volume, closest for highest volume
  • Scan-to-confirm mandatory

Exceptions

  • Wrong location
  • Location full
  • Parcel too heavy for one person (2-person lift rule above 25 kg example)

KPIs

  • Manual sort PPH
  • Manual sort accuracy
  • Bulky TOT

5.7 Sort exceptions

  1. CaptureException raised with type, photo or camera clip, location
  2. RouteTo exception desk queue by type and priority
  3. ResolveRelabel, data lookup, repack, hold, RTO, or reinduct
  4. CloseOutcome and time recorded

Scan and vision events

EventTriggerKey fields
EXCEPTION_RAISEDAnytype, awb, severity, photo_ref
EXCEPTION_ASSIGNEDSystemowner_id
EXCEPTION_RESOLVEDDeskresolution, reinduct

Parameters captured

ParameterUnitSource
Open exceptions by type and agecount, minEvents
Resolution timeminEvents
Repeat exception per AWBcountEvents

Resources

  • Exception desk 1 to 3 people per shift (example)
  • Label printer, scale, repack materials

Rules

  • Types: no-read, no-data, misroute, hold (client or legal), damage, short, excess, weight dispute, address issue, DG undeclared, seen-not-scanned
  • Age SLA per type, e.g. no-read 15 min, no-data 60 min (example)

Exceptions

  • Unresolved past cutoff becomes a missed connection

KPIs

  • Exception rate per 1,000 parcels
  • Mean time to resolve
  • Exception backlog

5.8 Bagging and consolidation

  1. Open bagBag ID assigned to chute, destination printed on tag
  2. FillParcels scanned into bag (or auto-associated by divert); camera detects bagging action
  3. CloseOn count, weight, fill or cutoff rule
  4. SealSeal number scanned, bag weighed
  5. ManifestBag added to outbound manifest for the connection

Scan and vision events

EventTriggerKey fields
BAG_CREATEDHandheld or PTLbag_id, chute_id, dest
PARCEL_BAGGEDScan or divertawb, bag_id
VISION_BAGGING_DETECTEDCamerachute_id, count_est
BAG_SEALEDScanseal_no, wt_g, count
MANIFEST_UPDATEDSystemmanifest_id, bag_id

Parameters captured

ParameterUnitSource
Parcels per bagcountEvents
Bag weightkgScale
Bag fill timeminEvents
Chute dwellminEvents
Bagging PPH per personparcels/hDerived

Resources

  • 1 bagger per 4 to 8 chutes (example)
  • Bags, tags, seals, scale, printer
  • Roll cages to staging

Rules

  • Close bag at max 25 kg or 60 parcels or 2 h fill (example defaults)
  • Forced close at cutoff minus 30 min (example)
  • Mother bag for low-volume destinations

Exceptions

  • Parcel scanned into wrong bag
  • Bag overweight
  • Seal not scanned

KPIs

  • Bagging PPH
  • Bag fill rate
  • Chute dwell
  • Missort caught at bagging

5.9 Staging and loading

  1. StageSealed bags moved to route lane
  2. Assign vehicleTrip and dock assigned
  3. Load scanEvery bag scanned into vehicle, sequence for multi-drop
  4. ReconcileManifest vs loaded, camera bag count at dock
  5. Seal vehicleSeal number and photo

Scan and vision events

EventTriggerKey fields
BAG_STAGEDScanlane_id
LOAD_START / LOAD_ENDHandheld or camera activitydock_id, trip_id
BAG_LOADEDScanbag_id, trip_id
VEHICLE_SEALEDScanseal_no, photo_ref

Parameters captured

ParameterUnitSource
Staging dwellminEvents
Load duration and ratemin, bags/hEvents
Vehicle fill (volume and weight)%Bag dims and weight vs vehicle capacity
Left-behind bagscountReconcile

Resources

  • Loading crew 2 to 3 per dock (example)
  • Telescopic conveyor, roll cages
  • Handheld
  • Dock camera

Rules

  • Block vehicle seal if manifest bags are missing (override needs supervisor)
  • Load by drop sequence for milk runs

Exceptions

  • Bag missing at load
  • Wrong-vehicle load
  • Vehicle late or not placed
  • Loaded on camera but not scanned

KPIs

  • Loading PPH
  • Vehicle fill %
  • Left-behind rate
  • Dock turn time

5.10 Dispatch and handover

  1. Gate-outVehicle, seal and trip checked at gate
  2. DepartDeparture time vs schedule
  3. HandoverLinehaul or last-mile partner e-POD
  4. NotifyPre-alert to destination hub and client webhook

Scan and vision events

EventTriggerKey fields
VEHICLE_DEPARTEDGatetrip_id, departed_at
HANDOVER_CONFIRMEDApppartner_id, pod_ref
PREALERT_SENTSystemdest_site, bag_ids

Parameters captured

ParameterUnitSource
Departure vs scheduledminEvents
Connection madeboolCutoff vs bag load time
Handover count matchboolPartner scan

Resources

  • Security at gate
  • Dispatch supervisor

Rules

  • Late departure reason code mandatory
  • Auto pre-alert on gate-out

Exceptions

  • Missed connection
  • Partner count mismatch

KPIs

  • On-time departure %
  • Connection adherence %
  • Inbound-to-dispatch TOT

5.11 RTO and returns

  1. IdentifyRTO flag from client or failed delivery
  2. InscanSeparate RTO lane or sort destination
  3. ConsolidateBy client or seller return address
  4. DispatchBack to origin or client warehouse

Scan and vision events

EventTriggerKey fields
RTO_MARKEDSystemawb, reason
RTO_SORTEDScandest

Parameters captured

ParameterUnitSource
RTO volume and sharecount, %Events
RTO dwellhEvents

Resources

  • RTO desk or chute group
  • Bags for client consolidation

Rules

  • RTO parcels never re-enter forward sort
  • Ageing alert over 24 h (example)

Exceptions

  • RTO with damage
  • Client address unknown

KPIs

  • RTO TOT
  • RTO ageing

5.12 High-value cage

  1. DetectFlag from declared value over threshold (example INR 10,000)
  2. MoveEscorted to cage, dual scan in
  3. StoreCage location scan, camera watches cage
  4. ReleaseDual scan out to sealed HV bag

Scan and vision events

EventTriggerKey fields
CAGE_IN / CAGE_OUTScancage_id, user_ids
VISION_LOITERCage cameracage_id, dwell_s, clip_ref

Parameters captured

ParameterUnitSource
Items in cage, value in cagecount, INREvents
Cage dwellminEvents
Access eventscountBadge, camera

Resources

  • Cage custodian per shift
  • Lockable cage, cameras with 2 angles

Rules

  • Two-person rule for in and out (camera checks two people present)
  • No HV parcel on open chute

Exceptions

  • Unmatched cage count
  • Unauthorised access
  • Loitering

KPIs

  • HV loss rate
  • Cage dwell

5.13 Dangerous goods

  1. DetectDG flag, UN number, keyword screening, or DG label seen by camera
  2. SegregateDG zone, separate bag with DG label
  3. RouteSurface only where air is restricted

Scan and vision events

EventTriggerKey fields
DG_FLAGGEDSystem, scan or cameraun_no, class
DG_SEGREGATEDScanzone_id

Parameters captured

ParameterUnitSource
DG count by classcountEvents
Undeclared DG foundcountExceptions

Resources

  • DG-trained staff
  • Spill kit, DG cage

Rules

  • Only DG-certified users can handle; enforced at login
  • Lithium battery rules by mode

Exceptions

  • Leak
  • Undeclared DG

KPIs

  • DG compliance %

6. Parcel and bag model, categories

Parcel entity

FieldType / unitSourceNotes
awb, parcel_id, client_id, order_refstringPre-alertCanonical ID plus source IDs
service_typeenum: express, standard, surface, air, same-day, B2BPre-alertDrives priority
origin_site, dest_site, dest_pincode, route_codestringPre-alert, rules
declared_wt_g, actual_wt_g, vol_wt_g, chargeable_wt_ggPre-alert, DWS
l_mm, w_mm, h_mm, volume_cm3mm, cm³DWS
category, handling_flagsenum, listRulesSee category table
payment_type, cod_amount, declared_valueenum, INRPre-alertCOD and HV rules
dg_flag, un_no, dg_classbool, stringPre-alert, screening
fragile, orientation, stackableboolPre-alert, label
promised_by, connection_id, cutoff_attimestamp, IDSLA engine
state, location_id, bag_id, last_event_atenum, IDs, timestampTwinLive state
stage_timesmap of stage to in and out timestampsEventsPer-stage TOT
vision_statusmap: inscan, primary sort, secondary sort, bagged, each with source scan, vision or bothFusionScan vs camera reconciliation
exception_ids, rto_flag, hold_flaglist, boolExceptions

Bag entity

FieldType / unitSourceNotes
bag_id, bag_typeenum: standard sack, mother bag, HV bag, DG bag, tote, roll cage, palletBag masterReusable or single-use
origin_site, dest_site, route_code, chute_idstringBagging
seal_no, seal_statestring, enumScan
parcel_count, wt_g, fill_pctcount, g, %Scans, scale, camera
parent_bag_idstringConsolidationMother and child
manifest_id, trip_idIDsManifest
stateenum: open, closed, sealed, staged, loaded, in transit, received, opened, emptyTwin

Parcel categories and their effect on TOT, TPT and PPH

CategoryDefault threshold (configurable)Handling pathEffect on PPH and TPTEffect on TOT (example)
Flyer / polybagUp to 0.5 kg, flat, max side 400 mmMachine sort, baggedHighest PPH; recirculation risk on some sortersLow
Small boxUp to 2 kg, max side 450 mmMachine sort, baggedHigh PPHLow
Standard2 to 10 kg, within sorter max dimsMachine sort, baggedBaselineBaseline
Large10 to 25 kg or a side 600 to 900 mmMachine sort if within OEM limits, else manualSlower induct, fewer per carrier+15 to 30 min
Bulky25 to 50 kg or a side over 900 mmManual sort, loose loadManual PPH 3 to 5 times lower+30 to 90 min
Non-conveyableIrregular, rolls, tyres, liquids, over 50 kg, outside sorter limitsManual, MHE neededLowest PPH; 2-person or MHE+60 to 180 min
FragileFlag from client or labelManual or low-drop chuteLower PPH, damage risk+10 to 30 min
High-valueDeclared value over INR 10,000Cage, dual controlExtra scans+15 to 45 min
CODPayment type CODNormal path, COD trackingNeutralNeutral
Dangerous goodsDG flag or UN numberDG zone, segregated bagManual, certified staff+30 to 120 min
Express / priorityService typePriority induct and early bag closeNeutralShorter, by rule
RTORTO flagRTO lane or chuteNeutralSeparate SLA

Thresholds and time effects are example defaults; each site sets them from its sorter's OEM limits and its own time studies. A parcel can hold one size category plus several flags (fragile, HV, COD, DG, express, RTO).

How mix changes site throughput

Effective site PPH = 1Σ ( share of category ÷ PPH of category )

Because the slow paths sit in the denominator, a small rise in bulky or non-conveyable share pulls site PPH down sharply.

7. Workforce module

Workforce parameters

FieldType / valuesSourceNotes
employee_id, name, employment_typeenum: permanent, contract, agency, gigHRMS
vendor_idstringHRMSContract labour vendor
team_id, roleenum: unload, de-bag, inscan, induct, manual sort, bagging, load, exception, cage, MHE, supervisorRoster
skillslist of skill, level 1 to 4, certified untilSkills matrixDG, MHE licence, induct, cage
shift_id, planned_start, planned_endtimeRoster
attendance_in, attendance_outtimestampBiometric
station_id, checkin_at, checkout_attimestampScanner login or badgeDeployment log
stateenum: active, idle, starved, blocked, travel, break, training, off-floorDerived from scans plus camera activityEvery minute
zone_presencezone, time in zoneCamera or BLEAnonymous unless linked to badge
scans, parcels_handledcountEvents
std_pphparcels/hTime study by station and categoryEngineered standard
cost_per_hourINR/hFinanceIncludes overtime multiplier
overtime_min, break_minminAttendance
errorscount: missort, wrong bag, damageExceptionsQuality per person

Utilisation states

StateRule (example)Meaning
ActiveScan or task event in the last 60 s (example), or camera sees a work activity at own stationProductive time
IdleLogged in, no event over 60 s, camera sees idle pose, work available at stationCoachable
StarvedNo event, station queue emptyPlanning issue: redeploy
BlockedNo event, downstream full or machine faultMachine or flow issue
TravelMoving between stations (camera track crosses zones)Layout or task issue
BreakScheduled break window or break check-inPlanned
Off-floorAttended but not checked in and not seen in any work zoneLeakage

Formulas

Required heads = Peak hourly load at stationStd PPH per person × Efficiency
Utilisation = Active minutesAttended minutes
PPH per person = Parcels handledDeployed hours
Labour cost per parcel = Σ (hours × cost rate)Parcels processed

Peak hourly load = daily volume ÷ operating hours × peak factor × stage share of volume. Daily heads = heads per shift × number of shifts, plus an absenteeism buffer (example 8 to 12%).

Demand-based redeployment logic

  1. Forecast loadPer station, per 15 min, from pre-alerts, yard queue, trips ETA, and in-floor WIP
  2. Compute needRequired heads per station from load, std PPH, efficiency and category mix
  3. CompareGap = required minus deployed (camera headcount cross-checks logins); flag stations over plus or minus 1 head for 2 intervals
  4. MatchPick donors from starved or over-staffed stations with the required skill, shortest walk
  5. GuardrailsMinimum heads per station, max 2 moves per person per shift, no move within 20 min of last move
  6. RecommendShift lead gets a card: move 3 from bagging to de-bag for 40 min, expected TOT gain
  7. LearnTrack accepted moves and actual effect to tune the model

Where people are most utilised

8. Machine and WCS module

Sorter parameters

ParameterUnitSourceNotes
Design throughputitems/hOEMIdeal rate
Actual throughputitems/hPLC divert countRolling 15 min
Induct rate per inductitems/hPLC
Carrier utilisation%Occupied carriers / available
Read rate%TunnelGood reads / scans
No-read, multi-read%Tunnel
No-data%WCSRead but no destination
Recirculation%PLCRecirc events / inducted
Reject%PLCTo reject chute
Divert confirm failure%PLCPossible missort
Chute full timemin per chuteSensor or camera
State durationsmin: running, idle, starved, blocked, fault, planned stopPLCFor OEE
Alarmscode, severity, durationPLC
EnergykWhMeterCost per parcel

OEE for sorters

OEE = Availability × Performance × Quality
Availability = Running timePlanned production time
Performance = Items inductedRunning time × Design throughput
Quality = Correctly sorted itemsItems inducted

Planned production time excludes planned maintenance and scheduled breaks; starved time is reported separately so a sorter waiting for parcels is not blamed on the machine.

WCS configuration and sort plans

ItemDescription
Sort planDestination to chute mapping per wave or time window; versioned; compiled to edge cache
Sort keysPincode, route, hub, client, service, category, priority
Chute groupsSeveral chutes per destination with fill-balancing
Overflow rulesChute full: recirculate N times, then overflow chute, then reject
Dynamic reassignmentSwap low-volume destinations in and out of chutes by hourly volume, only from approved options
Induction controlInduct priority, gap, speed limits, stop and start by schedule
Device configScanner symbologies, DWS thresholds, printer templates, PTL colours, camera ROIs and models
Manual fallbackOn sorter fault: switch to handheld sort to floor grid using the same plan

Alarm catalogue (examples)

AlarmSourceSeverityOwner
Jam at chute or inductPLC alarm or camera pile-upHighTechnician
E-stopPLCCriticalShift lead and maintenance
Scan tunnel read rate under 97% (example)KPIHighMaintenance
Chute full over 5 min (example)Sensor or cameraMediumBagger
Recirculation over 5% (example)KPIMediumShift lead
Sorter starved over 10 min while yard has vehiclesTwinHighShift lead
Comms loss with PLCEdgeCriticalIntegration on-call

Manual fallback

  1. DetectSorter state fault over 3 min or availability below threshold
  2. AnnounceAlert to shift lead, twin shows affected chutes
  3. SwitchHandhelds switch to manual sort mode with destination-to-floor-location plan
  4. RedeployInductors moved to manual sort per staffing model
  5. RecoverSorter back: drain manual WIP to bagging, resume machine sort

9. Digital twin and simulation

Twin components

ComponentContentFed by
Static modelLayout, zones, objects, path graph, conveyor segments, capacities, camera positions and coverage from master dataCAD import, master data
Live stateEvery vehicle, bag, parcel, person, device, chute and dock with state and locationScan, PLC and vision events
People layerHeadcount and activity per zone, anonymous tracks, utilisationVision, logins, BLE
Flow stateQueues and WIP per stage, arrival and service rates, utilisationStream KPIs
HistoryAll events with event time, enabling replayEvent log, time-series DB
SimulationDiscrete-event model calibrated from historySimulation engine
ForecastNext 1 to 24 h load per stageML on pre-alerts, trips, seasonality

Replay

What-if levers

LeverInputsOutputs
VolumeDaily volume, hourly curve, peak factorTPT, TOT, backlog, cutoff misses
MixCategory shares (flyer, standard, bulky, non-conveyable, HV, DG)Manual sort load, TOT by category
HeadcountHeads per team, shift times, skill mix, contract sharePPH, utilisation, cost per parcel
MachineDowntime window, induct closed, chutes disabled, speed changeTPT drop, fallback load
Sort planNew chute map, destination mergesChute balance, walk distance, missort risk
ArrivalsVehicle delays, schedule changeDock queue, connection adherence
LayoutAdd de-bag tables, move staging lanesTravel time, congestion (from vision tracks)

Bottleneck detection

  1. MeasureArrival rate and capacity for every stage each 15 min
  2. UtilisationStage with highest utilisation and growing queue is the active constraint
  3. Root causeSplit capacity loss into people (idle, absent), machine (fault, starved, jam) and mix (bulky share)
  4. QuantifyMinutes of TOT added and parcels at risk of missing cutoff
  5. ActRecommend redeploy, chute swap, induct priority, or dock change

10. Computer vision and camera layer

Uses the cameras each hub already has. Edge AI boxes on site read the NVR streams, run the models locally and send only small events (and short clips for alerts) to the cloud, so the WAN, the NVR and the cameras carry almost no extra load.

MQTT to busExisting camerasRTSP sub-stream from NVRDecode and sample5 to 15 fps per use caseDetect and trackPeople, parcels, bags, vehicles,PPERules on edgeZones, tripwires, dwell, activity,reconciliationEvents and clipsJSON events; clips only on alertTwin, WMS, alerts

People: headcount, activity, time in zone

CapabilityHow it worksEvent fieldsFrequency
Live headcount per zonePerson detection plus tracking inside zone polygons; count is unique tracks present in the last 10 s (example)zone_id, count, confidenceEvery 5 s
Activity recognitionPose and action model per track: unloading, de-bagging, inducting, scanning, manual sorting, bagging, loading, carrying, pushing cage, MHE driving, idle standing, phone use, walkingtrack_id, activity, confidence, duration_sOn change
Time in zoneEntry and exit of each track per zone; dwell per visit and cumulativetrack_id, zone_id, enter_at, exit_atOn exit
Anonymised trackingRandom track ID per visit, re-identification across cameras inside the site only, no face stored; IDs rotate every shifttrack_id, x, y1 s
Badge linking (optional)Fuse track with BLE tag, scanner login at station or badge tap to attach employee_idtrack_id, employee_id, link_methodOn link
Face ID (optional, opt-in)Only with explicit consent, only at entry points, templates encrypted on edge; off by defaultemployee_id, match_scoreOn match
Crowding and flowDensity per m² and walking paths heatmapzone_id, density1 min

Live headcount by zone (example view)

ZoneSeen on cameraPlannedLogged inGap
Inbound docks2331 short
De-bag6651 present without login
Induction444OK
Secondary sort5441 extra
Bagging3441 short
Outbound docks3321 present without login
Exception desk1221 short

Illustrative numbers only. The gap column is what drives redeploy cards and login-gap alerts.

Parcel tracking by vision

Status or detectionVision triggerEventEffect in WMS
Auto inscanParcel passes profiler or DWS; camera track plus label OCR or barcode readVISION_INSCANStatus inscan (vision); confirmed when scan matches
Primary sort doneParcel seen leaving sorter into chuteVISION_PRIMARY_SORTStatus primary sort done for that chute's destination
Secondary sortParcel arrives in the secondary sort area or put wallVISION_SECONDARY_SORTStatus secondary sort in progress
De-baggingBag opened and emptied at station; parcel count estimateVISION_DEBAG_DETECTEDCompare with bag manifest count
BaggingParcels dropped into bag at chute; bag closed and liftedVISION_BAGGING_DETECTEDCompare with scans into bag
Load and unload countBags crossing dock tripwire in or outVISION_DOCK_COUNTCompare with load or unload scans
Chute jam or pile-upFill level estimate over 90% or no movement for 60 s while divert continuesVISION_CHUTE_JAMAlert bagger and maintenance
Conveyor jam or gapParcels stationary on running belt, or long empty gaps at inductVISION_CONVEYOR_JAMAlert and induct coaching
Floor parcelParcel lying outside any valid zone over 5 minVISION_STRAY_PARCELPick-up task
DamageCrushed, torn or leaking parcel classifierVISION_DAMAGEDamage desk with image

Camera vs scan reconciliation

CaseRule (example)Outcome
Seen but not scannedVision event with no matching scan within 120 s (example) at the same stageMissed scan task to the station; counts in scan compliance
Scanned but not seenScan with no vision event at a covered stageCheck camera coverage or ghost scan (scan without physical handling)
Count mismatchVision count for bag, dock or chute differs from scan count by more than tolerance (example 1 or 2%)Recount or audit task
Location mismatchScan says chute A; vision sees parcel at chute BPossible missort; hold bag before seal
Matching keysTime window, location, OCR text, size and colour signature, sorter carrier IDFusion confidence score 0 to 1

Security and suspicious activity

BehaviourDetectionZonesDefault confidenceSeverity
Pilferage gesturesAction model: concealment into clothing or bag, opening a parcel, hand-to-pocket after handlingAll work zones0.80High
Loitering near HV cageTrack dwell inside cage buffer over 60 s (example) without a cage scanHV cage0.70High
Two-person rule breachCage open with fewer than 2 peopleHV cage0.75Critical
Non-dock exitPerson or parcel crossing a tripwire at a non-dock door or fencePerimeter, side doors0.70Critical
Restricted zone intrusionPerson in DG, cage or server room zone without access role (badge link) or after hoursSecure zones0.70High
Rough handlingThrow, drop from height, kicking, stepping on parcels; parcel velocity and poseDocks, sort, bagging0.75Medium
Missing PPENo safety shoes, high-vis vest or helmet where requiredDocks, MHE areas0.70Medium
Unsafe MHEForklift speed or person too close to moving MHEMHE areas0.75High
Camera tamperBlocked, moved or defocused viewAll cameras0.90High
Smoke or fireSmoke and flame classifierAll0.80Critical

Every security alert carries a clip (10 s before, 20 s after, example), a still, the zone and the confidence. A human reviews it before any action against a person.

Models

ModelTaskApproachDefault thresholdLatency per frame
Person detectorDetectionYOLO-class detector, fine-tuned on hub footage0.50under 20 ms
Multi-object trackerTrackingByteTrack or BoT-SORTn/aunder 5 ms
Cross-camera re-IDAnonymous re-identificationAppearance embedding, site-local, shift-scoped0.60 similarityunder 10 ms
Activity and poseAction recognitionPose keypoints plus temporal classifier (2 to 4 s window)0.65under 80 ms per clip
Parcel and bag detectorDetection and segmentationDetector with parcel, bag, roll cage, pallet classes0.55under 20 ms
Label OCR and barcodeRecognitionText detector plus recogniser; barcode decoder0.80under 40 ms
Chute fill estimatorSegmentationFill % from segmented parcel arean/a (threshold 90% fill)under 30 ms
Damage classifierClassificationCrushed, torn, wet, leaking0.75under 15 ms
PPE detectorDetectionVest, helmet, shoes0.70under 20 ms
Suspicious actionAction recognitionConcealment, throwing, kicking0.75 to 0.80under 100 ms per clip
Smoke and fireClassificationSmoke, flame0.80under 20 ms

Camera placement per zone

ZoneCamera typeMountCount ruleResolutionFPSModels
Gate and yardBullet, ANPR at gate4 to 6 m1 per gate lane plus 1 per 40 m of yard1080p5 to 10Vehicle, ANPR, person
Inbound and outbound docksDome or bullet facing dock door4 to 5 m1 per dock (1 per 2 docks minimum)1080p10Person, activity, bag count, PPE
De-bag stationsOverhead or angled dome3.5 to 5 m1 per 2 to 4 tables1080p10 to 15Person, activity, parcel count
Profiler / DWSFixed box camera near tunnel exit2 to 3 m1 per DWS1080p to 4 MP15 to 25Parcel track, OCR
InductionAngled dome3.5 to 4 m1 per 2 inducts1080p10 to 15Person, activity, belt gaps
Sorter chutesOverhead along chute bank4 to 6 m1 per 6 to 10 chutes4 MP10Fill level, jam, bagging
Secondary sort and put wallsDome4 to 6 m1 per 150 to 250 m²1080p10Person, activity, parcel
HV cage2 angles, one overhead3 to 4 m2 per cage4 MP15Person, loiter, gesture
DG zone and restricted roomsDome3 to 4 m1 to 2 per zone1080p10Intrusion, PPE, smoke
Perimeter and side doorsBullet3 to 5 m1 per door1080p10Tripwire, intrusion

Runtime parameters

ParameterRange or defaultNote
fps_inference5 to 25 fpsPer use case: headcount 5, activity 10, parcel at DWS 15 to 25 (example)
resolution1080p default, 4 MP for chutes and cageSub-stream where enough
conf_threshold0.50 to 0.90Per model and per alert; tuned on site data
min_duration_s2 to 60 sEvent must persist before firing (debounce)
zone_polygons, tripwiresFloor coordinatesDrawn in config studio on camera view
privacy_masksPolygonsBlur or skip areas
clip_pre_s, clip_post_s10 s and 20 s (example)Alert clip window
event_latency_targetunder 500 ms frame to event; under 3 s to alert
model_versionSemantic versionRolled out like any config, shadow first
camera_healthonline, fps achieved, blur score, tamperEvery 30 s

Edge hardware sizing (example)

Site sizeEdge hardwareCapacityNote
Small hub (up to 16 cameras)1 edge box with an embedded GPU module (Jetson Orin NX class)8 to 16 streams at 1080p, 5 to 10 fpsExample sizing
Medium hub (16 to 64 cameras)2 to 3 edge servers, each with 1 inference GPU (L4 or T4 class)24 to 32 streams per GPU at 1080p, 10 fpsExample sizing
Large hub (64 to 200 cameras)Edge rack with 4 to 8 GPUs, N+1 redundancyScale by streams × fps × modelsExample sizing
Storage on edge4 to 16 TB for clips and buffersRaw video stays on existing NVR
NetworkCameras on a separate VLAN; uplink 1 to 10 GbETo cloud: kbps per camera for events, clips on demand
PowerUPS covering edge box and switches

Retention

DataRetention (example)Controls
Raw videoExisting NVR policy (often 7 to 30 days)Not copied by the platform
Alert clips30 to 90 days (example), longer if under investigationEncrypted, watermarked, access-logged
Vision events (no images)13 months hot, then aggregatedPseudonymous track IDs
Track-to-employee linksShift duration plus 30 days (example)Only where badge linking is on
Face templatesOnly if face ID is on; deleted on consent withdrawal or exitNever leaves edge
Training dataCurated, blurred faces, opt-in sites onlySeparate approval

Thresholds, stream counts and hardware are example starting points; each site is tuned during the vision pilot on its own footage and lighting.

Privacy and compliance (India)

AreaDesign
Lawful basisUse for safety, security and operations under the Digital Personal Data Protection Act, 2023 and its Rules: give notice, and rely on consent or on the employment-related legitimate uses allowed by the Act where they apply. Confirm the basis with legal counsel per client.
NoticeClear signs at entry and in each covered zone in English, Hindi and the local language; written notice in the joining kit explaining purposes, data kept, retention, rights and grievance contact.
ConsentSeparate, explicit, withdrawable consent for any optional feature such as face ID; a non-biometric alternative (badge) always offered; no penalty for refusal.
Purpose limitationEach model tagged with its purpose; no use outside the listed purposes without a new notice.
Data minimisationEvents not video; anonymous tracks by default; privacy masks on rest and toilet areas; no audio.
Retention and erasurePer the retention table; automatic deletion jobs with logs.
Rights of data principalsAccess, correction, erasure and grievance handling through a named grievance officer, with response timelines tracked.
Security and breachEncryption, role-based clip access, audit trail; breach notice to the Data Protection Board and affected people as the Act requires.
FairnessProductivity scores never from vision alone; no automated discipline; human review of every security alert before action.
Worker engagementBrief worker representatives and contractors before go-live; publish what is and is not monitored.
AssessmentPrivacy impact assessment per site before enabling vision; repeat on new models.
Legal review. This is a design baseline, not legal advice. Have counsel confirm the lawful basis, notices, consent wording and retention under the DPDP Act and Rules, and any state labour rules, before switching on people analytics at a site.

How vision feeds the rest of the platform

ModuleIntegration
Digital twinLive people dots and counts per zone, parcel sightings, chute fill, security events on the floor map; replay includes vision layers
WorkforceActivity time feeds active, idle, travel and off-floor states; camera headcount vs logins vs roster per zone each 5 min; time-in-zone by team
Parcel trackingVision statuses fill gaps between scans and raise seen-not-scanned tasks; dock and bag counts reconcile against scans
WCSChute jam and fill events feed overflow logic and maintenance; induct gap analysis
KPIsHeadcount accuracy, vision-scan match rate, seen-not-scanned rate, activity time shares, rough-handling per 10,000, PPE compliance, camera uptime
AlertsSecurity, safety and flow alerts with a clip link, routed by severity (section 13)
SimulationReal walking paths and activity times calibrate the twin's people model

Staffing and TOT calculator

Simplified planning estimate using example defaults; the twin's simulation gives the precise answer.

PPH per person by station (editable)

Result

StationPeak load/hPPH/personHeads/shiftHeads/dayUtilisation

Method: heads = ⌈peak load ÷ (PPH × efficiency)⌉; stage time = base handling time + 5 min × ρ ÷ (1 − ρ), where ρ is utilisation at the staffing level entered. Base times (example): unload 15, de-bag 10, machine sort 8, manual sort 20, bagging 25, staging wait 30, loading 15 minutes.

11. KPI dictionary

Throughput

KPIDefinitionFormulaGranularityExample target
TPT (site)Parcels dispatched in a periodΣ parcels with VEHICLE_DEPARTED in periodSite, hour, shift, dayAt or above planned hourly
Effective PPH (site)Dispatched parcels per operating hourparcels dispatched / operating hoursSite, shiftPlan value
Stage PPHParcels processed by a stage per hourstage out-events / hoursStage, hourAt or above rated
PPH per personProductivity of a personparcels handled / deployed hoursPerson, team, stationExample 300 to 600 for induct
Team PPHProductivity of a teamteam parcels / team deployed hoursTeam, shiftStd PPH
Category PPHPPH for one categorycategory parcels / hours on that pathCategory, stagePer category std
Sorter TPTItems diverted per hourdivert confirms / running hoursSorter, hourOver 85% of design
Induct rateItems inducted per hour per inductinducts / hourInductRated
Capacity headroomSpare capacity1 − load / capacityStage, hour10 to 20%

Time

KPIDefinitionFormulaGranularityExample target
TOT (site)Hub turnaround, first inscan to dispatchdeparted_at − first_inbound_scan_atParcel, category, client, siteExample under 4 h express
Stage TOTTime in a stagestage_out − stage_inStage, categoryPer stage target
Dwell timeTime a parcel or bag sits idleΣ waiting gaps between stagesStage, zoneUnder 30 min
Yard dwellGate-in to dock-ondocked_at − gate_in_atVehicleUnder 20 min
Dock turn timeDock-on to dock-offundocked_at − docked_atDock, vehicle typeUnder 45 min
Bag fill timeBag open to sealsealed_at − created_atChute, destinationBy rule
Exception MTTRMean time to resolveavg(resolved_at − raised_at)TypeUnder 30 min
Cutoff bufferTime between bag load and cutoffcutoff_at − loaded_atConnectionOver 15 min

Quality

KPIDefinitionFormulaGranularityExample target
Sort accuracyParcels sorted to correct destination1 − missorts / sortedSorter, person, site99.9% or more
Missort rateWrong chute or bagmissorts / sortedSorter, chuteUnder 0.1%
No-read rateTunnel failed to readno-reads / scansSorterUnder 1%
No-data rateRead but no shipment datano-data / readsClientUnder 0.3%
Recirculation rateParcels going round againrecirc events / inductedSorterUnder 3%
Reject rateParcels to reject chuterejects / inductedSorterUnder 1%
Damage rateDamaged parcels per 10,000damages / parcels × 10,000Stage, siteUnder 5
Shortage / excess rateBags or parcels short or excess vs manifestshort / expectedOrigin, laneUnder 0.05%
Scan complianceParcels with every mandatory scanparcels with full scan chain / parcelsStage99.5% or more

Utilisation

KPIDefinitionFormulaGranularityExample target
People utilisationShare of attended time that is productiveactive min / attended minPerson, team80 to 88%
Idle %Logged in without work doneidle min / attended minPerson, teamUnder 10%
Starved / blocked %Waiting on upstream or downstreamstarved or blocked min / attended minStationUnder 5%
Deployment adherenceHeads at station vs planactual heads / planned headsStation, interval95 to 105%
Attendance %Showed up vs rosteredpresent / rosteredTeam, vendorOver 92%
Sorter OEEAvailability × performance × qualityA × P × QSorter, shiftOver 75%
Dock utilisationShare of time docks occupiedoccupied min / available minDock60 to 80%
Chute utilisationChute active and not fullvolume share and full-time %ChuteBalanced
MHE utilisationEquipment in usein-use min / available minAssetOver 60%

Vision

KPIDefinitionFormulaGranularityExample target
Headcount accuracyCamera count vs audited count1 − |vision − audit| / auditZone97% or more
Login gapPeople seen in zone without a station loginvision headcount − logged-in headsZone, interval0
Vision-scan match rateVision events matched to a scanmatched / vision eventsStage99% or more
Seen-not-scanned rateParcels seen but not scannedunmatched vision / vision eventsStage, stationUnder 0.5%
Activity time shareShare of time per activityactivity seconds / attended secondsZone, teamIdle under 10%
Rough handling rateIncidents per 10,000 parcelsincidents / parcels × 10,000Zone, shiftTrend down
PPE compliancePeople with required PPEcompliant detections / detectionsZone98% or more
Security alert precisionAlerts confirmed true on reviewtrue alerts / reviewed alertsModel, siteOver 80%
Camera uptimeCameras streaming at target fpshealthy camera min / total camera minSite99% or more

SLA and cost

KPIDefinitionFormulaGranularityExample target
SLA adherenceParcels dispatched before promised cutoffon-time parcels / parcelsClient, service98% or more
Connection adherenceBags loaded on planned connectionbags on planned trip / bags plannedRoute98% or more
On-time departureVehicles leaving on scheduleon-time departures / departuresRoute95% or more
Cost per parcelTotal hub cost per parcel(labour + MHE + energy + space + overhead) / parcelsSite, stage, categoryDown vs baseline
Labour cost per parcelLabour onlyΣ(hours × rate) / parcelsTeam, stageTrend down
Overtime %Overtime of total hoursOT hours / total hoursTeamUnder 8%
Contract shareContract heads of totalcontract heads / total headsSitePolicy
Vehicle fillLoad factorloaded volume / vehicle capacityTripOver 85%

Every KPI is computed in streaming form (rolling 15 min, hour, shift) and batch form (day, week, month), and can be sliced by site, stage, machine, team, person, client, category and route.

12. Configuration studio

Configurable in WMS

AreaWhat can be set
Process flowsStages, mandatory scans, order, skip rules per site template
Sort rulesPincode, route, client, service, category to destination; effective dates
Category rulesThresholds for weight, dims, value, DG; handling path per category
Bag rulesMax weight, count, fill, time; forced close before cutoff; mother bag rules
Manifest rulesPer connection, per client, e-way bill links
Exception typesCodes, SLA, owner role, required evidence, resolutions
SLA and cutoffsPer client, service, route; priority scoring
WorkforceShifts, std PPH by station and category, efficiency, min heads, redeploy guardrails, cost rates
VisionZones, tripwires, models per camera, thresholds, reconciliation windows, privacy masks, retention
KPI targets and alert thresholdsPer site, shift, stage
Scan validationsAllowed scans per station, hard and soft stops, override roles
Labels and documentsTemplates for bag tags, manifests, relabels

Configurable in WCS

AreaWhat can be set
Sort planDestination to chute mapping per wave or time window; versioned; compiled to edge cache
Sort keysPincode, route, hub, client, service, category, priority
Chute groupsSeveral chutes per destination with fill-balancing
Overflow rulesChute full: recirculate N times, then overflow chute, then reject
Dynamic reassignmentSwap low-volume destinations in and out of chutes by hourly volume, only from approved options
Induction controlInduct priority, gap, speed limits, stop and start by schedule
Device configScanner symbologies, DWS thresholds, printer templates, PTL colours, camera ROIs and models
Manual fallbackOn sorter fault: switch to handheld sort to floor grid using the same plan

Config lifecycle

  1. DraftEdit in the studio; every change is a diff against the live version
  2. ValidateStatic checks: every destination has a chute, no chute double-mapped, capacity rules
  3. Sandbox on twinReplay a recent real day through the new config; compare TPT, TOT, chute balance, walk distance
  4. ApproveMaker-checker: author cannot approve; WCS changes need engineering approval
  5. SchedulePublish at a wave boundary or sorter idle window
  6. ShadowRun new plan in parallel, decisions logged but not sent, for one wave (optional)
  7. CanaryOne induct, one chute group, or one site first
  8. LivePromote; edge cache updated atomically
  9. RollbackOne click to the last good version, under 60 s at edge

Roles and access

RoleCan doScopeNote
Platform adminTenants, connectors, global templatesAllNo floor operations
Tenant adminUsers, roles, sites, client setupTenant
Solution engineerWCS configs, device and camera setup, sort-plan draftsAssigned sitesCannot approve own
Site managerApprove WMS configs, targets, rostersOwn site
Shift leadRedeploy, exception overrides, manual fallback switchOwn site, shift
SupervisorTeam view, overrides within limitsOwn team
Security officerView and review vision security alerts and clipsOwn siteClip access logged
Privacy officerRetention, consent records, DPIA, erasure requestsTenant
OperatorHandheld tasks onlyOwn station
Control tower analystRead all sites, raise actionsRegionNo clip access by default
Client userOwn shipments, KPIs, exceptionsOwn dataRow-level security
AuditorRead config history and audit logTenantRead only

Every change writes an immutable audit record: who, what diff, when, approved by, sandbox result, and the rollback point.

13. Alerts and exception management

AlertTrigger (example threshold)SeverityOwnerDefault action
Cutoff at riskParcels for a connection not bagged at cutoff minus 45 min (example)HighShift leadPriority induct, early bag close
Stage backlogQueue over 2× 15-min capacityHighShift leadRedeploy
Sorter downFault over 3 minCriticalMaintenance, shift leadManual fallback
Read rate dropUnder 97% for 10 minHighMaintenanceClean or recalibrate tunnel
Chute full or jamOver 5 min, or camera pile-upMediumBaggerClose bag, clear jam
ShortageBag or parcel short vs manifestHighException deskTrace with origin
Seal mismatchGate or dock seal check failsCriticalSecurity, site managerHold vehicle
Idle spikeTeam idle over 15% for 30 minMediumSupervisorRedeploy or release
Headcount gapCamera headcount below plan by 2 or more for 10 minMediumShift leadRedeploy
Seen not scannedOver 0.5% at a station in 15 minMediumSupervisorCoach, recover scans
Security eventAny vision security rule, with clipHigh or criticalSecurity officerReview clip, act
Attendance gapPresent heads under 90% of plan at shift startHighSite managerCall vendor, re-plan
Exception ageingOver SLA by typeMediumException deskEscalate
HV cage mismatchCage count ≠ systemCriticalSecurityFreeze cage
Connector or camera staleNo data over 2 min from a sourceHighIntegration on-callCheck edge
Dock queueVehicles waiting over 30 minMediumYard marshalOpen dock
AspectDesign
DeliveryFloor app push, control tower, floor TV, WhatsApp or SMS for critical, email digest
EscalationUnacknowledged in 5 min goes to the next level; critical goes to site manager in 10 min (example)
Noise controlDeduplication, suppression during known downtime, hysteresis on thresholds, minimum duration for vision events
ClosureRoot cause code and action required to close; vision alerts marked true or false to retrain models

14. Data model and event schema

Key entities

EntityPurposeKey relationships
Tenant, ClientLogistics company and its shippersTenant 1–n Client
Site, Zone, Dock, Station, Lane, CagePhysical modelSite 1–n Zone 1–n Station
Sorter, Induct, Chute, Device, CameraMachines and devicesSorter 1–n Induct, Chute; Zone n–n Camera
Route, Destination, ConnectionNetwork and scheduleRoute 1–n Connection
SortPlan, SortRule, CategoryRule, BagRule, VisionRuleVersioned configurationConfigVersion 1–n rules
Shipment / ParcelUnit of workParcel n–1 Bag
Bag, ManifestConsolidation unitsManifest 1–n Bag; Bag 1–n child Bag
Vehicle, TripMovementTrip 1–n Manifest
Employee, Team, Shift, Skill, Attendance, Deployment, ConsentWorkforceEmployee n–n Skill; Employee 1–n Consent
Track, VisionEvent, ClipCamera layerTrack n–0..1 Employee; VisionEvent 0..1 Clip
Exception, Alert, ActionProblems and responsesParcel 1–n Exception
EventImmutable factReferences any entity
KPI snapshotPre-aggregated metricsPer entity, interval
AuditLog, ConfigVersionGovernanceUser 1–n AuditLog

Event envelope

FieldTypeNotes
event_idUUIDv7Unique and time-ordered
event_typeenumFrom the catalogue below
schema_versionint
tenant_id, site_idstringPartitioning and isolation
occurred_at, received_attimestamp with zoneDevice time and ingest time
source_system, source_device_idstringIncludes camera ID for vision
actor_id, station_id, zone_idstringWho and where
entity_type, entity_id, parent_idstringParcel, bag, vehicle, track; parent bag or trip
x, ymOptional location
confidence, model_version, clip_ref0 to 1, string, stringVision events only
payloadtyped objectPer event type
correlation_id, idempotency_key, sequence_nostring, intTracing, dedupe, order

Event catalogue

DomainEvent types
YardVEHICLE_GATE_IN, VEHICLE_YARD_PARKED, VEHICLE_DOCK_CALLED, VEHICLE_DOCKED, VEHICLE_UNDOCKED, VEHICLE_DEPARTED
InboundUNLOAD_START, UNLOAD_END, BAG_INSCAN, LOOSE_PARCEL_INSCAN, BAG_SHORT, BAG_EXCESS
De-bag and inscanBAG_OPENED, PARCEL_DEBAGGED, BAG_RECONCILED, PARCEL_INSCAN, DWS_CAPTURED, CATEGORY_ASSIGNED, DESTINATION_RESOLVED
SortPARCEL_INDUCTED, SORTER_SCAN, SORT_DECISION, PARCEL_DIVERTED, PARCEL_RECIRC, PARCEL_REJECT, MANUAL_SORT
Bag and outboundBAG_CREATED, PARCEL_BAGGED, BAG_SEALED, MANIFEST_UPDATED, BAG_STAGED, LOAD_START, BAG_LOADED, LOAD_END, VEHICLE_SEALED, HANDOVER_CONFIRMED, PREALERT_SENT
Exceptions and specialEXCEPTION_RAISED, EXCEPTION_ASSIGNED, EXCEPTION_RESOLVED, RTO_MARKED, CAGE_IN, CAGE_OUT, DG_FLAGGED
MachineSORTER_STATE, SORTER_ALARM, INDUCT_STATE, CHUTE_STATE, DEVICE_HEARTBEAT
Vision: peopleVISION_ZONE_COUNT, VISION_ACTIVITY, VISION_ZONE_ENTER, VISION_ZONE_EXIT, VISION_TRACK_LINKED
Vision: parcelsVISION_INSCAN, VISION_PRIMARY_SORT, VISION_SECONDARY_SORT, VISION_DEBAG_DETECTED, VISION_BAGGING_DETECTED, VISION_DOCK_COUNT, VISION_CHUTE_JAM, VISION_CONVEYOR_JAM, VISION_STRAY_PARCEL, VISION_DAMAGE, VISION_SCAN_MISMATCH
Vision: security and safetyVISION_PILFERAGE, VISION_LOITER, VISION_INTRUSION, VISION_NON_DOCK_EXIT, VISION_ROUGH_HANDLING, VISION_PPE_MISSING, VISION_MHE_UNSAFE, VISION_TAMPER, VISION_SMOKE
PeopleUSER_LOGIN, USER_LOGOUT, STATION_CHECKIN, STATION_CHECKOUT, USER_STATE, ATTENDANCE_IN, ATTENDANCE_OUT, REDEPLOY_RECOMMENDED, REDEPLOY_ACCEPTED
ConfigCONFIG_DRAFTED, CONFIG_APPROVED, CONFIG_PUBLISHED, CONFIG_ROLLED_BACK

15. Dashboards per role

RoleMain contentTime grainActions
Ops control towerAll sites live map, TPT vs plan, TOT, connection risk, sorter health, alerts by severityRegion, networkDrill into any site twin
Site managerShift plan vs actual, PPH by team, cost per parcel, OEE, SLA, attendance, top bottlenecksSite, shift, dayApprove configs, rosters
Shift leadLive floor twin, camera headcount per zone, queues per stage, redeploy cards, cutoff countdown, exceptionsLive, 15 minAccept redeploys, switch fallback
Supervisor / teamTeam heads, active, idle, PPH per person, errors, seen-not-scannedLive, hourCoach, move
SecurityVision security alerts with clips, cage activity, perimeter, review queueLive, dayConfirm or dismiss, escalate
MaintenanceSorter state timeline, alarms, read rate, chute faults and jams, camera health, MTBF, MTTRLive, shiftAcknowledge alarms
Integration healthConnector and camera freshness, lag, error rate, quarantine queueLiveReplay, pause
Client portalOwn volumes, TOT, SLA, exceptions, shortages, damage, PODsDay, weekDownload, webhooks
FinanceCost per parcel by stage, labour cost, OT, contract vendor billingDay, monthExport
Floor TVHourly target vs actual, cutoff board, safety remindersLiveDisplay only

16. Non-functional requirements

AreaRequirementNote
ScaleUp to 500 sites per tenant, 50 M events per site per day at peak, 200 cameras per site, 5,000 concurrent usersExample sizing target
LatencyEvent to twin p95 under 2 s; sort decision at edge under 30 ms; frame to vision event under 500 msSee latency table
AvailabilityCloud 99.9%; edge 99.99% with HA pair; site never depends on cloud to keep sorting
DurabilityNo event loss: replicated log, edge buffer 72 h
RetentionRaw events 13 months hot, 7 years cold (configurable); vision per section 10Client and legal needs
Multi-tenancyTenant ID on every row and topic, row-level security, per-tenant keys, optional dedicated deployment
SecuritySSO (SAML, OIDC), MFA for admins, mTLS edge to cloud, encryption at rest and in transit, secrets vault for camera and PLC credentials
OT safetyWrites to PLC only through WCS executor, interlocks, read-only default, IEC 62443 aligned zoning; cameras on own VLAN
Privacy and complianceDPDP Act 2023 and Rules: notice, consent where needed, minimisation, retention, rights, breach reporting; data residency in India regions; immutable audit logs
ObservabilityTracing per event, connector and camera SLAs, model drift monitoring, synthetic tests
OfflineHandheld app offline queue, edge local cache, edge vision keeps running
ExtensibilityConnector SDK, model registry, webhooks, public APIs, custom KPI builder
LocalisationEnglish, Hindi and regional languages on floor apps and signage; INR; IST

17. Phased rollout roadmap

PhaseDurationScopeExit criteria
0. Discovery4 weeks (example)Site surveys, system and camera inventory, data samples, baseline KPIsIntegration plan per site type
1. Observe8 to 10 weeksEdge gateway, read-only connectors, event bus, parcel and bag tracking, core KPIs, basic twinOne pilot site with 99% scan coverage
2. Workforce and twin8 weeksPeople states, staffing model, redeploy cards, full floor twin, replayUtilisation and PPH visible per person
3. Vision pilot8 weeksEdge AI box, headcount and activity, parcel vision at DWS and chutes, scan reconciliation, HV cage security, privacy assessment and noticesHeadcount accuracy 97%, privacy sign-off
4. Configure WMS8 weeksConfig studio for WMS rules, versioning, approvals, exceptions moduleRules changed without code
5. Simulate6 to 8 weeksWhat-if simulation, forecasting, bottleneck engineSimulated vs actual TOT within 10%
6. Control WCS10 to 12 weeksSort-plan compiler, edge executor, shadow then canary, manual fallbackLive sort plan from studio at pilot
7. ScaleOngoingConnector library per sorter OEM, full vision security suite, multi-site rollout, client portal, AI optimisation10+ sites live
Next step. Share one real site's numbers (daily volume, sorter type and OEM, headcount by team, shift pattern, camera count) to calibrate the calculator and build a worked example.