# What a field-service scheduling engine should be able to express

> Real service contracts are not "every Tuesday". They are the 2nd Thursday of the month, outside glass on the 2nd and 4th Wednesday with inside glass on the 4th only, alternate months over winter, a front-loaded program that settles into quarterly, or one visit sold for one specific date. biloh's scheduling engine represents each of these as a first-class recurrence — and an operator or an AI agent can set any of them up in plain language.

URL: https://biloh.com.au/docs/explanation/what-a-scheduling-engine-should-express
Category: Explanation | Audience: evaluator | Updated: 2026-08-19

Most scheduling products can represent "every Tuesday". Very few can represent what service contracts actually say. Before you evaluate any field-service platform — this one included — write down your three oddest real contracts and ask whether the tool can hold them *as rules*, not as hand-placed one-offs that someone must remember to re-place next year.

## What patterns show up in real contracts?

From live commercial-maintenance data, these cadences all exist as signed, recurring commitments:

- **Nth weekday of the month** — "the 2nd Thursday", "the 4th Wednesday", including multi-ordinal patterns ("2nd *and* 4th Wednesday").
- **Every N weeks, phase-anchored** — 6-weekly or 8-weekly cadences that must stay on their original week. An anchor date is recorded so a regenerated schedule keeps its phase instead of drifting to the wrong fortnight.
- **Seasonal months** — "3rd Wednesday of alternating months" or "monthly, but only October through March". The month set composes with the weekday rule.
- **Programs** — front-loaded schedules that change interval over time: weekly for the first month, then monthly, then quarterly.
- **Explicit dates** — one visit, one sold date. Still contract-backed, still billable, still visible to the calendar and the invoice engine.
- **Two intentional lines on one site** — an "outside only" line on one cadence and an "inside only" line on another, or two lines placed on different weekdays so each visit marries up with a different geographic run. These are distinct commitments with distinct rates, and the engine models them that way.

## Why does representing this as *rules* matter?

Because anything the engine cannot express as a rule becomes tribal knowledge. A hand-placed workaround survives exactly until the person who placed it goes on leave, the schedule regenerates, or the year rolls over. A rule survives indefinitely: the nightly scheduler materialises visits from it, the proposal shows the client the same cadence the calendar will run, and an amendment goes through a controlled change process instead of a bulk re-drag.

The second-order benefit is honesty between sales and delivery. In biloh, the cadence on the accepted proposal *is* the recurrence rule the scheduler runs — one representation, sold and delivered. There is no re-keying step where "2nd and 4th Wednesday" quietly becomes "fortnightly".

## How does natural-language capture fit in?

The engine's MCP tool surface means an AI agent (or the built-in one-sentence onboarding intake) can take an operator's words — "shopfront clean, second Thursday monthly, $X ex-GST" — and stand up the client, site, contract line, recurrence rule, and first visits in one reviewed step. The natural-language layer is capture, not magic: what gets stored is the same explicit, inspectable rule you could have built by hand, with a preview of the next occurrences before anything commits. See [Onboard a client in one sentence](/docs/how-to/onboard-a-client-in-one-sentence).

## What expressiveness does *not* buy you

Expressiveness without integrity is a liability — a powerful engine can also express a mess. The other half of the design is the integrity layer: one live visit per contract line per period, loud decision cards when signed work cannot be placed, and change-control on series amendments so committed visits are never silently rebooked. That half is covered in [One schedule, one truth](/docs/explanation/one-schedule-one-truth).

## Related

- [One schedule, one truth](/docs/explanation/one-schedule-one-truth)
- [Scheduling jobs by the day, not the minute](/docs/concepts/scheduling-jobs-by-the-day)
- [Onboard a client in one sentence](/docs/how-to/onboard-a-client-in-one-sentence)
