
Product
Technician staffing, built around the session.
- See the technician minutes each session will need before the day starts.
- Get a draft plan from your own roster that never breaks credentialing, site or hour rules.
- A person approves every plan, and every change is recorded with who and why.
- Start with Phase Zero: a fixed-fee test of the forecast on your own history. Ask for a quote.
Session-level planning
See the work
behind the headcount.
Know how many technician minutes each session will need, then get a proposed plan from your own roster that respects competency, availability and site rules.
Follow the forecast through the system →Illustrative view · synthetic validation data
Same volume. Different workload.
The fixed ratio recommends two technicians for both synthetic sessions. These are prototype forecasts, not observed clinic results.
Inspect the evidence →Interactive illustration · synthetic roster
A call-off does not
cancel a constraint.
An OCT session needs coverage. Choose a fictional technician and see the reason an assignment would be refused.
This demonstration reproduces two rule checks. It is not connected to the solver and does not validate a staffing plan.
Choose a technician
The reason appears here. Every choice keeps a person responsible for the decision.
The loop
What a Tuesday actually looks like
- 01
Before clinic
See each session's expected workload, and which ones need a second look.
More detail
The day board shows every session with its forecast minutes, the range around it, the recommended technician count and what the fixed ratio would have said. Sessions the forecast is least sure about are flagged so they get a second look.
- 02
Build
Get a draft plan in one step. It never bends a rule to fill a gap.
More detail
One action produces a draft plan under the eight hard rules. Generating it staffs nobody. Sessions that cannot be filled inside the rules are listed with the shortfall and the solver's own suggestion, rather than filled by bending something.
- 03
Argue with it
Ask why for any session or assignment, and override it with a reason.
More detail
Open any session to see why the forecast landed where it did, which competencies the session needs and why, and the reason each assigned technician was chosen. Override anything, with a reason.
- 04
Approve, separately
A second person approves before the plan becomes final.
More detail
A second person accepts and publishes. Until they do, there is no plan of record. The creator cannot normally approve it. A solo-approval exception requires explicit acknowledgment and a recorded reason.
- 05
When the day changes
When someone calls off, replan without reshuffling the whole day.
More detail
Record a call-off or an add-on and replan. The solver is told to minimize churn against what was already published, so a small change to the facts does not reshuffle the whole day.
The moments worth seeing
Seven things it does that a schedule cannot
- 01Session Detail
The system refuses an override and names the rule you broke
Pick a technician the picker has marked blocked, give a reason, and submit.
More detail
The override is refused, nothing is stored, and the failing hard constraints come back by name, with the detail for each. Try a technician who is not blocked and the override is accepted, creating a new plan version whose parent is the one it replaced.
An automated test confirms the refusal names the site eligibility rule.
- 02Session Detail
Every assignment can be second-guessed
Open the counterfactual for any assigned technician and the system names the next feasible alternative, then re-validates the swapped plan and reports the real metric differences rather than estimating them.
More detail
Runs on the same plan comparison and counterfactual checks.
- 03Scenario Lab
Stress the roster before the day does
Thirteen scenarios, two of them infeasible by design, applied as real state changes through the same machinery a live event uses.
More detail
Apply a technician call-off and read which checks on the current plan now fail, before deciding whether to reoptimize. Reset returns the date to its snapshot, and the reset is itself in the audit log.
Thirteen scenarios verified in the scenario catalog.
- 04Optimization
See which rule the solver ran out of room on
Pass, warning or fail for each of the eight hard constraints, with a plain-language explanation and the sessions each one affects, plus the solver's own account of where it stopped and the diagnostics for every session left unresolved.
More detail
One check per rule, re-derived by the independent validator.
- 05Plan History
Nothing is overwritten, and any two versions can be compared
A version timeline built from plan lineage, with status, override reasons and what changed.
More detail
Compare any two versions, or compare a version against the fixed-ratio baseline staffed under the same eight rules and scored with the same metrics.
Every override and replan keeps a link to the plan it replaced.
- 06Local validation
Score the model on your own data, with nothing stored
There is a documented export format and a scoring service for rows a clinic exports.
More detail
The rows are read in memory, scored, and discarded: nothing is stored and nothing is written. A file with fewer than twenty usable rows is refused rather than scored.
Validation cannot write to the database.
- 07Economics
An economics calculator that will not guess
It computes cost, payback and a break-even threshold from rates you supply.
More detail
There is no default rate, no benchmark and no industry figure anywhere in it. An input you do not supply comes back marked for you to confirm, and every figure that needed it returns as not computed rather than as a filled-in guess.
Each line is computed only when every rate it needs has been supplied.
Source README.md, The eleven screens and Three-minute demo; backend/app/{scenarios,validation,economics}/; backend/tests/test_solver.py
Verified Scenario count and the override-refusal test were checked against the code on 2026-09-07.
The one to watch
The refusal is the feature
Any staffing tool can produce a schedule. The question a practice administrator should ask is what happens when someone overrules it, because that is what will happen at six in the morning when a technician calls off.
A schedule without enforced constraints
If a schedule accepts changes without rechecking competencies and site eligibility, the updated plan can conflict with the clinic’s rules. An editable schedule alone does not establish that every assignment remains feasible.
What this does
Re-check all eight hard rules against the proposed change. If it breaks one, refuse it, store nothing, and return the rules it broke by name. If it breaks none, accept it, record who made the change and why, and keep the version it replaced. An automated test confirms the refusal names the specific rule.
Source backend/app/solver/validator.py; backend/tests/test_solver.py, test_override_breaking_site_eligibility_is_rejected
Where the record goes
An auditor can reconstruct the day without asking anyone
- Every plan, override, decision, scenario and export is logged with who, when and why.
- The log is append-only and hash chained, so an edited or deleted entry is detectable.
- A built-in check reports the first break by sequence number.
A plan leaving the system as a file is itself recorded, because a plan leaving the system is a disclosure.
Source backend/app/db.py; docs/governance.md section 3; docs/security-architecture.md section 6
Boundaries
What this is not
Not an EHR
It holds no chart, no diagnosis and no note. It reads counts about a clinic session and forecasts the technician minutes that session will consume.
Not appointment scheduling
It does not book, move or cancel a patient. It takes the schedule you already built as given and staffs the technician side of it.
Not a staffing agency
It supplies nobody and hires nobody. It assigns the technicians already on your roster, under your own rules, for a person to approve.
Not credentialing software
It does not verify, issue or track a credential. It reads the competencies and site approvals you maintain elsewhere and refuses any assignment that would violate them.
