A staffing agency places 200 temps across 15 client sites. One manager should not approve another client’s hours, and one worker’s 14:00 shift in Porto must not overwrite their 09:00 shift in Lisbon.
We tested that exact headache — no spreadsheets, no hard-coded demo.
The Real-World Context
Agencies live with concurrent assignments: the same person works 09:00–13:00 for Client A and 14:00–18:00 for Client B on the same day, at two rates. If the system stores “one shift per day,” it silently drops one. If permissions are global, a Lisbon manager approves Porto — and the client is billed wrong.
The Test Scenario
We built Staffing — Porto with 15 Sites (each a client company) and a worker with two concurrent Assignments (Lisbon €10/h 09:00–13:00, Porto €13/h 14:00–18:00) on the same date. A Lisbon manager had kiosk-read only on Lisbon via SiteManagerGrants.
How It Works (The Mechanics)
- One Business, many Sites —
Business hasMany Sites, each site has its own geofence and ComplianceRule. - Concurrent Assignments —
Employee activeAssignmentsallows two sites same day, each with its ownhourly_rateandovertime_multiplier. - Site-Bound Roles —
KioskPolicychecksgrants->hasPermission(user, site, 'kiosk-read')persite_id. Business admins still pass where allowed.
The Results / What We Verified
- Hours stayed per site, no cross-contamination. Changing Lisbon’s rate did not touch Porto’s. Pass.
- Two rates same day calculated independently. Pass.
- Lisbon manager could read Lisbon, denied on Porto; overtime approval blocked on Porto. Pass.
Honest caveat: A worker booked on two sites for the same hour is flagged as an overlap — the engine warns, it doesn’t auto-decide which client wins. A human still resolves it.
Where Chegatta Is Today
Agencies run 15+ sites in one dashboard, each fence and rule isolated. That’s what keeps client billing clean. Instant 2-Minute Setup • No Credit Card Required. Try Chegatta free at Chegatta.com — or request a demo to see your 15 sites live.