Questions and answers

FAQ

Answers to common Clepsy questions about swaps, off requests, calendars, the solver, roles, publishing, and account troubleshooting.

Residents

Why can't I see the Schedule Generator?

The Schedule Generator is limited to Chief Resident and above; residents have view access to schedules but cannot run the solver. It is also hidden in Simple mode for every role. If you are a chief and still do not see it, switch to Advanced mode in the sidebar footer. Simple mode only changes UI density, so it does not grant or remove server permissions.

How do I request a swap?

Open Request Swap, pick one of your own published shifts as the source, then choose a green valid shift held by another resident. For a three-way swap, also choose a bridge shift that validates both legs. Confirm the request, and the target, plus the bridge for a three-way, must accept. Chief approval may follow unless your residency has turned that step off.

Why is my swap blocked?

The client checks run in order: same assignment, same user, past shift, excluded role, draft or published isolation, overlapping request, PGY boundary, off-service scope, same-day overlap, 10-hour rest, 80-hour week and 320-hour 28-day caps, one day off in a rolling window, 6 consecutive nights, 6 consecutive shifts, and block availability. The server repeats a narrower set and does not enforce PGY boundary, off-service scope, consecutive limits, or availability. If a shift is draft, or a pending request already overlaps, expect a block.

How many swap requests can I make, and what do the statuses mean?

The default cap is 10 swap requests per academic year, set on your role with an optional per-user override, and only requests you originate count. Pending target, pending chief, and approved requests consume quota; rejected, cancelled, and expired requests do not. Chiefs and above are exempt. Statuses are Awaiting target, Awaiting chief, Approved, Rejected, Cancelled, and Expired.

How long does a swap request last?

Requests expire 48 hours after creation. Expiry is swept lazily when lists are read, so a stale request may show as pending until the next list load or action. After expiry the request is no longer actionable and does not consume quota. If you still need the swap, submit a new request.

Can I swap a draft shift?

No. Swaps work only within the same publish state, and residents see published shifts only. A draft assignment is not visible or swappable for a resident. A chief or admin must publish the schedule first, then the shift can be requested.

What is a strong vs weak off request, and can I cancel one?

Strong off defaults to 4 per academic year and weak off to 12; roles set defaults and users can have overrides. Pending and approved requests count against the quota, while denied and cancelled requests do not. You can cancel a pending request, but an approved off request cannot be cancelled in the app; contact your chief or program manager. The server enforces the quota at submit time.

How do I get my shifts into my calendar?

Use Distribute Schedules to copy your personal webcal link, or subscribe to the https version at api/cals.php?u=... if webcal fails. iOS and Apple Calendar use Settings, Calendar, Accounts, Add Account, Other, Add Subscribed Calendar; Google Calendar web uses the plus next to Other calendars and From URL. Outlook subscription steps are not documented in Clepsy, so do not assume they work. Anyone with the link can read your published shifts, and the link is not reissued.

Why isn't my calendar updating?

The feed includes only Active, published assignments, so drafts and cancelled shifts never appear. The server caches the feed for 5 minutes, though the UI copy conservatively says changes may take up to 24 hours. The feed covers 30 days back through 1 year forward. If a change is older than the cache window and still missing, confirm the shift is published and that you subscribed to the right personal link.

What does Simple mode hide?

Simple mode hides the Schedule Generator, Simulation, Annual Promotion, blackout constraints, capacity, prefer, fill priority, quota columns and fields, Permission Definitions, Allow Intern Supervision, the yearly quota block, and the visiting-resident solver checkbox. Hidden fields keep their existing values, so editing in Simple mode does not erase advanced settings. Simple mode is UI density only and never changes permissions or server authorization. Switch back to Advanced in the sidebar footer.

How do I get an account?

Clepsy is invite-only and has no self-registration. Ask your program manager to send an invite or approve your application; approval creates the organization, default shifts, and first user, and mints a login link. Sign-in supports Google, Microsoft, email and password, QR sign-in, and passkeys. If your email already has an account, use the existing invite or ask an admin for a reset link.

Chiefs

How do I approve swaps, and why did one auto-approve?

Open Swap Approvals to see requests awaiting chief review, then approve or reject. If your residency has Need chief approval for swaps turned off, the swap executes automatically after the target and any bridge accept, and the chief step is skipped. Turning the flag back on restores the queue for new requests. Target and bridge acceptance is always required regardless of the flag.

Can I swap without using quota?

Yes. Chiefs and above can execute a swap directly from the schedule editor without creating a request or consuming the requester quota. A direct execute pushes an undo entry. Residents still need to submit a request and stay within 10 per academic year.

Why can't I edit slot hours?

The Edit Slot Hours action is gated by the server to Admin, Superduper User, and Super User, even though chiefs can otherwise edit schedules. A chief sees the control but the save is rejected, which can look like a role mismatch. Ask a Super User or Admin to change the slot hours. Do not assume chief schedule authority covers slot templates.

What does Publish do, does Deploy publish, and can I unpublish?

Publish flips draft assignments in scope to published, which makes them visible to residents and the calendar feed. Deploy Schedule from the Simulation screen writes draft assignments only; it never publishes. There is no unpublish or revert-to-draft action, so verify drafts before publishing. Wipe can soft-cancel published work in scope, but there is no unpublish action.

What do Wipe and Undo do?

Wipe soft-cancels all active assignments in the selected scope, both draft and published, and cancels pending swaps in that scope. Undo covers fill, drop, and chief swap execute only. It does not cover publish, wipe, engage, add-assignment, or manual provider override. Treat Wipe as destructive and review scope first.

Why is my manual fill blocked at 8 hours?

Manual fill and assignment use an 8-hour rest threshold, while the solver and swap engine require 10 hours. A manual 8-10 hour turnaround can be accepted by the editor but make the next solve infeasible. The public 8-hour minimum is not what Clepsy enforces; Clepsy is stricter by two hours. If you need a tighter turnaround, document the exception outside Clepsy and expect solver pressure.

How do I run the solver?

In Schedule Generator, choose the site, block, shifts, staffing, blackouts, and parameters, run Reality Check, then click Start Simulation. Solve time choices are Quick 15s, Standard 30s, and Deep Optimize 60s, and there is no cancel action or job history. In production the browser polls every 3 seconds, stale jobs fail after 10 minutes, and results are reaped after 7 days. Review OPTIMAL or FEASIBLE, then Deploy Schedule to write drafts.

Admins

How do I onboard a program?

Review the application or invite in Onboarding, then approve it. Approval creates or reuses the Health System, Residency, and Site, clones roles, seeds Day 07:00-17:00, Evening 12:00-22:00, and Night 19:00-07:00 shifts, creates the first user, and mints a login link. After that, build the org tree, adjust site shifts and block schedules, and invite the remaining users. Director and Coordinator contacts are provisioned as Super User.

How do I add users, and how do I create roles and quotas?

Use Users then Add User, or the AI-assisted invite or import path, and assign a role; a role is required. The Admin / chief checkbox can be changed only by super_user and above. Manage roles and yearly quotas in User Roles, where defaults are strong off 4, weak off 12, and swap requests 10 per academic year. Per-user overrides live in the user editor.

What is the difference between Admin, Superduper, Super User, Chief, and Resident, and is there an Attending or Program Director role?

Admin is cross-residency and the only level that can create Admin users or roles. Superduper User is second-highest and can switch residencies, review applications, and manage below Admin. Super User is a residency-scoped program manager; Chief Resident is a per-AY flag with chief authority; Resident has view and request access. There is no built-in Attending role, and Program Director or Coordinator contacts are provisioned as Super User.

What does the solver enforce?

Hard constraints include one resident per position, coverage min and max, intern and non-intern floors, one shift per resident per day, 10-hour rest, maximum consecutive days, one day off per rolling 7, maximum consecutive nights, night equity, 80 hours per week, 320 hours per 28 days, strong off, blackout and duty, and pinned assignments. It does not enforce a 12-hour shift cap, in-house call frequency, or moonlighting. A 14 or 16 hour shift can pass if rest, hours, and day-off rules are met.

Why does the solver say FEASIBLE instead of OPTIMAL?

FEASIBLE means a valid schedule was found within the time budget, but optimality was not proven. Only OPTIMAL (Proven) has an objective value, and the soft objective is used to prove it. A short Quick or Standard solve commonly stops at FEASIBLE. If you need an objective value, try a longer Deep Optimize run, but there is no guarantee.

Why did a solve time out, and can I solve multiple blocks at once?

Stale pending jobs fail after 10 minutes; the sweep runs lazily when status is polled. Common causes are a Cloud Run cold start or timeout, a missing callback URL or secret, or a model that is too large for the chosen budget. The solver handles one date range at a time; cross-block effects enter only as prior assignment history. Split large ranges and re-run, and remember there is no job history to inspect.

Why do constraints reset?

Constraint-builder selections and defaults are persisted in browser-local storage, not on the server. Clearing site data, using a different browser or device, or switching to a private window starts from the defaults. Re-enter the payload or use the same browser profile. This is separate from published schedules, which live in the database.

How do I distribute schedules, and how do I handle annual promotion?

Distribute Schedules generates personal webcal links and public schedule links; it is not a publishing step, so publish drafts first. Annual Promotion always stages the next academic year and writes only next-AY roster status; current schedules are unaffected. Defaults are Incoming-PGY-1 to PGY-1, PGY-1 to PGY-2, PGY-2 to PGY-3, PGY-3 to graduate, and PGY-4 to graduate, with PGY-3 optionally promoted to PGY-4. Run it after reviewing the current year's roster.

How do I handle a compliance gap such as a 12-hour cap or moonlighting?

Clepsy does not enforce a maximum shift length, a 14-hour-after-24-hour-call rule, call frequency, or external moonlighting. Document those locally and use blackouts or mandatory duty periods so the hours at least count toward the 80-hour and 320-hour limits. The solver and swap engine enforce 10-hour rest, 80 hours per week, 320 hours per 28 days, one day off in seven, and consecutive limits as described. Do not tell residents that Clepsy certifies those gaps.

Account and troubleshooting

How does sign-in work, including passkeys, password resets, and login links?

Login is invite-only and supports Google, Microsoft, email and password, QR sign-in, and passkeys. Passkeys are managed from the sidebar Passkeys modal. Admins and Superduper users can set a password, which revokes existing Better Auth sessions and is limited to 10 changes per hour. Login links are shown as valid for 7 days; ask an admin to resend one if yours expired.

Why is my calendar link returning 404, why can't I see draft shifts, and why is the page not updating?

A 404 usually means the personal calendar hash is wrong or the feed is unreachable; copy the link again from Distribute Schedules. Draft shifts are invisible to residents and to the calendar feed by design, so publish them first. If the page looks stale, hard-refresh the browser to pick up a new bundle, and allow up to 5 minutes for calendar cache. The UI may say 24 hours, but that is conservative copy.

Why is my swap preview missing bridge time, and why did my swap expire?

The client preview can omit the bridge leg's time, which is a display gap rather than a saved change; confirm the actual times in the schedule dashboard or the request record. Requests expire after 48 hours and expiry is swept lazily on list reads. An expired request is not actionable and does not consume quota. Submit a fresh request if you still need the swap.

Still stuck?

Send us a note and we’ll help you get unstuck.