ShiftSwap
Sign in

Shift coverage for certified teams

The group text is not a scheduling system.

Staff post the shifts they can't work. Certified colleagues claim them. You approve. Nobody works a shift they aren't qualified for — the database won't allow it.

Free to start. No card, no install — it runs in a browser.

Awaiting your approval

Lifeguard

Sat, Sep 12 · 9:00 AM – 5:00 PM

Released by Jordan Lee

Alex Kim

Lifeguard · valid to Mar 2027

ApproveDeny

Sam Diaz

Lifeguard · valid to Aug 2027

ApproveDeny

Approving one automatically declines the other, and tells both people.

R

Riverside Aquatic

Alex Kim · Staff

My shiftsOpen shifts

OPEN SHIFTS YOU CAN CLAIM

Lifeguard

Sat, Sep 12 · 9AM – 5PM

Needs coverage
Requires Lifeguard
Claim this shift

Front desk

Sun, Sep 13 · 12 – 8PM

Claims pending
No certification required

Right now, coverage lives in a text thread nobody is responsible for.

Jordananyone able to take my sat 9-5??
Samsorry can't 😞
Caseyi could maybe? is that the guard shift
Jordanyeah. so is that a yes
You find out last
The manager is usually not in the thread, and learns a shift was uncovered when nobody turns up.
Nothing checks certifications
Whoever answers first gets it. Whether their lifeguard cert lapsed in March is not something a group chat knows.
There is no record
Who agreed to what, and when, is buried in a scroll. There is nothing to point at afterwards.

How it works

Three steps, and one of them is yours.

01

Someone can't make it

They open their shift and tap Request coverage. It posts instantly — no asking permission, no waiting on anyone to read a text.

02

Only the qualified get asked

Everyone holding the right certification is notified. Nobody else sees it as claimable, because nobody else can legally work it.

03

You choose who covers it

Several people can put their hand up. You approve one; the rest are declined automatically and everybody is told where they stand.

The certification rule isn't a warning message.

Eligibility is enforced in the database, not in the page. An expired certification can't claim a shift that requires it — and expiry is checked against the day the shift runs, not today, so a cert lapsing next month doesn't block tomorrow's shift.

Every facility's data is walled off by row-level security. Staff see their own shifts and what's open. Managers see their own facility, and nothing else.

create policy claims_insert on claims
  for insert to authenticated
  with check (
    claimant_user_id = current_app_user_id()
    and user_is_eligible_for_shift(
          current_app_user_id(), shift_id
        )
  );

A hand-crafted request from an uncertified account is rejected by Postgres, not by JavaScript.

Built for the phone it will actually be used on.

Staff check shifts standing on a pool deck, not at a desk. Add it to the home screen and it opens fullscreen like any other app — no download, no store, no update to chase.

Set it up in about five minutes.

Create your facility, add your certifications, paste in this week's schedule. Invite your staff whenever you have their emails.

Set up your facility
ShiftSwap — shift coverage without the group text