Hardware Integration
Paycom Microfence® Beacon
Upheld the integrity of non-tracking location services, ensuring the system validated user presence via proximity beacons without recording continuous GPS data, adhering to strict enterprise privacy standards.
Overview
Paycom Microfence® is a proximity-based time and attendance feature that uses Bluetooth Low Energy (BLE) beacons to validate that employees are physically present at their worksite when punching in - without collecting or storing continuous GPS location data.
Privacy-First Design
The fundamental design constraint was that Microfence must be a cost-effective measure to prevent "buddy punching" while still proving presence. We designed a solution that proves presence without enabling surveillance. The system uses short-range BLE beacons placed at worksites: if a device can see the beacon, the employee is physically there.
My role focused on ensuring the Android application correctly enforced this model:
- The app detects beacon proximity
- Validates the punch
- Discards any intermediate location signals.
No location history is ever written to disk or transmitted upstream.
BLE/GATT Integration
The beacon communication layer uses standard GATT profiles over BLE. The Android app scans for employer-configured beacon UUIDs, validates signal strength against a configurable distance threshold (tunable per-site for varying physical layouts), and gates the punch action on a confirmed proximity event.
Key implementation concerns:
- Battery Efficiency - BLE scanning in background is throttled aggressively; proximity checks only trigger during active punch windows
- Distance Accuracy - Configured beacon transmission power to calibrate RSSI-based distance detection, tuning the effective range of proximity validation per deployment environment.
- Multi-beacon Sites - worksites with multiple beacons (large warehouses, multi-floor buildings) are handled by our system across configured beacon UUIDs
Data Pipeline
Validated punch records flow through the same SQLite caching layer used by the rest of the timeclock system, with an additional proximity_validated flag written at record creation. The backend payroll integration reads this flag to distinguish Microfence-validated punches from standard punches for compliance reporting.