- A swap — two employees trade shifts.
- An open shift — an unfilled shift is posted for anyone eligible to claim.
Requesting a swap
An employee nominates a counterparty and the two dates to exchange. The board immediately shows a compatibility check for that pairing:
Each failing check names the review it triggers, so the requester can see up front whether their swap will sail through or need a decision.
Posting an open shift
An unfilled shift is posted to the eligible team. Employees register interest by claiming it, and can withdraw again.Claiming is self-only. Nobody can claim an open shift on another employee’s behalf.
Auto-approval rules
The Auto-approval rules rail is a real, editable rules engine. Each rule can be enabled or disabled, and set to one of three actions:
Five rules ship seeded:
A swap auto-approves only if every rule it triggers is enabled and set to
autoApprove. Disabling same-shift-same-team genuinely flips every clean swap back into review.
Approving
Approving a swap atomically rewrites the roster cells. Both employees’ assignments move in one transaction — there is no state where one side of a swap has been applied and the other has not. Rejecting persists the approver’s note on the request. Bulk approve advances several swaps at once. It never aborts the batch: each swap that cannot be approved is skipped and reported with its reason, and the rest go through.swap:approve sits with HR and Admin, not with Manager. Managers hold swap:write — they request swaps; HR approves them.