Open source · CP-SAT · IT / EN

Every constraint, a solution.

Describe your people, shifts and rules — AIVOT's CP-SAT engine (Google OR-Tools) computes the optimal schedule. And when no schedule can satisfy every rule, it tells you exactly which ones conflict.

app.aivot.rocks
Hospital ward
9 nurses · 7 days · M / P / N
Optimal
Mon
Tue
Wed
Thu
Fri
Sat
Sun
Ana
M
M
P
N
N
Bea
P
P
M
M
N
Carla
N
M
M
P
P
Dana
N
N
P
M
M
Elsa
M
P
P
M
N
Fara
P
M
N
P
M
12 rules satisfied · 0 conflicts M P N
1
solver engine (CP-SAT)
5
steps to a schedule
IT · EN
interface
REST
API + embeds

From blank page to plan

Five steps to a schedule

No spreadsheets, no manual juggling. You describe the problem; the engine does the solving.

  1. 1

    Project

    Create a project — a self-contained scheduling problem you can revisit and re-run anytime.

  2. 2

    People

    Add the people (or resources) to schedule, with their availability and attributes.

  3. 3

    Rules

    Pick rules from the catalog: coverage, rest between shifts, max shifts, fairness, forbidden pairings…

  4. 4

    Shifts

    Define the shifts to fill across the horizon — mornings, afternoons, nights, whatever your days look like.

  5. 5

    Plan

    Run the solver. Get the optimal schedule in seconds — or a clear explanation of which rules make it impossible.

Everything you need

One engine, every kind of schedule

The solver never changes — the variety lives in the rules. From nurse rotas to shift plans, here is what AIVOT does today.

The CP-SAT engine

Optimal, not just feasible.

  • Google OR-Tools CP-SAT under the hood
  • Finds the best schedule, not the first that fits
  • Deterministic and repeatable results
  • Configurable solve time limit per run

Rule catalog

The whole variety, none of the code.

  • Composable constraints: coverage, rest, max/min shifts, fairness, forbidden pairings
  • Tune each rule's parameters per project
  • Mix hard rules (must hold) and soft ones (preferences)
  • No engine changes to add a new kind of problem

Explainable infeasibility

When it can't, it says why.

  • No valid schedule? It names the conflicting rules
  • Pinpoints the smallest set that makes it impossible
  • Relax the right constraint instead of guessing
  • Turns a dead end into a decision

Recipe store

Reuse a rule set in one click.

  • Publish a working set of rules as a reusable recipe
  • Install a recipe into any project
  • Start from a proven template, not a blank page
  • Share patterns across teams and projects

Schedules & archive

Every plan, saved and exportable.

  • Every run saved with its diagnostics
  • Export any schedule to CSV
  • Compare, revisit and re-run past plans
  • Keep a history of what was scheduled and why

Share & embed

Send a plan, or drop it in a page.

  • Share a computed schedule with a link
  • Embed a read-only schedule anywhere
  • Revoke access in one click
  • No login required to view a shared plan

Bilingual & clear

The whole app in your language.

  • Full English and Italian interface
  • Switch language live, no reload
  • Errors and explanations localised too
  • Backend responds in the interface language

Accounts & security

Sign in the way you prefer.

  • Email + password, or Continue with Google
  • Password reset by email (Brevo)
  • Token-based REST API auth
  • Django backoffice for administration

Self-host or cloud

Yours to run, anywhere.

  • One command to run locally: docker compose up
  • One-click deploy to Google Cloud (Cloud Run, Cloud SQL, Firebase)
  • Background jobs via Cloud Tasks (emails, solver runs)
  • Open source, GPL-3.0 — no lock-in

The part nobody else gets right

When there's no schedule, most tools just fail. AIVOT tells you why.

Ask for the impossible and other planners return a blank grid or an unhelpful error. AIVOT finds the smallest set of rules that can't hold together — so you relax the right one instead of guessing.

  • It names the conflicting rules, not a generic "infeasible".
  • It isolates the minimal conflict, so you know the real cause.
  • You make one informed decision — and re-run.
See it on your problem
No feasible schedule

These rules can't all hold at once:

  • Coverage: 3 nurses every night hard
  • Max 5 shifts / nurse / week hard
  • Ana unavailable Fri–Sun hard
Relax one of these to make it solvable.

Early access

Try it now, free

Create a project and get your first optimal schedule in minutes. No credit card, no commitment.

  • Unlimited projects and runs
  • The full rule catalog
  • Explained infeasibility on every run
  • Recipe store to reuse rule sets
  • CSV export, share and embed
  • English / Italian, switchable live

What's new

Recent changes.

  1. v1.0.0
    • First public release of AIVOT.
    • CP-SAT engine (Google OR-Tools) with an explainable-infeasibility report.
    • Rule catalog, recipe store, schedule archive with CSV export, share & embed.
    • Bilingual EN/IT, Google Sign-In, and a one-click Google Cloud deploy.