Slot engine

SkillAI & models

This gives your AI a reliable way to work out which booking times are open, based on schedules, busy periods, and booking limits. The calculation follows documented inputs, outputs, and rules, so the same schedule always produces the same openings. A debugging guide is included for when a result needs checking.

Available today. Use it from your connected AI after setup.

After adding it, give your AI a schedule with busy times and any booking limits, then ask it to list the available slots. If a result looks wrong, the included debugging guide shows how to check the inputs and rules.

Then ask your AI: use the Slot engine skill

What your AI can do with it

  • List open booking slots from a schedule
  • Exclude busy times from availability
  • Respect booking limits when proposing times
  • Produce the same openings for the same schedule every time
  • Trace unexpected results using the included debugging guide

What this skill tells your AI

The instructions your AI receives, as published by builderio/agent-native in packages/scheduling/docs/skills/slot-engine/SKILL.md and read by ahel’s review.

import { computeAvailableSlots } from "@agent-native/scheduling/core"

Inputs

  • Event type config (duration, buffers, minimum notice, period, limits, slot interval)
  • Schedule (timezone + weekly availability + date overrides)
  • Busy intervals (UTC, aggregated from external calendars + existing bookings)
  • Booking counts by bucket (day/week/month/year) for limit enforcement
  • Time range to compute over
  • Optional seats-per-slot + seats-taken map
  • Viewer timezone (for limit bucketing, if it differs from the schedule)

Output

  • Array of Slot { start: ISO, end: ISO, available: boolean, seatsRemaining?, hostEmail? }

Invariants

The function guarantees, in order:

  1. No slot falls in the past (now + minimumBookingNotice is the floor).
  2. No slot overlaps a busy interval (with buffers applied).
  3. No slot falls outside the schedule's available intervals for that day.
  4. No slot exceeds a booking limit.
  5. No slot falls outside the event's period (rolling/range).
  6. DST-safe: we convert to UTC using the schedule's timezone before doing any interval arithmetic.

Debugging

If a slot is unexpectedly missing:

  1. Check the schedule's weekly availability for that day-of-week in the schedule's timezone (not UTC — weekends can shift across the date line).
  2. Check date overrides for that local date (empty intervals = fully blocked).
  3. Check merged busy intervals for overlap, including the before/after buffer expansion.
  4. Check booking limits: a single existing booking can close a day.
  5. Check period caps: rolling periods restrict how far in the future slots appear.

If a slot is unexpectedly present:

  1. Check that now is being passed correctly (defaults to new Date()).
  2. Check that busy intervals from providers are in UTC.
  3. Confirm slot interval matches what you expect (default = duration).

Signals

GitHub stars
5k
Forks
440
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
slot-engine
Source
github.com/builderio/agent-native