---
title: "Festival Volunteer Shift Scheduling With AI Agents | Kylon"
description: "How a festival team builds a weekend volunteer roster from Calendly sign-ups, keeps Airtable and the calendar in step and fills gaps, with the coordinator approving."
url: "https://kylon.io/use-cases/festival-volunteer-shifts"
language: "en"
---

[HOME](https://kylon.io/)\>[Use Cases](https://kylon.io/use-cases)\>Festival Volunteer Shifts: A Three-Day Station Roster That Keeps Up With Changes

Use Case7 min read

# Festival Volunteer Shifts: A Three-Day Station Roster That Keeps Up With Changes

A three-day food festival's volunteer roster is built from Calendly sign-ups, kept in Airtable and mirrored on the shift calendar in one Kylon room. Agents keep the records in step and the volunteer coordinator approves every change before volunteers hear about it.

[Get started](https://app.kylon.io/sign-up)

Kylon TeamProduct

November 6, 2026

## Three days, nine stations and sign-ups that keep changing

A weekend festival runs on volunteers. Each station, from the main gate to the recycling point to the kids tent, needs a minimum number of people for every shift from Friday afternoon to Sunday evening. Volunteers pick shifts through a Calendly link, then swap, cancel and book again, and the roster still has to show who is where at every hour.

Sign-ups live in Calendly, the roster the station leads use is in Airtable, the shift calendar that volunteers and leads see is in Google Calendar, the station map and coverage minimums are in Google Drive, and during the festival everything runs through Slack. When a volunteer reschedules, Calendly records a new booking. If the roster adds a new row and the calendar a new event, that person now counts twice, and the gap it hides is real.

## Who works in the room

People

-   Volunteer coordinator
    
    Owns the roster, approves every change and decides how gaps get filled
    
-   Station leads
    
    Run each station during the festival and report no-shows and early finishes
    
-   Festival operations manager
    
    Sets station hours and minimum coverage and approves any change to them
    

Agents

-   RyanRoster keeper
    
    Turns Calendly bookings into roster rows and shift events, keeps the two in step and lists coverage gaps by station and shift
    
    CalendlyAirtableGoogle CalendarGoogle Drive
    
-   FinVolunteer messages
    
    Drafts confirmations, reminders and requests for extra shifts, and reads station leads' updates during the festival
    
    [Gmail](https://kylon.io/integrations/gmail) [Slack](https://kylon.io/integrations/slack)
    

Everything for the festival happens in one Kylon room. Ryan is the default agent, so any question about who is on a shift reaches it. The room guidelines send anything addressed to volunteers to Fin. When Ryan finds a gap, it mentions Fin with the station, the shift and the volunteers who offered extra time, and Fin drafts the ask. Ryan reads Calendly and writes to Airtable and Google Calendar through a grant the coordinator approved for this room, and each write still waits for the coordinator's approval.

## Building the roster and keeping it true

The roster covers Friday through Sunday only, and the room guidelines say so, which leaves Thursday load-in and Monday teardown to their own crews.

```mermaid
flowchart TD
  book([Volunteers book shifts<br>through Calendly])
  build["<b>Ryan</b> turns each booking into one<br>roster row and one shift event"]
  outside([Set aside with a note])
  ok1["<b>Volunteer coordinator</b> approves<br>the rows and events"]
  cover["<b>Ryan</b> lists coverage gaps<br>by station and shift"]
  ops["<b>Operations manager</b> confirms<br>which gaps matter most"]
  ask["<b>Fin</b> drafts asks to volunteers who<br>offered extra time, in order"]
  send["<b>Coordinator</b> sends each request"]
  swap([A swap or cancellation<br>arrives from Calendly])
  match["<b>Ryan</b> matches it to the existing<br>row and event"]
  ok2["<b>Coordinator</b> approves the<br>roster and calendar together"]
  standby["<b>Ryan</b> proposes a replacement for<br>each no-show from the standby list"]
  accept["<b>Station lead</b> accepts<br>the replacement"]
  wrap["<b>Ryan</b> tallies final hours per<br>volunteer and per station"]
  sign["<b>Coordinator</b> signs off the roster"]
  book --> build
  build -->|outside window| outside
  build -->|in window| ok1
  ok1 --> cover --> ops --> ask --> send --> standby
  swap --> match --> ok2 --> standby
  standby --> accept --> wrap --> sign
  class build,cover,ask,match,standby,wrap agent
  class ok1,ops,send,ok2,accept,sign person
  class book,outside,swap event
  classDef agent fill:#FFFFFF,stroke:#DCD3C8,color:#1B1712
  classDef person fill:#EEF0E3,stroke:#6E7447,color:#1B1712
  classDef event fill:#F4ECDD,stroke:#F4ECDD,color:#564C42
```

| Stage | What happens | Who acts | Who decides |
| --- | --- | --- | --- |
| First build | Calendly bookings inside the festival window become one roster row and one shift event each | Ryan | The coordinator approves before Airtable and the calendar change |
| Coverage check | Each station and shift is compared with the minimum in the coverage plan | Ryan | The operations manager confirms which gaps matter most |
| Filling gaps | Volunteers who offered extra time are asked, in the order they offered | Fin | The coordinator sends each request |
| Swaps and cancellations | A rescheduled booking updates its existing row and event, and a canceled one comes off both | Ryan | The coordinator approves each change |
| Festival days | Station leads post no-shows in Slack, and replacements are proposed from the standby list | Ryan, then Fin | The station lead accepts the replacement |
| Wrap-up | Final hours per volunteer and per station are tallied for thank-you notes | Ryan | The coordinator signs off the roster |

Stages of one festival roster. Stations, shift times and counts in this example are illustrative.

## When the brief is one line and the weekend keeps moving

The request to build the roster is often one line in Slack. Ryan reads the scope from the coverage plan in Drive and, where the plan is silent, asks the coordinator in the thread before it writes anything. Bookings that fall outside Friday to Sunday are set aside with a note, never added or dropped without a word.

Through the week, every change arrives as a Calendly event: a swap, a cancellation, a new sign-up. Ryan matches each one to the volunteer's existing row and event before proposing anything, so a reschedule moves one record instead of creating two. After each batch the thread shows the roster and the calendar side by side, and the coordinator approves both together.

## What the checks catch

-   A Thursday or Monday booking from an old link that falls outside the festival window
-   A rescheduled volunteer who appears on both the old shift and the new one
-   A roster row with no matching calendar event, or an event with no row behind it
-   A station that looks covered because a canceled volunteer still counts

## What stays with people

-   Approving every roster and calendar change before it is written
-   Sending confirmations, reminders and requests for extra shifts, which Fin drafts
-   Deciding which station goes short when there are not enough volunteers
-   Accepting replacements at each station during the festival

## Integrations in this workflow

Kylon is not a volunteer management platform and it does not replace a sign-up tool. It works across the tools the festival team already runs and keeps the coordination in one room.

-   Airtable
    
-   Calendly
    
-   [Gmail](https://kylon.io/integrations/gmail)
-   Google Calendar
    
-   Google Drive
    
-   [Slack](https://kylon.io/integrations/slack)

-   **Calendly** is where volunteers book, reschedule and cancel their shifts
-   **Airtable** holds the roster the station leads work from
-   **Google Calendar** carries one event per shift assignment, created or updated after the coordinator approves
-   **Google Drive** keeps the station map, the coverage minimums and the volunteer guide
-   **Gmail** sends confirmations and requests through drafts the coordinator sends
-   **Slack** is where station leads post no-shows and early finishes during the festival

## Where to start

Try it on one weekend with a handful of stations. Connect Calendly and the Airtable roster, and set one rule in the room guidelines: every booking is matched to an existing volunteer row before anything new is created, and the coordinator approves the roster and the calendar together.

> “A roster is right when the base, the calendar and the people at the gate all agree.”

## Set it up with your agent

Open a new Room, add your agent and paste this prompt. It connects the tools, builds the App with you and asks for your rules one step at a time, and nothing goes out until a person approves it.

Set-up prompt

Set up our festival volunteer shift desk in this Room. Take it one step at a time and wait for my OK before you move on.

1. Connect Airtable, Calendly, Gmail, Google Calendar, Google Drive and Slack. Tell me which ones still need connecting.
2. Ask me who works this desk: the volunteer coordinator who owns the roster, the station leads who run each station and report no-shows, and the festival operations manager who sets station hours and minimum coverage. Help me invite them to this Room.
3. Build a Volunteer Roster App with Shift, Station, Filled and Status columns, one row per assignment. Match each Calendly booking to an existing volunteer row before creating anything new.
4. Check each station and shift against the coverage minimums in Google Drive. List every gap by station and shift, and ask the operations manager which gaps matter most.
5. Draft confirmations, reminders and requests for extra shifts through Gmail and Slack. The coordinator approves and sends every outgoing message. The coordinator also approves every write to Airtable and Google Calendar before it goes through.
6. Write the festival window, our matching rules and who approves which send or roster change into this Room's guideline so every booking follows the same order.
7. After the festival, offer to turn the coverage check into an Automation.

Before you start, ask me for our rules one at a time.

[Get started](https://app.kylon.io/sign-up)

Your first company harness. Where humans and agents run your business together.

[Get started](https://app.kylon.io/sign-up)

## More Use Cases

[View all](https://kylon.io/use-cases)

[

### Food Bank Distribution: Donated Lots Reach Partner Agencies Before They Expire

Donated lots are allocated to partner agencies under the distribution policy in one Kylon room, then reallocated when a truck goes down, a lot fails inspection or an agency gains space. Agents propose each move and the warehouse manager approves it.

Nonprofits & communityScheduling & dispatch

](https://kylon.io/use-cases/food-bank-distribution)[

### Grant Disbursement: Awards Decided on the Evidence and Paid Once

Grant applications are reviewed against compliance documents, budgets and declared conflicts in one Kylon room, with disbursements calculated from the award table and program officers assigned. Agents propose each step and the grants director approves every award.

Nonprofits & communityApprovals & reviewsFinance operations

](https://kylon.io/use-cases/grant-disbursement)
