The rota writes itself. The judgment stays yours.
Requests in by the 15th. The month generated to your department's own rulebook. A grid you overrule cell by cell, then a live month of trades, absences and claimable sessions. Without the voice notes.
20
floor posts a day
3
staggered waves
4
night seats, nightly
40h
base week tracked
It speaks your spreadsheet. The colours mean what they have always meant.
Lavender weekend, reduced staffing
Yellow public holiday, all premium
Green Triage/MC, sickest patients
Light blue open session, claim for pay
BBold session past the 40-hour base
DD1 / D2 day off worked, premium rate
The scheduler's console
A grid you already know how to read, with power tools behind it
The draft lands laid out like the workbook: same columns, same colours, boundary days dimmed. Click any cell and the editor shows who is eligible, warns about overlaps, leave, night weeks and capability, and lets you set sessions, D marks, custom hours or an open seat.
Edit cell
Tue 11 · Assess2 8–16
Warnings, never refusals. The picker flags “overlaps Resp” or “on leave” and then lets you decide. Discretion is the department's, always.
Locks that mean it. The dot marks manual and claimed cells. They survive every regeneration, every rebalance.
One button to publish. Publishing emails every doctor, optionally with the Excel export attached, and opens the month to trades and claims.
Every generation explains itself
Generation report · August 2026
Equity tallies
One inbox for everything waiting on you
Fong · days off · Sept 7, 8
“Family commitment”
Barrett · night dates · Sept 14, 16, 18
Requests, trades, leave and absences queue with one-click decisions. The dashboard counts what needs you; nothing hides in a thread.
The engine
Nine stages, in the order your scheduler already works
It is your department's construction checklist, encoded: the same order of operations a careful human follows, executed in seconds and explained line by line.
- 1
Frame
whole Mon to Sun weeks, holidays flagged
- 2
Seniors
SR call alternates, AM and PM seats placed
- 3
Nights
groups A to D keep the four-week cycle
- 4
Med resident
weekday 10 to 6 Overlap reserved
- 5
Leave blocks
DL, sick and vacation are hard walls
- 6
Base fill
40-hour weeks around requests and capability
- 7
Weekends
reduced template, sessions spread by equity
- 8
D1 / D2
sixth and seventh days marked automatically
- 9
Validate
every request answered, every gap surfaced
Assess2 never holds unauthorized staff
Night seats are named or open, never silently empty
Seniors never land on nights
No double-bookings
Manual decisions survive regeneration
Every change to a published rota is audited
For doctors
The whole month, from a phone between patients
No passwords, no new logins to remember: a one-time email link signs them in for 30 days. From there the month is self-service.
New request
Medrota
Tue 11 Aug
Resp · 8am to 4pm
Wed 12 Aug
Assess2 · 2pm to 10pm
Sat 15 Aug
Triage/MC · 2pm to 10pm
paid sessionSun 16 Aug · Overlap
open session, 10am to 6pm
Claim sessionAsk once, hear back honestly. Requests come back honored, partial or declined when the month generates, with the reason attached to each one.
Trade without the group chat. Give a shift up to the pool or a named colleague, or propose a swap. The counterpart accepts, the scheduler approves, the grid updates.
Claim the bold shifts. Open sessions are extra pay. One tap claims them, with capability and double-booking checked on the spot and the scheduler notified.
Report an absence in ten seconds. The seat flags for cover, the scheduler resolves it, the audit log remembers.
Sessionals get the same front door. They post the dates they can cover, the generator offers them those seats, and the open-session board pays the volunteers.
Right now, on the floor
Who is on, at a glance
The live day board shows every post across the three waves, the current wave highlighted, open seats in blue, SR call and the admitting ward in the header. No more phoning the desk.
Morning
on nowAfternoon
Night
Spreadsheets
Excel in. Excel out.
Adoption should not cost you your archive or your noticeboard. Import the old workbooks to backfill history and warm the fairness tallies; export any month back in the exact format the department already reads.
587
cells
128
bold sessions
19
split slots
0
unmatched names
“Wiin”, “Pasons”, “Rampertsad” matched to Win, Parsons, Rampersad automatically. Nothing commits until you confirm.
A dry run shows exactly what the parser read: cells, splits, bold sessions, D marks, the DL footer. Unmatched names wait for your mapping. Nothing commits until you confirm.
Exports rebuild all three sheets: the grid with its full colour legend, the Night Shift Groups roster, and the Requests sheet with the per-person tallies your scheduler used to keep by hand, now computed. Attach it to the publish email with one checkbox.
Communication
The chasing happens without you
Medrota sends the emails a scheduler would otherwise send by hand, and logs every one.
From Medrota · Mon 13 Jul, 9:00
Rota requests for August, due by the 15th
Hi Anneliese, you haven't submitted any requests for August yet. Days off, shift preferences, night dates and weekend-off requests close on the 15th.
Submit requests- Sign-in links, one-time and expiring
- Request-window reminders on the 10th, 13th and 15th, only to those who have not submitted
- Publish announcements to the whole department, workbook attached if you like
- Scheduler alerts for absences, trades, leave requests and claimed sessions
Governance
Built like something a department relies on
Append-only audit log: every edit, claim, trade, approval and publish records who and when.
Role-gated everywhere: scheduler, doctor and sessional see exactly what their role allows, enforced on the server.
Capability enforcement: restricted posts refuse unauthorized staff at every entry point: generation, editing, claiming.
Passwordless by design: one-time links, hashed at rest, rate-limited, expiring in 20 minutes.
Versioned edits: concurrent scheduler edits cannot silently overwrite each other.
Deterministic generation: the same inputs and seed always produce the same rota, so drafts are reproducible.
Everything in the box
The full inventory
No modules, no tiers, no per-feature pricing games. This is what every department gets, and the features page walks each area in depth.
Requests & the window
- Day-off, AM/PM, night-date and weekend-off requests✓
- Window countdown on every dashboard✓
- Chase emails on the 10th, 13th and 15th✓
- Withdraw while pending, accept late✓
- Every request answered with a reason✓
Generation
- SR-call alternation and A to D night cycle✓
- 40-hour base fill around leave and requests✓
- Weekend and holiday reduced templates✓
- Sessions spread by equity, D1/D2 auto-marked✓
- Deterministic seeds, reproducible drafts✓
- Fairness memory between months✓
The scheduler's grid
- Legacy column layout and colour legend✓
- Cell editor with warnings, never refusals✓
- Custom hours, splits, session and D-mark toggles✓
- Cell locking, lock-respecting regeneration✓
- Report: outcomes, violations, equity✓
- Publish with email and workbook attached✓
The live month
- Absence reporting that flags the seat✓
- Give-ups to the pool or a named colleague✓
- Swaps with counterpart accept and approval✓
- Open-session board, one-tap claiming✓
- Capability and double-booking guards✓
- Live day board of who is on right now✓
Spreadsheets
- Import old workbooks, dry run first✓
- Typo-tolerant name matching with review✓
- Cell-for-cell export in your format✓
- Groups and Requests tally sheets included✓
- Backfill history, warm the equity tallies✓
People & governance
- Passwordless magic-link sign-in✓
- Scheduler, doctor and sessional roles✓
- Senior, med-resident, assess-capable flags✓
- Sessional availability posting✓
- Sick, departmental and vacation leave flows✓
- Append-only audit log throughout✓
Questions
Asked by every scheduler so far
A fuller list lives on the FAQ page; these are the six that come up in the first ten minutes.
Can we keep our spreadsheet?
Yes. Medrota imports your existing workbooks to backfill history and exports every month back in the exact format your department already reads: same columns, same colours, bold sessions, D marks, the footer notes. The noticeboard never has to know.
What if the engine gets something wrong?
You overrule it. Every cell is editable with warnings rather than refusals, your edits lock so regeneration cannot trample them, and the generation report shows exactly which requests were honored, partial or declined and why. The engine drafts; the scheduler decides.
Do doctors need another password?
No. The scheduler adds a doctor with their email; they sign in through a one-time emailed link. Sessions last 30 days on their phone.
How do the night groups and senior rotation carry over?
From anchors: you tell Medrota once which group owned which week and which senior held SR call, and every future month continues the cycle. Both anchors are editable in Settings when the department restructures.
Our rules are not identical to these. Can they change?
The daily post template, working hours, weekend behaviour per post, holidays, capability lists, night-group membership and the request window day are all data you can edit. The construction logic itself encodes the common shape: rotations, a base week, premium marking, open sessions.
What happens when someone calls in sick mid-month?
They report the absence against their shift in the app. The scheduler gets notified, the seat is flagged, and one click reopens it as a claimable session or reassigns it. Everything lands in the audit log.
Next month could be quiet
Put the rota on rails.
One department is already running on Medrota. If yours drafts its month in a spreadsheet and a group chat, it is a fit.