Skip to content

Schedules

A schedule defines the final set of bookable slots by combining one base sequence with zero or more filter sequences.

Sequences generate repeating time intervals.
A schedule uses these generated intervals to determine which slots remain valid for booking.

The schedule itself does not define repetition patterns. Those are defined by sequences.

Structure of a schedule

A schedule consists of:

  • One base sequence
  • Zero or more filter sequences

The base sequence generates the initial candidate slots.

Each filter sequence then removes slots that do not satisfy the configured temporal relations.

Conceptually:

base sequence
→ filter sequence
→ filter sequence
→ filter sequence

Filters are evaluated sequentially, but since filters only remove slots, the order normally does not affect the final result.

Base sequence

A schedule always begins with exactly one base sequence.

The base sequence generates the candidate slots used as the starting point for evaluation.

Example:

Base sequence: every hour

Generated slots:

08:00–09:00
09:00–10:00
10:00–11:00

These slots represent the initial availability before any filtering is applied.

Filter sequences

Each additional sequence in the schedule acts as a filter.

A filter sequence generates its own set of intervals, which are then used to evaluate the base slots.

Filters never create new slots.
They only remove slots generated by the base sequence.

Slot comparison

For each slot generated by the base sequence, the system compares it against all slots generated by the filter sequence.

Conceptually:

for baseSlot in baseSlots
for filterSlot in filterSlots
evaluate temporal relations

Temporal relations define how the base slot must relate to a filter slot.

Relations always evaluate in the following direction:

baseSlot RELATION filterSlot

Users may select any combination of supported temporal relations.

Filter rules

Each filter sequence contains two rule groups:

  • Any
  • None

These rule groups determine how base slots are accepted or rejected.

Any

A base slot must match at least one temporal relation against at least one slot generated by the filter sequence.

If no such match exists, the slot is removed.

None

If a base slot matches any temporal relation in the None group against any filter slot, the slot is removed.

Combined evaluation

A slot survives the filter only if:

matches at least one Any relation
AND
matches no None relations

Even if a slot satisfies the Any rule, it will still be removed if it also matches a None rule.

Empty filter rules

If a filter sequence exists but no Any relations are configured, then no base slot can satisfy the filter condition.

In this situation:

all slots are removed

Multiple filters

Schedules may contain multiple filters.

Each filter receives the remaining slots from the previous stage.

Conceptually:

slots = generate(baseSequence)

slots = applyFilter1(slots)
slots = applyFilter2(slots)
slots = applyFilter3(slots)

Because filters only remove slots, the final result is the subset of base slots that satisfy all filter conditions.

Preview

The schedule editor provides a preview that shows the slots generated by the current configuration.

The preview uses the same slot generation and filtering logic as the scheduling engine and therefore represents the actual resulting slots.

The preview is calculated starting from a selected date.

Summary

A schedule generates bookable slots through a three-step process:

  1. The base sequence generates candidate slots.
  2. Filter sequences generate their own intervals.
  3. Base slots are removed unless they satisfy the configured temporal relations.

The remaining slots represent the final availability defined by the schedule.

Understand the concept