Scheduling
Advanced booking and calendar management with AI
Girard's Scheduling Platform combines the best features of Calendly, Acuity, and Cal.com with AI-powered booking intelligence. Manage appointments, availability, and calendar complexity with ease.
Overview
The Scheduling Platform provides:
- Event Types - Custom booking pages for different meeting types
- Availability Rules - Complex availability with buffers and limits
- Calendar Sync - Google, Outlook, iCloud calendar integration
- Recurring Patterns - Daily, weekly, monthly recurring schedules
- Blackout Periods - Block specific dates and times
- Business Hours - Define working hours with exceptions
- Rate Limiting - Prevent overbooking
- AI Booking Agent - Natural language scheduling
Getting Started
Access scheduling from the dashboard:
- Scheduling Dashboard -
/scheduling - Event Types -
/scheduling/event-types - Availability -
/scheduling/availability - Appointments -
/scheduling/appointments
Event Types
Creating Event Types
- Navigate to Scheduling > Event Types
- Click New Event Type
- Configure:
- Name - "30-Minute Discovery Call"
- Duration - 15, 30, 45, 60+ minutes
- Location - Zoom, Google Meet, phone, in-person
- Description - What to expect
- Questions - Pre-meeting intake form
Event Type Settings
event_type:
name: "Strategy Session"
slug: "strategy"
duration: 60
buffer_before: 15
buffer_after: 15
min_notice: 24 # hours
max_advance: 30 # days
locations:
- type: zoom
auto_create: true
- type: phone
number: "+1-555-0123"
questions:
- label: "What's your biggest challenge?"
type: textarea
required: true
- label: "Company size"
type: select
options: ["1-10", "11-50", "51-200", "200+"]
Booking Page Customization
Customize your booking page:
- Branding - Logo, colors, custom CSS
- Messaging - Confirmation text, reminders
- Questions - Custom intake forms
- Redirects - Post-booking redirect URL
- Embed - Embed on your website
Availability Management
Basic Availability
Set your default working hours:
availability:
timezone: "America/New_York"
weekly_hours:
monday: ["09:00-12:00", "13:00-17:00"]
tuesday: ["09:00-12:00", "13:00-17:00"]
wednesday: ["09:00-12:00", "13:00-17:00"]
thursday: ["09:00-12:00", "13:00-17:00"]
friday: ["09:00-12:00", "13:00-15:00"]
saturday: null
sunday: null
Advanced Scheduling
Recurring Patterns
Define complex recurring schedules:
recurring_patterns:
- name: "Weekly Team Meeting Prep"
pattern: WEEKLY
interval: 1
daysOfWeek: [1] # Monday
timeStart: "08:00"
timeEnd: "09:00"
blockType: preparation
- name: "Monthly Board Meeting"
pattern: MONTHLY_NTH
nthWeek: 3 # Third week
dayOfWeek: 3 # Wednesday
timeStart: "14:00"
timeEnd: "16:00"
blockType: meeting
- name: "Quarterly Review"
pattern: QUARTERLY
monthOfQuarter: 3 # Last month
dayOfMonth: 15
timeStart: "10:00"
timeEnd: "12:00"
Pattern Types:
| Pattern | Description | Example |
|---|---|---|
DAILY | Every N days | Daily standup |
WEEKLY | Specific days each week | Monday meetings |
BI_WEEKLY | Every two weeks | Sprint planning |
MONTHLY | Specific day of month | Monthly review |
MONTHLY_NTH | Nth weekday of month | 2nd Tuesday |
QUARTERLY | Once per quarter | Quarterly board |
YEARLY | Annual events | Annual review |
Blackout Periods
Block specific times:
blackout_periods:
- name: "Company Retreat"
start: "2026-03-15"
end: "2026-03-18"
allDay: true
recurring: false
- name: "Focus Friday Afternoons"
start: "2026-01-01"
end: "2026-12-31"
allDay: false
timeStart: "13:00"
timeEnd: "17:00"
daysOfWeek: [5] # Fridays
recurring: true
Business Hours with Exceptions
Configure business hours with holiday exceptions:
business_hours:
timezone: "America/New_York"
default:
monday: ["09:00-17:00"]
tuesday: ["09:00-17:00"]
wednesday: ["09:00-17:00"]
thursday: ["09:00-17:00"]
friday: ["09:00-17:00"]
exceptions:
- date: "2026-07-04"
name: "Independence Day"
hours: null # Closed
- date: "2026-12-24"
name: "Christmas Eve"
hours: ["09:00-12:00"] # Half day
- date: "2026-12-31"
name: "New Year's Eve"
hours: ["09:00-14:00"]
holidays:
- US_FEDERAL # Includes all US federal holidays
Rate Limiting
Prevent overbooking:
rate_limiting:
daily_max: 8 # Max 8 meetings per day
weekly_max: 25 # Max 25 per week
monthly_max: null # No monthly limit
consecutive_max: 3 # Max 3 back-to-back
min_gap_minutes: 15 # 15 min between meetings
Schedule Layering
Combine multiple schedule rules:
layers:
- name: "Base Availability"
priority: 1
type: available
rules: weekly_hours
- name: "Recurring Blocks"
priority: 2
type: blocked
rules: recurring_patterns
- name: "Blackouts"
priority: 3
type: blocked
rules: blackout_periods
- name: "Rate Limits"
priority: 4
type: limit
rules: rate_limiting
Calendar Integration
Connecting Calendars
Sync with external calendars:
- Navigate to Settings > Calendars
- Click Connect Calendar
- Choose provider:
- Google Calendar (OAuth)
- Microsoft Outlook (OAuth)
- Apple iCloud
- CalDAV (generic)
- Authorize access
- Configure sync settings
Sync Options
calendar_sync:
provider: google
calendar_id: "primary"
sync_direction: bidirectional
conflict_detection: true
busy_status_check: true
create_events: true
update_events: true
delete_events: false
Conflict Detection
Automatically prevent double-booking:
- Check all connected calendars
- Respect "busy" status
- Buffer time consideration
- Team calendar awareness
Team Scheduling
Round Robin
Distribute bookings across team:
round_robin:
mode: "availability_first" # or "equal_distribution"
members:
- userId: "user_1"
weight: 1.0
- userId: "user_2"
weight: 1.5 # Gets 50% more bookings
- userId: "user_3"
weight: 1.0
Collective Scheduling
Find time when everyone is available:
collective:
required_attendees:
- "user_1"
- "user_2"
optional_attendees:
- "user_3"
min_available: 2 # At least 2 required must be free
AI Booking Agent
Natural Language Booking
Let AI handle scheduling conversations:
User: "Can we meet next week to discuss the proposal?"
AI: "I'd be happy to schedule that! I have availability:
- Tuesday 2pm-3pm
- Wednesday 10am-11am
- Thursday 3pm-4pm
Which works best for you?"
User: "Wednesday works"
AI: "I've booked Wednesday, January 15th at 10am for 60 minutes.
You'll receive a calendar invite shortly. See you then!"
Smart Suggestions
AI suggests optimal meeting times based on:
- Historical booking patterns
- Participant time zones
- Meeting type and duration
- Travel time (for in-person)
- Energy levels (morning vs afternoon)
Notifications & Reminders
Confirmation Emails
Automatic booking confirmations:
- Meeting details
- Calendar invite (.ics)
- Location/dial-in info
- Pre-meeting questions
- Reschedule/cancel links
Reminder Sequence
reminders:
- timing: 24h_before
channel: email
template: "reminder_24h"
- timing: 1h_before
channel: sms
template: "reminder_1h"
- timing: 10m_before
channel: email
template: "reminder_10m"
No-Show Handling
Automated follow-up for no-shows:
- Send "we missed you" email
- Offer reschedule link
- Track no-show patterns
- Adjust booking rules
Payments & Packages
Paid Bookings
Accept payments for appointments:
payment:
enabled: true
provider: stripe
amount: 15000 # $150.00
currency: USD
collect_at: booking
refund_policy: "24h"
Packages
Sell appointment packages:
package:
name: "Coaching Package"
sessions: 4
price: 50000 # $500.00
validity: 90 # days
transferable: false
API Reference
Check Availability
GET /api/v1/scheduling/availability
?eventTypeId=evt_123
&start=2026-02-01
&end=2026-02-28
&timezone=America/New_York
Response:
{
"slots": [
{
"start": "2026-02-10T09:00:00-05:00",
"end": "2026-02-10T09:30:00-05:00"
},
{
"start": "2026-02-10T09:30:00-05:00",
"end": "2026-02-10T10:00:00-05:00"
}
]
}
Create Booking
POST /api/v1/scheduling/bookings
{
"eventTypeId": "evt_123",
"start": "2026-02-10T09:00:00-05:00",
"attendee": {
"name": "John Doe",
"email": "john@example.com"
},
"responses": {
"challenge": "Scaling our team",
"company_size": "51-200"
}
}
Reschedule Booking
PATCH /api/v1/scheduling/bookings/{id}/reschedule
{
"newStart": "2026-02-12T14:00:00-05:00",
"reason": "Conflict with another meeting"
}
Next: HR & Hiring | Previous: AI Outreach