GPS on smartphones is accurate to about 5 meters in ideal conditions. In a warehouse with a metal roof? 50 meters. Inside a basement? No signal at all. Now try to build an attendance system on that foundation.
When we started building geo-fencing for EazyHR, we thought it would be straightforward. Define a radius around a worksite, check if the employee is inside it when they clock in. Simple. Except nothing about field work is simple.
Problem one: GPS drift. A phone sitting perfectly still on a desk will report slightly different coordinates every few seconds. If your geo-fence radius is tight, an employee can appear to leave and re-enter the site while standing in the same spot.
Problem two: shared phones. In some teams, workers share a single device. The system needs to know who's actually clocking in, not just which phone is present.
Problem three: multi-site workers. Some employees move between three or four locations in a single day. The system needs to track not just presence, but transitions — and know which site to bill the hours to.
Our solution uses a combination of GPS, Wi-Fi network fingerprinting, and time-based heuristics. If GPS says you're on site and you're connected to the site's Wi-Fi, confidence is high. If GPS is unreliable but your clock-in time matches your historical pattern and you're on the right Wi-Fi network, confidence is still high.
We also built an anomaly detection layer. If someone clocks in from a location they've never been to, at a time they've never worked, the system flags it for review. Not blocked — flagged. Because sometimes people do work unusual shifts at unusual locations, and false rejections destroy trust faster than false approvals.
After deploying across 200+ sites, here's what we've learned: the geo-fence is the easy part. The hard part is building a system that's accurate enough to trust, flexible enough to handle exceptions, and transparent enough that workers don't feel surveilled.