The call schedule, and the reason behind every cell.
HospitaLists runs the hospitalist call schedule end to end: it drafts the year block by
block, checks every change against your group’s own rules, shows each clinician exactly
where they stand against everyone who shares their work, and keeps a record of who
changed what. Built for a group of around eighty clinicians across twenty-nine service
lines, and live every day.
29service lines staffed
~80clinicians on the roster
14,100shifts imported on day one
2016staffing history reaches back to
ScheduleA scheduler's viewEvery name invented
October 2026Color byPublished through Dec 31, 2026/Live
Time
Floors
Tu29
We30
Th1
Fr2
Sa3
Su4
Mo5
Tu6
We7
Th8
Fr9
Sa10
Su11
Mo12
Tu13
We14
Th15
Fr16
Sa17
Su18
Mo19
Tu20
We21
Th22
Fr23
Sa24
Su25
Mo26
Tu27
We28
Th29
Fr30
Sa31
Su1
Mo2
Rounding services
A-Service
7a–7p
B-Service
7a–7p
C-Service
7a–7p
D-Service
7a–7p
E-Service
7a–7p
F-Service
7a–7p
G-Service
7a–7p
H-Service
7a–7p
NP · PA day
APP 1
7a–7p
APP 2
7a–7p
APP 3
7a–5p
Admitting & consults
Admit-Consult Early
7a–5p
Admit-Consult Mid
11a–9p
Admit-Consult Late
1p–11p
Nights & swing
Swing MD/DO 1 (wkdy)
3p–1a
Swing MD/DO (wknd)
3p–1a
Swing APP 1
3p–1a
Nocturnist MD/DO 1
7p–7a
Nocturnist MD/DO 2
7p–7a
Backup
Backup Call
7a–7a
OpenYou
What it does
One application, from the roster to the record.
Twenty-four tabs in all.
What any given person may see and change is set per tab, per person.
Schedule
The month or the week, line by line. Find anyone and the rest of the grid fades back. Reassign, claim, propose a swap or post a giveaway from the cell itself — rules-checked on the way in, with an administrator override that is logged rather than silent.
click and drag to paint a run
Schedule Builder
Draft a year block by block, review it, finesse it slot by slot, sign it off as a version. An algorithm, not a language model — and it never publishes on its own.
pre-flight · draft · sign-off
Filler
Fill one line from a pattern — a rotation through a group of people, or each person’s own days — and look at the result on the grid before any of it is kept.
one line, one pattern
Marketplace
Open shifts, giveaways and trades, with an approval trail. People move their own shifts between themselves; the rulebook decides what is allowed, not an inbox.
claim · give away · trade
Today & Who is On
Who holds each line and how to reach them, the whole day, on a board fit for a workroom wall. And a home page for every clinician: what is mine, what is waiting on me, what I could pick up, and which resident team is on call.
the four questions, one screen
My Stats
Your month, your year and your calendar, paced against your contracted minimum — with an end-of-year goal you set for yourself that changes nothing anyone else is owed.
your year, your pace
Counts
Shifts per person, per line, month by month, over any range you choose: totals, nights, weekends and service mix. Tap a name to see the days behind its number, and export an Excel workbook that opens without a repair prompt.
exports to .xlsx
Coverage report
Is the month staffed, and by whom. Every line against every day, with the gaps named and the unanswered configuration that would cause one listed beside them.
gaps, before they are gaps
Analytics
Staffing history line by line and year by year, back to the first archived month in 2016: who carries a line, how often it changes hands, how the roster has moved. Administrators can also ask their own questions in SQL, on a nightly copy that carries initials, never names.
ten years of archive
Rules
What the schedule must obey, edited as grids rather than written as code: eligibility, conflicts, sequences, rest limits, married lines, blocks and cohorts.
your practice, not ours
Holidays
Seasons grouped for equity, ranked once each by every person, weighed against what they carried in past years — so Christmas is answerable with a history, not a memory.
ranked, carried, relieved
Time off & leave
Requests to decide and approved days to enter. Time off blocks the days and keeps the target; leave blocks the days and lowers the year’s target in proportion to the days away.
FMLA · parental · medical · sabbatical
Providers & Services
The roster and the lines, each in one place: every person’s contract as dated terms, their cohort and, if they want one, their photo; every line’s hours, days and staffing.
the roster · the lines
Messages
Write to everyone, to a group, or to chosen people, or post an announcement at the top of their Today. Everyone it will reach is listed by name first. A message goes by email and to phones with notifications on. An announcement goes the way you choose.
messages · announcements
Help & How To
A page for every tab, in plain words, and picture guides to the everyday jobs that save as a PDF. Ask a question and an assistant answers from those pages and the wording built into the app — it never sees the schedule — and what it cannot answer goes to a person.
answers from Help and How To
Feedback
Report a problem or suggest a change from a button on every page, and add a screenshot if it helps. What the app adds to help fix it is shown to you first, and never includes the page’s contents or anybody’s name. The reply comes back as a conversation.
screenshot · diagnostics · replies
The Schedule Builder
A year of call, drafted block by block.
The builder maps the work that must be staffed in advance and leaves the human fill to
people. Each cohort week is a matching of members against slots at the lowest total cost,
where every cost is measured per share of the load — not per shift, and never one service
at a time.
Nothing runs on a silent default. The pre-flight names every decision the build is about to make: the window, who may be placed, which lines may be touched, whether the arithmetic holds, and what nobody has answered yet.
Shape, not just permission. A locked line keeps one person across the block, a rotating line balances week to week, a married pair is an exchange inside the week, and a holiday season is a slot of its own handed over on its first day.
Every placement goes through the rulebook first. A blocking rule leaves the cell open with its reason attached rather than forcing a body into it; warnings are counted as the cost of the draft.
Measured against your own practice. Every build prints the shapes your group actually writes — weeks exchanged, changeovers on the day, whole weeks, long runs, back-to-back weeks — beside the draft, so a departure shows up on the first build rather than nine months later.
Drift is visible afterwards. Once a version is signed, the schedule is read back against it: kept, moved, opened, filled — with who changed it, when, and from what.
Continuity is watched. On the lines your group marks for continuity, a week split between people shows on the grid, with a fix drawn before and after: trade the week with a line that can absorb it. It changes which line somebody works, never which days, and it can be put back.
It never publishes on its own. A build makes a draft only the Builder tab shows.
Signing it off writes it beyond the publish horizon, where schedulers can see it and
clinicians cannot. Only the people named on the Admin page may move that horizon — deliberately, and never a machine.
How a schedule gets made
1Pre-flightWhat the window needs, whom it may place, and every question still unanswered.
2DraftA grid per block, everyone’s mix against their own fair share, the practice beside it. Visible to nobody else.
3FinesseSlot by slot in the grid itself, with a ranked list of who the app would pick and why — and who is barred, with the reason.
4Sign off as a versionA foundation the live schedule is measured against from then on.
Publishing stays a human act
Continuity of care
A week that changed hands, mended without moving anyone’s days.
Some lines are meant to be one person’s week. When a week on one of them is split between
people, the Schedule’s Continuity card lists it and looks for a fix: trade the week with a line
nobody watches, so everyone works the same days on a different line. See the trade draws both
lines before and after, and you trade from there, or not.
Schedule ▸ ContinuitySee the tradeEvery name invented
Trade E-Service and G-ServiceOct 13 – Oct 19
Everyone keeps the days they work. Only the line changes.
Now
Mo12
Tu13
We14
Th15
Fr16
Sa17
Su18
Mo19
Tu20
runs
E-Service
MB
TW
TW
TW
AN
AN
TW
TW
PR
3+2+2
G-Service
OB
JM
JM
JM
JM
JM
JM
JM
EV
7
After the trade
Mo12
Tu13
We14
Th15
Fr16
Sa17
Su18
Mo19
Tu20
runs
E-Service
MB
JM
JM
JM
JM
JM
JM
JM
PR
7
G-Service
OB
TW
TW
TW
AN
AN
TW
TW
EV
3+2+2
moves onto E-Service
week line (Tuesday)
handover off the week line
E-Service: 3 runs become 1. 3+2+2 becomes 7.
G-Service is not watched for handovers. It takes 3+2+2.
Julian Moreau is 1.9 shifts ahead on E-Service this year; Leah Kowalski is 3.6 behind.
Trade E-Service and G-ServiceOct 13 – Oct 19
Everyone keeps the days they work. Only the line changes.
Now
Tu13
We14
Th15
Fr16
Sa17
Su18
Mo19
E-Service3+2+2
TW
TW
TW
AN
AN
TW
TW
G-Service7
JM
JM
JM
JM
JM
JM
JM
After the trade
Tu13
We14
Th15
Fr16
Sa17
Su18
Mo19
E-Service7
JM
JM
JM
JM
JM
JM
JM
G-Service3+2+2
TW
TW
TW
AN
AN
TW
TW
moves onto E-Service
week line (Tuesday)
handover off the week line
E-Service: 3 runs become 1. 3+2+2 becomes 7.
G-Service is not watched for handovers. It takes 3+2+2.
Julian Moreau is 1.9 shifts ahead on E-Service this year; Leah Kowalski is 3.6 behind.
It watches the lines you choose
Your group marks which lines should be one person’s week. The Continuity card beside the grid lists every week on those lines that changed hands, and only on the lines you may change.
beside the Schedule
Nobody’s days move
The fix trades which line people work, never which days. Everyone works exactly the days they already had, so a swap two colleagues agreed on is never undone. A trade can be put back in one press.
the line changes, not the day
You see the cost before you trade
The picture shows both lines now and after, and says it in words: how many people the week had and will have, a week the trade would split, a handover that moves off the week line, and anyone it puts ahead of their share.
before you press Trade
Working together
Two schedulers, one grid, and every change as it happens.
When more than one scheduler has the Schedule open, each sees who else is on it and what they
are looking at. A change reaches every other open grid the moment it is saved, with no reload,
and nobody can save over a change they never saw.
Schedule ▸ LiveTwo others on the gridEvery name invented
October 2026Color byPublished through Dec 31, 2026/LiveNONadia OkaforOctober 2026 · MonthSHSamir HaddadOctober 2026 · MonthHas D-Service Fri, Oct 9 openOnly schedulers and administrators are shown here.
Time
Floors
Tu29
We30
Th1
Fr2
Sa3
Su4
Mo5
Tu6
We7
Th8
Fr9
Sa10
Su11
Mo12
Tu13
We14
Th15
Fr16
Sa17
Su18
Mo19
Tu20
We21
Th22
Fr23
Sa24
Su25
Mo26
Tu27
We28
Th29
Fr30
Sa31
Su1
Mo2
Rounding services
A-Service
7a–7p
B-Service
7a–7p
C-Service
7a–7p
NO
D-Service
7a–7p
SH
E-Service
7a–7p
F-Service
7a–7p
G-Service
7a–7p
H-Service
7a–7p
NP · PA day
APP 1
7a–7p
APP 2
7a–7p
APP 3
7a–5p
Admitting & consults
Admit-Consult Early
7a–5p
Admit-Consult Mid
11a–9p
Admit-Consult Late
1p–11p
Nights & swing
Swing MD/DO 1 (wkdy)
3p–1a
Swing MD/DO (wknd)
3p–1a
Swing APP 1
3p–1a
Nocturnist MD/DO 1
7p–7a
Nocturnist MD/DO 2
7p–7a
Backup
Backup Call
7a–7a
October 2026Color byPublished through Dec 31, 2026/Live
Oct 12 – Oct 19
Mo12
Tu13
We14
Th15
Fr16
Sa17
Su18
Mo19
Rounding services
A
B
SH
C
D
E
NO
F
G
H
NP · PA day
APP 1
APP 2
APP 3
Admitting & consults
Admit Early
Admit Mid
Admit Late
Nights & swing
Swing MD 1
Swing MD wknd
Swing APP 1
Nocturnist 1
Nocturnist 2
Backup
Backup
See who else is on it
The pill at the top of the grid shows the faces of the other schedulers and administrators who have the Schedule open. Press it to see which month each is on and which shift they have open. Nobody else is shown.
schedulers and administrators
Changes arrive as they are made
A shift somebody changes is drawn again on your grid, ringed with their initials for a few seconds, and added to the top of the Activity card. A shift somebody has open wears a dashed ring.
no reload
Nothing saved over a change you missed
If a shift changed after you opened it, your change is not saved. The side panel says who changed it and who has it now, so you decide again with the grid as it is.
refused, never overwritten
Telling the group
A notice on everyone’s Today, and a count of who read it.
Post an announcement from Messages to the whole group, or to the people on certain lines. It sits at
the top of Today until it comes down, and it can ask each person to say they read it. Reminders go
only to the people who have not.
Messages ▸ Announcement31 of 45 have read itEvery name invented
Night admissions move to 4 West on Monday
Shown as from Nursing administration · posted by Ysolde Marrick · to everyone who signs in · on Today Wed, Oct 7, 10:40a – Tue, Oct 13, 8a
From Monday night, admit overnight patients to 4 West, not 6 North. The charge nurse there takes report.
The bed board is updated the same night.
31 of 45 have read it
31 read it14 not yet9 by push44 by email1 held
Reminders
When
By
Went to
Email
Push
What happened
Sun, Oct 11, 8a2 days before it comes down
push and email
–
–
–
waitingwould go to 14 now, 14 by email, 3 by push
Mon, Oct 12, 8p12 hours before it comes down
push
–
–
–
waitingwould go to 14 now, 3 by push
Who
Read it
Reached by
PRPriya RamanEveryone
–
Today, push and email
RQRafael QuinteroEveryone
–
Today, email
RMRiley MorganEveryone
–
Today, push and email
RDRosa DelgadoEveryone
–
Today, email
SESam ElleryEveryone
–
Today, email
SHSamir HaddadEveryone
–
Today, email
SASimone AchebeEveryone
–
Today, email
SLSofia LindgrenEveryone
–
Today, email
TBTalia BrooksEveryone
–
Today, email
TLTheo LindqvistEveryone
–
Today, push and email
TGwTobiah GallowayEveryone
–
Today, email
TWTobias WrenEveryone
–
Today, email
WTWesley TranEveryone
–
Today, email
YHYara HaddonEveryone
–
Today, email
TodayOn a phone
Today
Wednesday, October 7 2026
You're on A-Service7a–7p
+15140 of 168 · 11 ahead
Announcementuntil Fri, Oct 9, 3p
Flu shots in the doctors' lounge this week
Employee health is giving flu shots in the doctors' lounge, Monday to Friday, 7a–3p. Bring your badge.
From Employee health · to everyone who signs in
Announcementuntil Tue, Oct 13, 8a
Night admissions move to 4 West on Monday
From Monday night, admit overnight patients to 4 West, not 6 North. The charge nurse there takes report.
The bed board is updated the same night.
From Nursing administration · to everyone who signs in
1 announcement you put awaystill up until it comes down ·
Up and down when you say
It goes up now or at an hour you pick, and comes down when you choose. It shows as from the group, from you, or from a name you type, such as Hospital IT. Push it, email it, both or neither.
on Today until it comes down
Know who has read it
Ask people to say they read it, and each one presses I’ve read it. Its page in Messages shows who has, who has not, and how each was reached.
the count stays in Messages
Reminders to those who have not
Add up to three, each a set number of days or hours before it comes down, by push, email or both. Only the people who have not read it by then get one.
push · email · both
Against the contracted minimum
AB142 of 208 · 9 ahead
CD137 of 208 · 4 ahead
EF102 of 208 · 31 behind
GH135 of 208 · on pace
JL51 of 127 · on pace
WorkedScheduledToday’s paceBehind pace
Fairness, measured
Every person can see where they stand, and so can you.
Most scheduling arguments are arguments about arithmetic nobody can see. This is the
arithmetic, on the screen, the same numbers for the clinician asking and the director
answering.
Shares balanced on both margins. Every line’s work is distributed across the people who may work it, and every person’s shares are in proportion to their load. A share computed one service at a time is how somebody who stepped out of a line quietly ends up carrying more of everything else.
What a person owes is a dated contract term. A change on the first of April bends the year’s figure, the pace, the builder’s window and the fair share from its date — and not from January.
Leave lowers the target in proportion to the days away, everywhere at once, because one resolver answers the question for every page. Time off blocks the days and keeps the target.
A personal goal that moves nothing. Anyone may set their own end-of-year target above their minimum. It never reaches the builder, the fair share or the counts — what a person wants for themselves cannot change what the group is owed.
A standing panel, line by line. Open anyone’s card and see them against everyone who shares their work, with the drift from the last signed version beside it. A scheduler can shade the whole grid by standing, too.
Your share of the shared work.Optional My Stats can show each line the group shares: what you have worked against your own fair share, beside the group’s middle. It never shows anyone else’s place. It is off until an administrator switches it on.
Your year, at a glance
Every clinician sees their whole year on one bar.
My Stats draws the year as it stands: the shifts you have worked, the ones already
scheduled, where your contract says you should be today, your minimum and a goal of your
own. The same card sits at the top of the Marketplace, so you see your year before you
give a shift away or pick one up.
+8 vs minimum pacegoal 180on track for 184publishedworkedsched.trend
Booked 11 ahead of pace through Nov 30
Solid, then striped. Solid is what you have worked. Striped is what is already on the schedule.
Today’s pace. The dashed line is where your minimum says you should be today. Leave and a contract change move the line, so they never put you behind.
Minimum and goal. The amber tick is what your contract asks for the year. The teal one is a goal you set yourself, and it changes nothing anyone else is owed.
Where the year lands. The short mark under the bar is where the published schedule ends. Past it, faint stripes carry on at your rate so far: a forecast, not a plan.
In the calendar you already use
Your shifts in your own calendar, and a check that they are current.
One button puts your shifts in Google Calendar, Apple Calendar or Outlook. Each calendar app then
checks for changes on its own timetable, so My Stats tells you when each one last checked and
whether it has your latest shifts.
Google Calendar last checked your link 2 days ago, before your shifts changed. It is showing old shifts. To update it now, remove it in Google Calendar and add it again.
Apple Calendar checked your link 35 minutes ago. It has your latest shifts.
Su
Mo
Tu
We
Th
Fr
Sa
Sep 27
28
29
30
1
2
Backup Call7a–7a
3
4
5
6
A-Service7a–7p
7
A-Service7a–7p
8
A-Service7a–7p
9
A-Service7a–7p
10
A-Service7a–7p
11
A-Service7a–7p
12
A-Service7a–7p
13
14
15
16
17
18
19
20
B-Service7a–7p
21
B-Service7a–7p
22
B-Service7a–7p
23
B-Service7a–7p
24
B-Service7a–7p
25
B-Service7a–7p
26
B-Service7a–7p
27
28
Backup Call7a–7a
29
30
31
Nov 1
2
3
4
5
6
7
Your calendar feed
Your shifts in your calendar app. Tap the one you use. Google checks for changes when it chooses, sometimes only once a day. Apple and Outlook check more often.
Google Calendar last checked your link 2 days ago, before your shifts changed. It is showing old shifts. To update it now, remove it in Google Calendar and add it again.
Apple Calendar checked your link 35 minutes ago. It has your latest shifts.
Add to calendar, in one press
Google Calendar opens its own page to add your shifts. On an iPhone, iPad or Mac, Calendar asks to subscribe. For Outlook or any other app, the link is copied for you. On a phone the three are buttons of their own.
Google · Apple · Outlook
It tells you if your calendar is behind
Each calendar app checks your link on its own timetable. The link asks for every hour, but Google Calendar decides for itself, often every few hours and sometimes longer. So My Stats says when each app last checked, whether it has your latest shifts, and how to catch it up.
when each app last checked
Every link, checked
Administrators see every person's link on one page: which calendar apps read it, when each last did, which are behind, and how often each kind of app really checks. A link shows only the months that have been published.
Admin ▸ Calendar links
Shifts change hands
People move their own shifts, inside the rules.
The scheduler stops being a switchboard. A clinician who needs a day off posts it; a
colleague who wants the work takes it; the rulebook decides whether it may happen, and
the record writes itself.
Open shifts anybody eligible can claim, checked the moment they claim it.
Giveaways to the whole pool or directed at one person, with accept and decline on the record. A giveaway can wait while open shifts like it are still empty, so the empty ones are taken first.
Swaps and trades. The engine knows which lines are staffed alike and may be exchanged, and which are only alike by accident — and it draws that, so “why will these two not trade?” has an answer on screen instead of an argument.
“I could work these days.” The opposite of time off: people say when they are available and on which lines, and every open shift that day says who put their hand up — and they hear when a shift that day is given away.
An empty list says why it is empty. Never a blank panel and never a guess — the reason travels with the answer, so nobody is told “nobody is available” when the truth is “that month is not published yet”.
Only what is waiting on you. A number beside a tab counts what needs your answer — never everything that exists.
A record of promises.Optional It looks only at days a person said they could work: asked to cover a shift that day, did they say yes, and holding one, did they keep it? Sick days never count, the reason itself is never kept, and nobody is ranked. It is off until an administrator switches it on.
An open shift
Admit · Late 13–21Saturday 12 September · nobody holds it
Said they can work this day
DKPSWY+2 who offered the whole weekend
An offer assigns nothing by itself. A claim passes exactly the validation an
assignment does, so the answer is the same whoever is looking.
The rulebook
Your practice, configured — not our assumptions, hard-coded.
Every rule is edited as a grid by the people who run the group, and every rule is checked on
every change: a draft from the builder, a swap between two clinicians, an administrator
moving a cell by hand.
Who may staff each lineSame-day conflictsSequence rulesRest limits and long runsMarried lines and exchangesOperating days and hoursBlocks, cohorts and seasonsHoliday equityMinimum staffing per line
Three answers, never one
RefusedThis line is not staffed by that discipline. The cell does not move.
Allowed, with a warningA third weekend in a row is past the rest limit. A person may go ahead; the builder pays a cost for it.
Recorded and silentNothing to say about this one — but the change is in the audit trail either way.
The readiness audit
A rule nobody has configured produces a schedule that looks perfectly clean. It fires,
finds nothing, and says nothing — which is indistinguishable from a rule that is
working.
So every rule and every configuration column has to declare the check that reports its
unanswered inputs, and the app keeps one list of everything nobody has answered yet:
a line with no hours, a season in no group, a person with no contract, a requirement
never set. The coverage report shows the subset that would leave a gap this month.
A gap is a question still worth asking. The audit reports what somebody can act
on now — not next year’s holiday dates in January.
Governance, access and the record
Who may see it, who may change it, and what happened.
A schedule is a personnel record. It holds contact details, contracts, leave and who was
where — so access is decided per person and per page, and enforced where it counts.
Access per tab
One grid: every person against every page, with three answers a cell can hold — block, read, modify — and a line under each page saying what a grant opens. Read shows a banner, offers nothing that writes, and the API refuses every write behind it, because a page that says “read” while the server still saves is a lie with a nice icon.
enforced at the API, not the button
Sign-in that fits a hospital
Your own clinical id and a personal password, hashed and never stored in the clear. A six-digit PIN carries on after an idle timeout and confirms a shift moving. On your own device, Face ID, Touch ID or Windows Hello does both.
passkeys · PIN · one-time sign-in links
An audit trail worth reading
Who changed what, when, and from what — including every administrator override. Signed versions make it sharper still: the schedule can always be read back against what was agreed.
every change, every override
Backups, off the machine
A snapshot every night, kept on the server for two weeks. Each night it is also sent to cloud storage you choose, scrambled on your server before it leaves, so the storage holds nothing it can read. Thirty nights and a year of months are kept, checked after every copy, and Admin shows whether last night arrived. A configuration export restores every column it was able to create, proved on each release by a round trip.
encrypted off-site · checked nightly
Private by design
It runs on your own hardware, behind your own tunnel. There is no tenant, no shared database, and no copy anyone else can read. The off-site backup is encrypted before it leaves your server. It holds no patient data of any kind. The Help assistant sends a model only the question and the app's built-in wording: the Help page, the How To guides and the words on its screens. It can use a model inside your own network instead.
self-hosted · no PHI
Notices you control
Every message is written down as a record before it is sent, worded from the rows as they stand at that moment, and voided if the thing it was about changed. Each person picks email, a phone notification or neither, and a tap opens the exact thing it is about. Nothing is delivered until sending is switched on at the server itself.
queued, worded, then delivered
Getting there from here
It runs beside what you have until you are ready.
The hardest part of replacing a call schedule is not the software. It is the month where
half the group is looking at the old one. This was built to make that month boring.
Your existing scheduler, both ways
Imports your existing schedule month by month — ours came across with ten years of archive behind it — and keeps syncing on a timer, with a local edit always beating the feed. For the days you choose it can match the old schedule exactly, and it takes a snapshot first. A full parallel run costs nobody a second entry.
import · sync · no double entry
Your EHR, through your own exporter
It answers in the same report format your old scheduler did, so an aggregator already pulling your schedule into the EHR needs no new parser and no new mapping. The day the old system is switched off is a base-URL change on one stream.
read-only · token-gated · rotatable
Everyone’s own calendar
One press puts a person's shifts into Google Calendar, Apple Calendar or Outlook, through a private link. Each calendar picks up changes when it next checks, and My Stats says whether it has caught up. A link never shows a month that has not been published.
webcal · per person
Numbers your finance office accepts
The counts workbook is a real .xlsx: frozen panes, number formats, one sheet per view. It is checked on every release by opening the actual file the app produces, the strict way, rather than a fixture that flatters the writer.
.xlsx, verified on each release
On the phone in a pocket
It installs to the home screen, with the steps for your phone’s browser, and opens without browser chrome, with your daily pages in a bar along the foot. Today, Who is On, the grid, the marketplace and your own year are all built for a phone first, because that is where a shift actually changes hands.
installable · notifications
A board for the workroom
Who is on, and how to reach them, on a screen anybody in the department can see — opened with a short code of its own rather than a personal sign-in, and printed on one page for the days the screen is not enough.
shared screen · own code
What running it takes
One small server, one file, one person who knows where it is.
There is no cluster, no managed database and no seat count. The whole schedule — roster,
rules, history, audit — is a single SQLite file you can copy, back up and read with
ordinary tools. Restoring it is putting the file back.
Runs as one service on a small Linux machine your own team already looks after, reachable through your own tunnel or from inside your own network.
Backed up somewhere else every night. The snapshot goes to cloud storage, encrypted with a password only your group holds, and a copy has been restored and read back to prove it.
Every release is gated. Ninety-three automated checks run before anything ships — not unit tests of the happy path, but checks that the schedule cannot silently lose a rule, an export cannot lose a column, and a page cannot show a person something the rules would not.
Built with the group, in the open. About six hundred releases so far, each one written down: what changed and why, in words a director can read — and inside the app, each person reads what changed for them.
93automated gates per release
1file holds the whole schedule
0patient records, by design
24/7in daily clinical use
Built for one hospitalist group, in production every day. Every feature on this page
exists because a scheduler or a clinician asked for it, used it, and said what was still
wrong with it.