What shift swap automation is, and what it is not
A shift swap is the operational primitive most retail managers spend the largest share of their week on. The roster is published a fortnight out, life happens to the people on it, and the gap between the plan and the day is closed one phone call at a time. Shift swap automation is the work of moving that loop out of the manager's inbox and into a system that can do it faster, more fairly, and with an audit trail. The right tool can resolve a no-show inside ten minutes and lift coverage on a busier-than-forecast hour before the queue forms at the till.

The phrase covers two related but different things, and conflating them is the most common reason these projects fail. The first is colleague-to-colleague swaps: one worker can no longer cover a shift, and the system finds another eligible worker willing to take it. The second is intraday rebalancing: live demand is running ahead of forecast, the system invites qualified off-shift workers to pick up an extra block of time, and the roster updates when one of them accepts. Both flows look superficially similar, both run through the same fairness rules, but the inputs and the legal posture are different. This post covers both and is careful to keep them apart.
The hub for the wider workforce topic is employee scheduling. This post sits one level below it: not the schedule, the changes to the schedule.
The four inputs a swap engine actually needs
Most shift swap features inside a workforce management product look the same from the outside. The difference between one that quietly works and one that floods the staff app with irrelevant offers is the quality of the inputs feeding it. There are four worth being precise about.
- A live demand signal. The system needs to know whether the gap it is trying to fill is a real coverage problem or a planning rounding error. For colleague swaps the demand signal can be the published forecast: the engine just needs to confirm the original head count is still required. For intraday rebalancing, last week's curve is not enough. The system needs current visitor count by site (and by zone if the store is large enough to staff zones independently), the variance against the hour's forecast, and the projected next-hour count.
- An eligible-swap pool. Not every worker can take every shift. Eligibility is the set of rules that defines who the system is allowed to invite for a given gap: role and skill (a fitting-room attendant cannot cover a back-of-house picker), contracted hours (a part-timer near their weekly cap is not a candidate), legal rules (minimum rest period since the last shift, daily and weekly maximums, minor working-hour rules where they apply), location radius (a colleague who lives forty minutes away is not a realistic candidate for an extra two hours starting in twenty), and any opt-out the worker has set. The pool should be computed at request time, not pulled from a cached list.
- Fairness rules. The pool can still be large, especially in a multi-store district. Fairness rules decide the order the system invites people and how it caps offers per worker over time. A reasonable default ranks the pool by overtime budget remaining, prior pickup rate in a recent window, and tenure, then caps any individual worker to a configured number of unsolicited pickup invites per week. Without these rules the same three reliable people get every offer and the rest of the team experiences the system as silence.
- A clean opt-in surface. The thing the system sends to the worker has to be a request, not an assignment. A push notification or message that says the new shift is now yours, with a button to opt out, is the wrong shape. The right shape is an offer with a button to accept, an expiry, and no consequence for ignoring it. The legal reasoning sits later in this post, but the design reason is simpler: a request that the worker can ignore costs the worker nothing, and the system can re-rank and try the next candidate. An assignment that requires an active decline costs the worker time and trust, and the system gets worse offers in response.
What automation must not do
Workforce automation in retail sits inside a tightening regulatory frame, particularly in the United States. The hard constraints below apply to any automated swap or pickup flow that touches the roster, and they are stricter than what most off-the-shelf swap features default to.
- Do not force-assign. An automated system should never silently change a worker's roster without their consent. The shift either remains on the original worker's plate (and the manager handles it manually) or the new worker accepts it explicitly. Predictive-scheduling and fair-workweek laws in jurisdictions like Seattle, New York City, Oregon, Philadelphia, and several California cities make this explicit: employer-initiated changes to a posted schedule trigger predictability pay, which is a strong financial signal that the law expects the change to be the employer's decision and the worker's choice. An automation that silently assigns is, in those jurisdictions, an automation that owes predictability pay.
- Do not breach posted-notice windows. Most predictive-scheduling laws require the employer to post the schedule a defined number of days in advance (typically fourteen) and to compensate workers for short-notice changes inside that window. An automated swap engine that fires inside the window must be capable of distinguishing employer-initiated changes (premium pay applies) from worker-initiated swaps (usually exempt) and must log the difference. A swap engine that treats every change as the same kind of event will misreport in payroll.
- Do not extend hours past the worker's contract. Eligibility has to include the worker's contract terms, not just their availability. A part-time worker near a weekly cap, a worker on a fixed-term contract with strict hour bands, or a minor under jurisdiction-specific limits should not appear in the pool at all. The right place to enforce this is the eligibility step, not the manager's review afterwards.
- Do not flood the staff app. A swap engine without per-worker caps becomes spam. The fairness rules above are not a polish item, they are what keeps the app usable. Workers who learn to ignore the swap channel will keep ignoring it on the busy Saturday when the engine genuinely needs them.
- Do not let the automation overwrite a manager's call. The manager has context the system does not: a colleague is on a personal improvement plan, a particular pairing on a Saturday closing shift is being avoided for a reason. The automation should defer to a manager override and log the override for audit, rather than re-firing.
A clean end-to-end swap loop
Putting the inputs and the constraints together, a working swap loop runs through six states. The states are the same for a colleague-initiated swap and for an intraday pickup; the trigger and the policy parameters differ.
- Trigger. Either a worker drops a shift through the staff app (colleague swap), or the demand signal crosses a configured threshold and the engine identifies an under-coverage interval (intraday pickup). The trigger event carries the site, zone, role, interval, head count delta, and the reason code.
- Eligibility. The engine computes the eligible-swap pool from the rules above. Anyone who fails any rule is removed at this step and is not exposed to the rest of the pipeline. The pool is logged with the eligibility decision per worker so a later dispute can be audited.
- Ranking and capping. The eligible pool is ranked by the fairness model, and per-worker caps are applied. The output is an ordered shortlist, usually capped at a small number of simultaneous offers per round (three to five is a useful default in a single store, larger in a multi-store district).
- Offer. The system sends an offer to the shortlist through the staff app or a messaging channel. The offer carries the shift details, a clear acceptance button, and an expiry (commonly ten to thirty minutes for an intraday pickup, longer for a future colleague swap). It does not change the roster yet.
- Acceptance and confirmation. The first eligible worker to accept wins. The system rechecks eligibility at acceptance time (rest hours, weekly cap) in case anything has changed since the offer was issued, applies the roster change, and notifies the other workers in the round that the shift is filled. A racing-condition guard at this step is non-optional; otherwise two workers can both think they have accepted.
- Audit and reconciliation. The change is written to the audit log with the original shift, the new owner, the trigger reason, the worker who initiated the change, and the predictability-pay classification (employer-initiated or worker-initiated). The realized-labor write that goes back to the demand-vs-coverage report includes the same classification so a regional manager can answer the predictable question about how many shifts were automated last week and at what premium-pay cost.
If no one accepts before the expiry, the system widens the pool one tier (lower-ranked candidates, then qualified workers in a neighbouring store if multi-site swaps are enabled) and reruns the offer step. Two or three widening rounds is a sensible cap; beyond that, the engine escalates to a manager with a single, clean handoff rather than continuing to fire.
Where the live count comes in
Colleague-to-colleague swaps usually do not require live demand at all. The original shift was sized against a forecast, the forecast still holds, and the question is only who takes the shift. The interesting half of shift swap automation is the second flow, the intraday pickup, and that one depends on a demand signal the WFM does not own on its own.
A retail people counting platform produces that signal: visitors per hour per site (and per zone, if the store is staffed by zone), the variance against the published forecast, and a short-horizon projection for the next hour. When the variance crosses a configured threshold (for example, the running hour is trending fifteen percent above forecast and the projection for the next hour is similar), the intraday capacity event fires and the swap engine starts an offer round for the under-covered role. The threshold should be a per-site configuration: a small format store with a tight staff base needs a tighter band than a large box with a thicker bench.
Two practical points are worth naming. Transactions are not the same signal. Point-of-sale data shows what already converted; it misses an hour that is busy but not converting, which is the hour that most needs help. And the count needs to be honest about the comparable: the threshold is not raw count against forecast (a Tuesday that is well above last year is not necessarily under-covered), it is current count against the published staffing assumption for that exact hour. The two are different objects and a swap engine that confuses them will fire for the wrong reason.
Predictive-scheduling laws and the audit trail
The legal frame around swap automation in the US is concrete enough to design against. Predictive-scheduling and fair-workweek laws now exist in several large jurisdictions: Seattle's Secure Scheduling Ordinance, New York City's Fair Workweek Law, Oregon's statewide law, Philadelphia, San Francisco, and Emeryville among others. The common shape is that retail and food-service employers above a defined size must post the schedule fourteen days in advance, must pay predictability premiums for short-notice employer-initiated changes inside that window, and must keep records that distinguish the kinds of change. The premiums vary by city and by whether the change adds or subtracts hours, and they are non-trivial.

Most of these laws explicitly exempt worker-initiated swaps from premium pay. That exemption is the whole reason the offer-and-accept loop is the right shape: an automated assignment is functionally an employer-initiated change, while an offer that a worker accepts is a worker-initiated change. The audit trail has to support that distinction in writing because a regulator or a wage-and-hour audit will ask. The minimum record per change is the trigger reason, who initiated it, the time of the offer and the acceptance, the eligibility decision, and the predictability-pay classification.
This post is not legal advice and the specifics differ by city. The point is that a swap automation that is architecturally incapable of distinguishing the two kinds of change is architecturally incapable of passing the audit. Designing the loop with the distinction baked in is much cheaper than retrofitting it later.
How Ariadne fits in
Ariadne sits on the counting side. The platform produces the demand signal the swap engine consumes during intraday rebalancing: visitors per hour per site, optionally per zone, with a forward forecast, and an intraday capacity event when the running variance crosses a threshold. The same demand series feeds Ariadne's own Employees Planner for teams that want one product end to end, or it exports to a separately licensed workforce management platform that already owns the roster. The contract shape is the same either way.
Ariadne measures this with Hybrid Fusion, its patented camera-free method. Time-of-Flight depth sensing counts every visitor at the entrances, capturing geometry rather than images, while patented phone signal sensing follows movement through the interior, detecting the signals a phone emits even in airplane mode. The sensor streams both feeds to Ariadne, where Hybrid Fusion combines them into one trajectory per visit and computes counts, dwell, and paths. The streams carry no identifier: no MAC address, no device ID, no biometric data, and no camera is involved. Identifiers are stored only when a visitor explicitly opts in, which keeps the method GDPR-friendly and outside biometric territory.
Two integrity points matter when the count is feeding a swap engine. First, the signal is an integer per interval, not a stream of identifiable visits. The swap engine receives a count and a variance, never a person. That keeps the integration outside biometric scope and outside the heaviest GDPR obligations that would attach if camera-derived data were entering the workforce platform's boundary. Second, the count is independent of point-of-sale conversion, which is exactly the property the intraday flow needs: an hour that is busy but not converting is visible in the demand series, where a transactions-only signal would miss it. Data handling is set out in the privacy policy. The wider retail stores context covers how the same signal feeds the rest of operations.
A short checklist for a working swap automation
- Eligibility runs at request time, not from a cached list. Rest hours, weekly caps, contracted bands, minor rules, and worker opt-outs are checked when the offer is built and rechecked when it is accepted.
- Fairness rules cap per-worker offers. Workers do not see the system as either spam or silence. The cap is documented.
- Offers are accept-only. No silent assignment, no consequence for ignoring. The loop widens and escalates if no one accepts.
- Intraday pickups use a real demand signal. Current count against the staffing assumption for the hour, not last year's curve and not point-of-sale.
- The audit log distinguishes worker-initiated from employer-initiated changes. Predictability-pay classification is recorded per change and the realized-labor write carries it forward.
- Manager override is a first-class action. The automation defers and logs, rather than re-firing against a manual decision.
FAQ
Can the swap engine assign a shift to a worker automatically?
It should not, and in several US jurisdictions doing so converts a worker-initiated swap into an employer-initiated change that owes predictability pay. The clean design sends an offer that the worker can accept, ignore, or decline. The engine widens the pool and re-offers if no one accepts, and escalates to a manager after a small number of rounds. The roster does not change until a worker explicitly accepts.
Does the demand signal require cameras anywhere in the path?
No. Ariadne counts with Hybrid Fusion: Time-of-Flight depth sensing plus patented phone signal sensing, never cameras. Time-of-Flight captures geometry rather than images, and signal sensing captures no MAC address by default, so the measurement involves no video, no faces, and no biometric data.
What if our workforce platform is something like Quinyx, Deputy, or Humanity?
Those are publicly known workforce management platforms a retailer might already run, and the swap automation pattern described here is platform-agnostic. The four inputs (live demand signal, eligible-swap pool, fairness rules, opt-in offer surface) and the six-state loop are properties of the design, not of any specific vendor. The integration shape that lets a counting platform feed the demand signal into a swap engine is the same in each case; the field names differ. Specific connectors evolve over time, and the integrations hub is the current source of truth for what Ariadne ships and supports today.
Does this work for a single store or only at chain scale?

It works at both scales, with different parameter choices. A single store has a smaller eligible-swap pool, so fairness caps are tighter and widening rounds are fewer; the value of the intraday flow comes mostly from filling under-covered hours rather than balancing across sites. A multi-store district has a larger pool and can offer cross-site pickups for workers within a sensible commute, which is where the engine starts to do work a manager could not realistically do by phone in the same time window.



