Hotel next deep-clean date allocation calculator

Calculate room clean plan [room,due,scheduled date] and unscheduled rooms with your own figures.

Your numbers

Use the units shown. Results update as you change valid inputs.

Use room clean plan [room,due,scheduled date] and unscheduled rooms to compare changes to your inputs. The method and limits below explain the scope.

Examples

Examples

Try the starting example

Rooms [room ID,last clean ISO date]; enter JSON
[["101","2026-10-01"],["102","2026-10-02"]]
User clean interval (days)
30
Occupied blocks [room,start ISO date,end ISO date]; enter JSON
[["101","2026-11-01","2026-11-03"]]
Planning start (ISO date)
2026-11-01
Planning end excluded (ISO date)
2026-11-05
Daily deep-clean crew capacity (rooms)
1
Room clean plan [room,due,scheduled date] (JSON)
[["101","2026-10-31","2026-11-03"],["102","2026-11-01","2026-11-01"]]
Unscheduled rooms (count)
0

Try another scenario

Rooms [room ID,last clean ISO date]; enter JSON
[["101","2026-10-01"],["102","2026-10-01"],["103","2026-10-02"]]
User clean interval (days)
31
Occupied blocks [room,start ISO date,end ISO date]; enter JSON
[["101","2026-11-01","2026-11-04"]]
Planning start (ISO date)
2026-11-01
Planning end excluded (ISO date)
2026-11-05
Daily deep-clean crew capacity (rooms)
1
Room clean plan [room,due,scheduled date] (JSON)
[["101","2026-11-01","2026-11-04"],["102","2026-11-01","2026-11-01"],["103","2026-11-02","2026-11-02"]]
Unscheduled rooms (count)
0
Calculation method

Calculation method

Room clean plan [room,due,scheduled date] (JSON)

Sort rooms by due then ID; pick earliest horizon date>=due with no occupied block and spare daily capacity; null if none.

Unscheduled rooms (count)

Count null dates in bounded schedule.

Symbols and units
a
Rooms [room ID,last clean ISO date]; enter JSON
b
User clean interval (days)
c
Occupied blocks [room,start ISO date,end ISO date]; enter JSON
d
Planning start (ISO date)
e
Planning end excluded (ISO date)
f
Daily deep-clean crew capacity (rooms)

Use the units shown. A list keeps the order in which you enter its values. The symbol ^ means “raised to the power of”.

Assumptions & limits

Assumptions & limits

  • One full-day room deep clean, bounded horizon and daily crew room count; one future clean per listed room. Supported limits: All numeric inputs and computed intermediates must remain finite. Supported numeric input magnitude is zero or 1e-12 through 1e12 in absolute value; reject values outside this bounded range. All lists/JSON record tables are limited to 100 records unless a stricter bound is stated; reject malformed record arity and wrong member types. Valid dates; unique room IDs; horizon 1..366 days; positive interval/capacity; no recurring second clean in horizon.
Are these inputs private?

These calculations run in your browser. A shared link contains the values you choose to share. Only questions submitted to the separate AI finder are sent to OpenAI.

Share this page
Share this calculator

Leave unchecked to share the page without your entered values.