Compliance that runs before the shift, not after
Most workforce systems tell you about a breach after it happened. The problem worth solving is making that breach impossible for anyone to book in the first place.
Workforce compliance fails as a reporting problem and works as a scheduling one. A dashboard showing three expired licences is a list of things that already went wrong on your watch. A gate that takes those three people out of tomorrow's eligible list is a control.
What this class of system demands
4 things that decide this
- 01Eligibility belongs in your scheduling query rather than in a report. If somebody who isn't cleared can be booked and flagged afterwards, your check has already failed.
- 02Document expiry has to be a live input. Shift Link checks against the UK Government Right-to-Work API and tracks expiry, so status changes without anyone having to remember it. Shift Link reports 70% less manual compliance verification as a result.
- 03Overrides will happen anyway. Design them, name them and log who made each one, because an override nobody owns is worse than having no override path at all.
- 04Your clock-in has to hold up. GPS and facial recognition are there so the record survives when somebody disputes a shift months later.
- OnboardWorker record created.
- ValidateDocuments checked at source.
- ExpireDates drive status, not reminders.
- GateIneligible workers see no shifts.
- Clock inGPS and face, on site.
- PayHours and margin from one record.
Move your gate to step four and most of the compliance risk goes with it. Leave it after step six and you're writing incident reports.
The four problems every build hits
These appear whatever sector your workers are placed into.
A stored document is not a completed check
Filing a passport scan proves you collected something. What defends you is the record of what got checked, on which date, against which source, and what happened when it lapsed.
Expiry is a state change, not a notification
Email reminders assume somebody acts on them. Tie eligibility to the date itself and that person leaves your available pool on their own, whether or not anyone opened the inbox.
The edge cases need a person
A name mismatch or an odd visa condition isn't a parsing failure to retry. Route it to your consultant with the context attached, because guessing here is exactly the risk you built the system to remove.
Scheduling and payroll must share one record
When your hours, rates and eligibility sit in separate systems they drift, and reconciliation turns into a monthly argument. One record ends the argument rather than automating it.
Design the override before you need it
A gate with no override gets worked around. Somebody makes a duplicate worker record, or books the shift in a spreadsheet, and now your system knows less than it did before.
So build your exception path on purpose. A named person, a reason, a time limit, and a record that shows in the same audit view as everything else. Overrides aren't a failure of the design. Anonymous ones are.
- Ask for a reason and attach a name, because anonymous overrides make your audit trail decorative.
- Time-box each exception so it expires without anyone chasing it.
- Report how often overrides happen, because a rising rate means your rules are wrong rather than your staff.

The professional signs, the model reads but never does the arithmetic, and the compliance gate blocks. We write that down first.
A firm's work is a regulated act: the CPA signs the return, the producer binds the policy, the adjuster determines the claim, the recruiter decides the placement, and the regulator expects to see how a model was used and governed. So every build starts with a one-page map of what the software reads, what it proposes, and where a professional signs.
What follows is simple to state, and we put it in writing. Documents are read and extracted by the model; numbers are computed by code and reviewed by a person. Compliance checks are gates that stop the next step, not dashboards that mention it later. Client data is scoped to the engagement, never firm-wide, with written no-training terms you can produce. And every automated touch is logged so a reviewer, an auditor or a regulator can read what happened, and when.
- 01Returns, binds, determinations and placements signed by the professional; the software prepares.
- 02Extraction by the model, arithmetic by code, review by a person; compliance gates that block.
- 03Eligibility checks that gate a booking rather than report on it, with every override named, reasoned and time-boxed.
Some of the systems we have shipped
“They will treat your vision like their own and build it that way.”
Ron Klabunde · Founder, SmartREI ↗
A compliance dashboard against a compliance gate
Both of them know the same facts. Only one changes what can happen next.
When you learn
Dashboard and alerts
After the shift was booked.
What production requires
Before the shift is ever offered.
Expiry
Dashboard and alerts
An email somebody may open.
What production requires
A state change that removes eligibility.
Enforcement
Dashboard and alerts
Depends on a consultant noticing.
What production requires
Built into the scheduling query itself.
Exceptions
Dashboard and alerts
Handled quietly, off-system.
What production requires
Named, reasoned, time-boxed, logged.
Proving it later
Dashboard and alerts
A screenshot of a report.
What production requires
The check, the date, the source and the outcome.
The stack this work runs on
Platform
- Next.js
- React Native
- Supabase
- PostgreSQL
- Vercel
- CI/CD pipelines
Verification
- UK Government Right-to-Work API
- Document expiry tracking
- GPS clock-in
- Facial recognition
Controls
- Row-Level Security
- Role-based access
- Audit logging
- Attributed overrides
What staffing and workforce leaders ask us
01Can eligibility checking be fully automated?+
Document validation and expiry tracking can be, and Shift Link runs both through the UK Government Right-to-Work API. Your judgement calls shouldn't be. A name mismatch or an odd visa condition goes to a consultant with the context attached. Shift Link reports 70% less manual compliance verification from that split.
02Why is a gate better than an alert?+
An alert reports something that already happened, and it depends on a person acting during a busy shift. A gate takes the option away. Shift Link only offers shifts to people who currently pass, so your breach never gets booked at all.
03What stops someone working around the system?+
An override path you designed on purpose. Without one, your people make duplicate records or book in a spreadsheet, and the data quietly gets worse. With one, each exception is named, reasoned, time-limited and visible in the same audit view as everything else.
04How do you prove a worker was actually on site?+
Capture it in the moment rather than afterwards. Shift Link clocks people in with GPS and facial recognition, so your record carries where and who rather than a typed time. That's what survives a dispute about a shift six months old.
05Does this replace our HRIS?+
No. Your HRIS holds the employment records and the statutory data that took years to get right. This is the operational layer above it: who can legally work tomorrow, on which site, at what rate, with the evidence attached.
Go deeper
- AI, automation and custom software for firms →The whole chain, for accounting, insurance, staffing and HR.
- HR and payroll teams →The segment this capability sits inside.
- Staffing and recruiting agencies →Where the same gate protects a desk's margin.
- Payroll automation →How gated hours become a pay run you can prove.
- Shift Link case study →Onboarding, validation, scheduling, payroll and margin on one record.
- Document intake automation for firms →Right-to-work evidence and credentials collected and filed.

