WorkestraDocs
PlatformCalendar & Scheduling

Availability Bridges

PTO, FSM dispatches, focus blocks, planning allocations, and goal-review weeks all feed the slot engine automatically — Workestra knows what your team is doing.

Calendly knows what's on your calendar. Workestra knows what your team is doing.

This is the structural moat: every workload module in Workestra — People, FSM, Projects, Planning, Goals — emits busy intervals that the scheduling slot engine consumes when computing availability. There's no integration layer, no hand-blocking calendar entries, no out-of-sync windows. The same Postgres database that owns the PTO row is the one the slot engine queries.

You won't find this in a third-party scheduler. They can't have it — they don't own the workload data.

Availability insights badge

Screenshot needed — /calendar dashboard with the AvailabilityInsightsBadge chip showing 3 PTO + 2 FSM dispatches blocking this week

What feeds the slot engine

Each bridge writes a busy-interval reader that the slot engine calls during slot computation:

BridgeModule → SchedulingWhat it sees
People → SchedulingApproved time-off requestsAnyone on PTO is excluded from rotation through their time_off_requests.end_date
FSM → SchedulingField service work ordersTechnicians dispatched to a customer site are unavailable for the duration
Projects → SchedulingFocus-block tasksTasks marked is_focus_block block the assignee for the task's scheduled window
Planning → SchedulingFocused-allocation weeksWeeks where a person is allocated 100% to one project block availability
Goals → SchedulingGoal-review windowsQuarterly goal-review weeks block availability for goal owners

All five bridges are loaded automatically when both parent modules are active in the workspace. Disabling a parent module disables the bridge.

Each bridge has a per-booking-link toggle on the Availability tab — you can opt in or out of any bridge for any link.

Common patterns:

Link typeToggles to enable
Customer-facing sales callAll bridges on. PTO, FSM, focus blocks — nothing should compete.
Internal pairing callPTO on, FSM off, focus blocks off. Pair through a focus block if you have to.
FSM-led customer visitPTO on, FSM on (this is the point), focus blocks off, planning off.
Goal review with the teamPTO on, FSM off, focus blocks off, planning off, goal-review-weeks off (avoid the meta-paradox).

Default for new links: PTO on, everything else off. Most teams don't need the depth bridges by default.

How the slot engine uses them

For each candidate slot, the engine asks every enabled bridge: "is host X busy at time T because of you?" Each bridge returns intervals (just BusyInterval[]); the engine merges them with the host's calendar busy intervals and the cancellation buffers, then decides if the slot is free.

A slot is free for a host if:

  1. They're not on PTO (People bridge)
  2. They're not dispatched on a work order (FSM bridge)
  3. They're not in a focus block (Projects bridge)
  4. They're not in a focused-allocation week (Planning bridge)
  5. They're not in a goal-review window (Goals bridge)
  6. They have no overlapping scheduling_calendar_events (internal calendar)
  7. They have no overlapping external calendar event (Google / Microsoft / etc.)
  8. The slot title doesn't match a free/busy rule that overrides #7
  9. The day isn't an observed holiday on the host's schedule

All in one query, against one database. The total cost is on the order of 50–200ms for a week's worth of slots.

The AvailabilityInsightsBadge

On /calendar, the AvailabilityInsightsBadge chip shows which bridges are currently constraining availability. Hover for a tooltip:

3 hosts on PTO this week (alice through Friday, bob through Tuesday, charlie all week) 2 FSM dispatches blocking (charlie Wed 09:00–11:00, bob Thu 14:00–17:00) 5 focus blocks (across 3 hosts, this week)

Useful as a sanity check when someone says "why is my availability so empty this week?" — the chip tells them.

What this isn't

  • Not a calendar overlay. The bridges feed the slot engine; they don't paint colored blocks on /calendar. The calendar dashboard shows your bookings and lets you correlate with PTO etc. by clicking through.
  • Not bidirectional. A booking doesn't write a focus block. A booking doesn't request PTO. Each bridge is one-way: workload → scheduling.
  • Not configurable per-bridge in finer ways. You either include the bridge or you don't. There's no "include FSM dispatches but only if they're on the same customer" filter.

Why other tools can't do this

A third-party scheduler would need:

  1. An OAuth app for your HRIS (or a manual import) for PTO
  2. An OAuth app for your FSM for dispatches
  3. An OAuth app for your project tool for focus blocks
  4. An OAuth app for your planning tool
  5. An OAuth app for your goals tool
  6. A real-time subscription to all five
  7. A merge layer that handles when one is down or rate-limited
  8. A maintenance burden for every API change in any of the five tools

The cost of building and operating this is enormous. The result is fragile. And the customer is the one paying for it — you'd see it as "Calendly Enterprise" pricing.

When all five workload tools live in the same database as scheduling, the bridge is just a SQL view. Three lines of code. No latency, no quota, no breaking changes. That's the moat.