A conversational scheduler for clinical rotations.

A university nursing program ran its entire clinical practicum out of one enormous, hand-built Excel workbook. We replaced it with a private, on-device assistant. Faculty schedule in plain English, and the tool will not save a schedule that breaks the program’s rules.

Client
Nursing program, ABSN track
Sector
Higher education
Engagement
Custom agent build
Status
Piloted with faculty
100%
On-device. No student data leaves the laptop.
79
Automated checks passing across engine, app, and live model.
~690
Student placements per semester, now guarded automatically.
2x to 1x
Every assignment was entered twice. Now it is entered once.

One spreadsheet held the whole program together, and it was one wrong cell away from breaking.

Faculty rebuilt a sprawling, macro-driven workbook every single semester, by hand.

Twenty-four students had to be placed across a dozen clinical sites over a sixteen-week semester. The sites ran from Med-Surg at Broadlawns to ChildServe, Wesley Life, the ICU, the family birthing center, simulations, and labs, each with its own capacity limits, allowed days, timing windows, and a 200-hour-per-semester requirement. The schedule was held together by hundreds of COUNTIF formulas and a magic-number checksum that had to line up before anyone could trust it.

Worse, the structure quietly duplicated everything. Each student’s schedule was entered once in a master grid and again on a per-student tab, and contact information was copied by hand into twenty-four separate sheets. A single mistake propagated silently, and the entire workbook was copied and re-wired from scratch every term. The institutional scheduling software, in the faculty’s words, was absolutely horrid, like a 1975 coded thing.

The model proposes. The engine decides.

We split the problem in two: a language model that understands the request, and a deterministic engine that owns every rule.

01 · Input

Plain English

“Who is at ChildServe on 11/12?”

02 · Proposes

Local model

Maps the request to a validated tool call.

03 · Decides

Constraint engine

Enforces capacity and conflicts. Can refuse.

04 · Output

Excel schedule

Writes a new file. The original is untouched.

The engine is the source of truth. The model cannot change the schedule or bypass a rule, even if it misunderstands the request.

Hard limits are enforced. Fluid guidelines flex.

Hard limits, enforced

  • Site capacity per day, for example the ICU takes one student a day.
  • No double-booking a student on the same day.
  • These are refused outright, with the reason shown.

Fluid guidelines, set on the fly

  • Which weekdays a site runs, and which weeks are blocked.
  • Timing windows, such as ICU days or Knoxville after spring break.
  • Applied with a note, not blocked, so faculty change them anytime.

A tool a non-technical faculty member opens, uses, and trusts.

Talk, don’t type formulas

Plain-English scheduling

Add sites, move students, and ask questions in ordinary language. No codes to memorize, no formulas to maintain.

Enforced rules

Guardrails on every change

Capacity and conflicts are enforced by the engine, so an invalid schedule is refused before it can be saved.

Automated report

Instant site rosters

“Who is at ChildServe on 11/12?” returns the roster faculty used to assemble by hand for each hospital.

Whole-cohort days

Bulk group assignment

Schedule an entire lab or simulation day for the group in one step, with conflicts reported rather than silently skipped.

One click

Save back to Excel

Exports a fresh workbook and never overwrites the original, so the familiar spreadsheet view is always intact.

Private by design

Runs offline, on the laptop

The model runs locally through Ollama. No cloud, no API key, and no student information ever leaves the device.

Local, deterministic, and built to be handed off.

The engine reads and writes the real .xlsm workbook the program already uses, models students by position, and treats capacity and double-booking as firm invariants. A tool-calling loop drives a locally-hosted model, and bounded conversation memory keeps it responsive over a long session.

It ships as a double-click installer that provisions everything it needs, the local model, the runtime, and the app, so setup on a new machine needs no terminal and no cloud account.

Python constraint engineOllama, local Qwen modelFlask web UIopenpyxl Excel I/OTool-calling agent loop100% offline

“Save faculty time and tedium, and safeguard from error.”

Project brief, nursing faculty

Less tedium, fewer errors, and a schedule that stays private.

01

Double-entry eliminated. Assignments are entered once and flow to the individual schedules automatically, closing the biggest source of silent errors.

02

No more yearly rebuild. The formula-and-checksum machinery is regenerated by the tool each term instead of being re-wired by hand.

03

Manual hospital rosters, gone. Per-site attendance lists are produced on demand instead of assembled cell by cell.

04

Thoroughly verified. 79 automated and live checks cover the engine, the web app, and end-to-end model behavior.

05

Student data stays put. Because the model runs on-device, sensitive information never touches a third-party service.

06

Adapts as the program grows. New sites, students, and shifting timing rules are added conversationally, not re-engineered.

From pilot to program-wide.

The tool is in faculty hands for the summer term, where the schedule is simplest. Next, we encode the remaining site-specific timing rules for the harder fall and spring semesters, and we are exploring a shared deployment so the whole program can work from one source of truth as it scales to new cohorts and clinical partners.

Custom AI tools, built for how your team already works.

We build private, practical AI tools for small and mid-sized teams, designed to hold up under real operational constraints. Reach out to talk through where this could help.