In enterprise IT, we often think software solves everything. But when you are dealing with a manufacturing plant floor, the physical environment will destroy your software in a matter of days.
I was recently tasked with fixing a broken HR clock-in system for a manufacturing plant with 40 employees. The problem wasn't the HR software itself; it was the physical reality of the factory floor.
The Problem: The "Glove Penalty"
Plant employees wear heavy-duty industrial safety gloves. The legacy clock-in system relied on standard PVC ID badges.
Here is what the physical UX looked like at 6:00 AM every morning:
- An employee walks up to the time clock.
- They take off their industrial safety gloves.
- They dig through their pockets to find their wallet.
- They pull out the ID badge (trying to keep it inside the wallet so it doesn't get covered in industrial grease).
- They scan the badge, put it away, and put their gloves back on.
This took roughly 60 to 90 seconds per employee. Multiply that by 40 employees, twice a day (clock-in and clock-out), and the plant was bleeding over an hour of pure production time every single shift change just standing at the terminal.
Management initially tried to solve this by printing QR codes and sticking them to the employees' helmets or gear. Within two weeks, the industrial washing processes and factory grease rendered the QR codes entirely unreadable. Furthermore, QR codes are a massive security flaw—anyone can take a picture of a QR code and "buddy-punch" their friend in.
The Solution: Zero-Friction NFC Under the Glove
I threw out the ID badges and the QR codes entirely and moved to Ruggedized Silicone NFC Wristbands.
Here is why this completely changed the operational flow:
- Zero-Exposure Clocking: The employees wear the NFC wristband underneath their heavy industrial gloves. Because NFC (Near Field Communication) uses radio frequencies, it penetrates the thick fabric and rubber of the glove.
- The New UX: The employee walks up to the terminal, bumps their gloved wrist against the reader, hears a beep, and walks onto the floor. Time elapsed: 1.5 seconds.
- Indestructible: The NTAG chips are hermetically sealed inside the silicone wristband. They survive industrial washing, chemical exposure, and intense physical impact. They cannot be washed off like a QR code.
- Anti-Buddy Punching: Each NFC chip has a locked, hardcoded UID. You cannot "photocopy" an NFC chip with a smartphone camera.
The Architecture: A Custom Odoo HR Module
I didn't want to rely on messy third-party webhooks, Zapier integrations, or external middleware. I wanted this to be a native, seamless experience for the HR department directly inside their existing ERP system.
To achieve this, I engineered a custom Odoo module that extended the native hr.employee framework.
Here is exactly how I built it:
- Extending the Employee Profile: I wrote a custom Python model to inject a dedicated nfc_uid field directly into the Odoo Employee form view.
- The "Pair NFC" Action Button: I built a custom action button right on the employee's profile interface inside Odoo. When HR issues a new wristband, they simply click "Assign NFC", tap the wristband to the USB reader on their desk, and the unique NFC ID is permanently bound to that employee's database record.
- The Kiosk Integration: I overrode the native Odoo Attendance Kiosk mode. Instead of requiring employees to type in a PIN or scan a barcode using a camera, the kiosk simply waits for an NFC keyboard-wedge input.
When the employee bumps their wrist against the tablet reader on the plant floor, the NFC reader instantly passes the UID string into Odoo. My custom module intercepts the string, queries the hr.employee database for the matching nfc_uid, and automatically generates the hr.attendance check-in/check-out timestamp.
The Takeaway
Good engineering isn't just about writing clean Python code; it's about understanding the physical constraints of your user. By removing the need to take off an industrial glove, we didn't just save the company thousands of dollars in lost operational time—we eliminated a daily frustration for 40 hard-working employees, all managed natively inside Odoo.
Optimizing the Timecard Machine