Live demo · nothing to sign up for

Build a week. Break a rule. See what happens.

This is the real MedAligna scheduler running the real rules engine on five seeded settings: a hospital ward, a clinic, a nursing home, a home care round and a residency programme. Pick the one that looks like your building. No account, no email address, nothing saved. It is not a video and not a mock-up: the refusals below are the product refusing you.

Seven things worth trying

Each one is a real person or a real drive time in the seed data, with a real reason to be interesting. Blocked staff stay visible in the picker, greyed out with the reason; hiding them would only make you wonder where they went.

Hospital ward

Try to schedule Marisol on Friday

Her RN licence expires on Thursday the 18th. The assignment is refused, not warned about: credentials are checked against the END of the shift, never against today.

Hospital ward

Jump to the week of Oct 26–Nov 1, 2026

The clocks change during Tomas's night shift. The wall clock says 12 hours; he works 13. Exporting 12 would short him an hour of his own life, so the engine measures the instants instead. The date came from the IANA timezone database at build time, not from a constant we typed.

Hospital ward

Open any empty RN slot

The picker is the fill waterfall: your own staff, then the float pool, then the other location, and agency LAST. Kevin bills $88 an hour against Owen's $47, and he cannot leapfrog Owen, because the tier order is policy rather than a ranking.

Clinic

Give Dana a third day

She is contracted for 24 hours a week and the practice's cap is 40. Her third nine-hour day is 27, and the engine warns at hour 25 rather than hour 41: it checks the tighter of the two limits, which is the one that applies to her.

Long-term care

Fill the Activities row, then look at the PBJ panel

The file stops being filable. That position has no CMS job code, and there is no honest default: guessing that an unmapped position is a nurse aide would be inventing staffing data on a federal filing. Clear it and the XML downloads.

Home care

Put Rosa on the 10:00 Nowak visit

She is at the Alvarez home until 10:00 and Nowak is 24 minutes away, so it is refused. Then put her on the 10:15 Okamoto visit and watch it go through: six minutes' drive. Same caregiver, same morning; the only difference is the road.

Residency programme

Read Yusuf's block, then break it

His four weeks are 88, 76, 82, 74 hours. Two of them are over 80 and the board opens with nothing flagged, because the limit is a mean and his is exactly 80.0. Now put him on week 4's free Friday clinic: 4 hours, that week is 78 (under the line) and the block is over. That is the error a weekly cap cannot see.

Twelve-hour shifts, licences, rest and overtime on a med/surg floor — and the two nights a year a twelve-hour shift is not twelve hours.

Week

A half-built draft, the way a real one looks on a Tuesday.

Med/Surg — 3 WestJun 15–21, 2026Draft
No conflicts~$5,632 est. labour
Med/Surg — 3 West, Jun 15–21, 2026. Rows are the shifts that need covering; columns are the days of the week.
SlotMon 15Tue 16Wed 17Thu 18Fri 19Sat 20Sun 21
RN day07:00–19:00 · needs 2
CNA day07:00–19:00 · needs 1
RN night19:00–07:00 · needs 1
LPN evening15:00–23:00 · needs 1
Coverage! 4/5understaffed! 4/5understaffed! 3/5understaffed! 2/5understaffed! 0/5understaffed! 0/5understaffed! 0/5understaffed

Click + Assign to staff a shift, click a name to remove it, or drag a name to another shift. Every change is checked against licences, rest, overtime and approved time off as you make it.

Conflicts across the week

0 blocked · 0 warning

Nothing on this board breaks a rule. Try assigning somebody who cannot work; the engine will say so here before you publish.

What is in the demo?

Five settings, five seeds, one engine: each of them half-built, the way a real draft actually looks on a Tuesday.

The hospital ward is 3 West, fourteen staff, in America/New_York: a location's timezone is the authority for its wall times, so the grid is showing you Eastern rather than yours. Registered nurses, licensed practical nurses and certified nursing assistants, plus the four people every real roster has and most demos leave out: a 0.6 FTE part-timer, a per-diem CNA, a float-pool RN, and an agency RN who bills at nearly twice an employee's rate. There is a second site, Riverside, with two more nurses on it, because the fill waterfall needs somewhere to escalate to.

The ward has three weeks rather than one. The June week is the baseline. The other two are the next two times the clocks actually change in that timezone, found by asking the IANA database when this page was built rather than by typing a date, so a 19:00–07:00 night on one of them is 13 real hours while the wall clock still says 12, and the payroll export gets the real one. That is the whole reason the engine reasons about instants and never about clock faces.

The clinic is a five-day family practice in Central time, where the limit that bites is a contract rather than a cap: Dana is on 24 hours a week against the practice's 40, and the engine checks the tighter of the two. The nursing home is twenty residents in Mountain time, with the census entered and HPRD computed live from the grid: nursing hours divided by residents, split at local midnight, which is arithmetic on the seeded numbers rather than a compliance threshold. Its PBJ panel builds a genuine CMS 4.10.0 submission file from those same hours, in your browser, and refuses to build one when something in it cannot honestly be filed.

The home care round is the one a shift scheduler cannot do at all. Its rows are clients rather than slots, and the seed carries the drive times between their homes. Two visits booked back to back are accepted by every tool that thinks a caregiver's day is a block; this one refuses the impossible one and allows the possible one, and the only difference between them is eleven miles.

The residency programme is the only one that is not a week, and it could not be. Its rule is that eighty hours is a mean over four weeks rather than a weekly ceiling, and a mean over four weeks is not a fact about any one of them, so the seed is a whole four-week block and the table under the grid shows all of it at once while you edit one week at a time. Yusuf's weeks are 88, 76, 82, 74 hours: two of them over the line, an average of exactly 80.0, and not one thing flagged. A scheduler with a weekly cap in it refuses that block, and a scheduler that checks each week alone passes one that breaches, which is the expensive direction. Add 4 hours to his quietest week and watch which of the two numbers moves.

Everything you do runs the full engine in the browser as you drag: the same TypeScript that runs on the server, 13 rules on every assignment, so the verdict you see here is the verdict the database would give. Conflicts appear on the cell in the same frame as the click, the whole week's conflicts are listed under the grid, the labour estimate in the toolbar moves as you fill, and undo works. The estimate is for budgeting and says so: it is not a wage figure and never reads as one.

Is any of this real data?

No. Every name here is invented (staff, clients and facilities alike), and no organisation's roster is in it.

The people are seed data, written to look like a roster rather than a toy. Marisol is not a nurse; her licence expiry is a fixture that also serves as a test case. Michael Grant is not on any exclusion list and has not been accused of anything; his record exists to show what a possible match looks like, because that is the case people get wrong. Cedar Hollow is not a facility and its CMS submission ID is invented; the drive times on the home care round are seeded numbers, where the product reads them from a routing service. Block 5 is not a programme and Yusuf Adeniyi is not a resident; his rota is a fixture, built to land on an average of exactly 80.0 because that is the number worth being able to see. There is no patient data in this demo, which is easy for us to promise: there is no patient data anywhere in MedAligna.

The things that are not invented are the ones that could not be. The dates the clocks change come from the IANA timezone database. The PBJ file is built against the schema CMS actually publishes. And the duty-hour limits the residency block is measured against (eighty hours averaged over four weeks, one day in seven free averaged the same way) are the Accreditation Council for Graduate Medical Education's rather than ours. Those are checkable, which is exactly why they are the ones we let the machine produce.

Nothing you do here is saved. Drag what you like, break what you like, refresh, and it comes back exactly as it was. Nothing is sent anywhere, nobody is emailed, and this page does not ask you for an address in exchange for the interesting part: there is no interesting part being withheld.

What is not in the demo?

Everything that needs an account, a phone, or a quarter of history.

This page is the schedule builder, the rules engine, the fill waterfall and the PBJ file, which are the parts worth being sceptical about. The rest of the product needs things a sandbox cannot have. Staff-side swaps and claims need staff with logins, and they are contested writes, which the database settles with a row lock rather than the browser. The public on-call board, the credential wallet, the payroll hours export, and a real quarter of captured hours all need an account behind them. Fourteen days with your own staff is where you see those, and that trial does not need a card either.

Can I try MedAligna without talking to sales?

You already are. There was no form in front of this page, and there is no call behind it.

The demo needs no account. The trial needs no card, runs fourteen days with every feature, and ends by doing nothing at all if you do nothing at all. Nobody will phone you on day thirteen, because there is nobody here whose job that is. The price is on the pricing page rather than behind a meeting ($99, $149 or $249 per month per location), so you can put us in a spreadsheet against two other products this afternoon, which is the entire point of publishing it.

Want it with your own staff in it?

Import a spreadsheet, set your coverage once, pick a rotation, publish. Most teams do the whole thing in an afternoon. Fourteen days free, no card required to start.