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.
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:
| Bridge | Module → Scheduling | What it sees |
|---|---|---|
| People → Scheduling | Approved time-off requests | Anyone on PTO is excluded from rotation through their time_off_requests.end_date |
| FSM → Scheduling | Field service work orders | Technicians dispatched to a customer site are unavailable for the duration |
| Projects → Scheduling | Focus-block tasks | Tasks marked is_focus_block block the assignee for the task's scheduled window |
| Planning → Scheduling | Focused-allocation weeks | Weeks where a person is allocated 100% to one project block availability |
| Goals → Scheduling | Goal-review windows | Quarterly 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.
Per-link toggles
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 type | Toggles to enable |
|---|---|
| Customer-facing sales call | All bridges on. PTO, FSM, focus blocks — nothing should compete. |
| Internal pairing call | PTO on, FSM off, focus blocks off. Pair through a focus block if you have to. |
| FSM-led customer visit | PTO on, FSM on (this is the point), focus blocks off, planning off. |
| Goal review with the team | PTO 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:
- They're not on PTO (People bridge)
- They're not dispatched on a work order (FSM bridge)
- They're not in a focus block (Projects bridge)
- They're not in a focused-allocation week (Planning bridge)
- They're not in a goal-review window (Goals bridge)
- They have no overlapping
scheduling_calendar_events(internal calendar) - They have no overlapping external calendar event (Google / Microsoft / etc.)
- The slot title doesn't match a free/busy rule that overrides #7
- 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:
- An OAuth app for your HRIS (or a manual import) for PTO
- An OAuth app for your FSM for dispatches
- An OAuth app for your project tool for focus blocks
- An OAuth app for your planning tool
- An OAuth app for your goals tool
- A real-time subscription to all five
- A merge layer that handles when one is down or rate-limited
- 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.
Read next
- Booking Links — per-link bridge toggles on the Availability tab
- Schedules — the layer below bridges
- Round-Robin — how PTO interacts with rotation specifically
- People Time-Off — the source data for the People bridge
- FSM Work Orders — the source data for the FSM bridge