Attendance that keeps the shift change moving
Face recognition at four gates, feeding a workforce system that closes payroll from the same records the supervisor already approved.
- Gates on one attendance roll
- 4
- Match at the terminal
- 1 s
- Fallback when a match fails
- 1 tap
The client
A textile manufacturer in Tamil Nadu
Named clients are withheld under the confidentiality agreements we work to. Sector, scale and system detail are published with permission.
- Sector
- Textile manufacturing
- Scale
- About 900 workers across three shifts and four gates
- Duration
- 12 weeks, including four days of on-site enrolment
- Team
- Computer vision engineer, Backend engineer, Mobile engineer, HR process analyst, Project manager
What was wrong.
Attendance ran on punch cards and a fingerprint reader that failed against dyed and calloused hands. Queues formed at shift change, supervisors kept a paper fallback for the readings that did not take, and payroll spent the last week of every month reconciling three versions of the same day.
Buddy punching was the quiet part of the problem. Nobody wanted a system that accused anyone, so the requirement was a record clear enough to settle a dispute without a supervisor reconstructing the morning from memory.
The approach, step by step.
- 01
Enrol without stopping the line
Enrolment ran in the canteen over four days, three photographs per worker under working light. Consent, the retention period and the deletion route were explained in Tamil and printed on the form each worker signed.
- 02
Match on the device
Face embeddings are computed and matched on the gate terminal itself. The template is stored, the photograph is not, and neither leaves the site network.
- 03
Make the fallback ordinary
A worker the terminal cannot match taps a card and the supervisor confirms. The fallback takes one tap, so nobody has a reason to work around the system.
- 04
Turn events into a shift
Raw gate events become a working day through rules the client already used: grace period, break deduction, overtime bands, night allowance and the weekly off. Those rules live in configuration, not in code.
- 05
Close payroll from one source
The workforce system reads the same shift records the supervisor approves, so the payroll export and the board on the wall cannot disagree.
The architecture we shipped.
Every layer below exists in the running system. Nothing here is a reference diagram.
- Gate terminal
- A wall-mounted terminal per gate with a near-infrared camera, matching against the local template store and showing the result on the spot.
- Template store
- Embeddings only, encrypted at rest on a site server, with a documented retention period and a deletion route when a worker leaves.
- Event queue
- Gate events queue locally and sync to the site server, so a network drop delays reporting rather than losing a punch.
- Shift engine
- Configurable rules turn punches into a working day: grace, breaks, overtime bands, night allowance and weekly off.
- Supervisor approval
- Each shift is reviewed on a tablet, and every correction is recorded with who made it and why.
- Workforce and payroll
- Leave, holidays and approved shift records feed the payroll export and the statutory registers.
- Audit trail
- Punches, corrections and exports are retained for the statutory period and searchable by worker and date.
What it does now.
Read from the system itself. No revenue claims, no multiples.
Gates on one attendance roll
Three shifts, one record per worker per day.
Match at the terminal
Recognition runs on the device, so nothing waits on the internet.
Fallback when a match fails
Card plus supervisor confirmation, recorded like any other punch.
Photographs kept after enrolment
Only encrypted templates remain, and they are deleted when a worker leaves.
What it runs on.
- Python
- ONNX face embedding model
- SQLite on device
- MQTT sync
- Django
- PostgreSQL
- React Native supervisor app
- Nginx
- Site-hosted Linux server
The queue at the gate went away, and so did the argument at the end of the month. The record is the one the supervisor already signed off.
Attributed by role and sector only, at the client's request.
What happens next.
Contractor and visitor passes on the same terminals, so the gate holds one roll instead of a register beside it.
Services behind this build
Sector
ManufacturingAbout 900 workers across three shifts and four gates. The pattern transfers; the domain detail is rebuilt for every client.
Have a system that should work like this one?
We will walk your process, tell you what is worth automating, and scope the first version that can be measured.