Volunteer Voice Booking
SkillProductivityBook a real appointment for a volunteer who requested a callback. Calls the volunteer, runs a short qualification interview, captures a preferred time slot, and writes the booking to a per-type calendar with a meeting link, behind a human approval gate.
Available today. Use it from your connected AI after setup.
No other account needed.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use the Volunteer Voice Booking skill
What this skill tells your AI
The instructions your AI receives, as published by calle-ai/awesome-phone-call-agents in skills/volunteer-voice-booking/SKILL.md and read by ahel’s review.
Use this skill when a nonprofit, community host, or volunteer coordinator wants to turn a callback request into one scheduled appointment, reached over the phone rather than through a web form.
volunteer-voice-booking turns one callback request into at most one call, one structured
result, and at most one calendar booking. It is outbound-first: the volunteer leaves a number
on a "Book a call" form, and the agent calls back to run the interview and book the slot. It does not
answer an inbound hotline, run a call campaign, or manage recurring schedules. Recurrence belongs to
the host scheduler.
The workflow is deliberately narrow: confirm the volunteer, ask the qualification questions, offer only pre-computed free slots, capture consent, and hand the booking to a human approval gate.
When To Use
Use this skill for:
- calling back a volunteer who submitted a "Book a call" or callback request
- running a short qualification interview over the phone
- confirming a preferred 30-minute slot from a set of real, pre-computed free slots
- writing the result to a calendar as a real event with a meeting link and confirmation email
- keeping every booking behind a human "Approve & call" gate
When Not To Use
Do not use this skill to:
- call people who did not request a callback or otherwise ask to be contacted
- answer an inbound hotline (that requires a dispatcher and result webhook, not a callback)
- collect payment, donations, or billing details
- deliver medical, legal, financial, or emergency instructions
- invent availability that the scheduler did not provide
- book a slot without a human sign-off, or re-call someone who declined
Required Inputs
request_id: stable local request identifiervolunteer_name: name as provided on the formto_phone_e164: volunteer phone number in E.164 formatorganization_name: organization to disclose on the callbooking_purpose: the calendar bucket, such asonsite,online, orpartnershipslot_duration_minutes: expected appointment duration (for example, 30)free_slots: list of pre-computed bookable windows, already checked against existing bookingsqualification_questions: the short screening questions to asktimezone: IANA timezone used to present the slots
Optional inputs:
volunteer_emaillanguageregionvoicemail_allowedvoicemail_message
Preflight
Before planning a call:
- Confirm the volunteer explicitly requested this callback.
- Confirm the phone number is E.164 and came from the volunteer's own form submission.
- Confirm
free_slotsare real, computed from live availability, and overlap-checked. - Confirm the qualification questions are approved and limited to booking intent.
- Prepare a dry-run preview before any live CALL-E action.
CALL-E Goal Template
Use this as the CALL-E --goal body after filling the inputs:
You are an AI phone assistant calling on behalf of {organization_name}. Disclose that immediately
and say this is the callback the volunteer requested through the booking form.
Purpose: help {volunteer_name} book a {slot_duration_minutes}-minute {booking_purpose} appointment.
Ask the qualification questions, confirm a preferred time, and capture a booking decision. Do not
collect payment, discuss pricing, or make medical, legal, or financial commitments.
If the configured CALL-E workflow records or transcribes calls, disclose that before asking
questions and say the transcript is used only to create the booking.
Qualification questions:
{qualification_questions}
Free slots (the only bookable times, in timezone {timezone}):
{free_slots}
Ask:
1. Confirm the volunteer's full name.
2. Walk through the qualification questions.
3. Which of the free slots works best?
4. Confirm the timezone to use.
5. Does the volunteer consent to receive a calendar invite and confirmation email for this slot?
If the volunteer declines, is uncertain, or asks a question outside booking, thank them and mark the
result for human review. Do not invent availability; only offer the provided free slots.
Return a structured result with disposition, volunteer_name, booking_purpose, selected_slot,
consent_to_book, evidence, and needs_human_review. Do not infer consent from silence.
Structured Result
{
"disposition": "booked | declined | voicemail | no_answer | wrong_number | needs_human_review",
"request_id": "string",
"volunteer_name": "string",
"booking_purpose": "onsite | online | partnership | other",
"selected_slot": {
"start": "string",
"timezone": "string"
},
"consent_to_book": "boolean; true only when the volunteer explicitly consents",
"followup_preference": "phone | email | none",
"voicemail_left": false,
"needs_human_review": true,
"evidence": [
{
"claim": "string",
"transcript_span": "string"
}
],
"do_not_rely_on": [
"string"
],
"notes": "string"
}
Dry-Run Preview
Run a local, no-call preview before any live CALL-E action:
node scripts/preview-volunteer-booking.mjs assets/sample-volunteer-request.json
The preview prints a masked phone number, a redacted CALL-E planning command, the computed free slots, and the structured result schema. It does not place a call and does not contact CALL-E.
Live Planning
Only after explicit authorization and CALL-E authentication, copy the generated goal into a CALL-E planning command:
calle call plan --to-phone <E164_PHONE> --goal "<reviewed goal text>" --timezone Asia/Bangkok --language English
Planning is not execution. Do not run calle call start or calle call run unless the user
separately confirms the provider's plan details and confirmation token.
Human Gate
A completed call result is not yet a booking. A human reviewer must approve the result before the slot is written to the calendar. In the reference implementation this is a host "Approve & call" action; nothing is dispatched automatically.
Cancellation And Idempotency
Derive an idempotency key from request_id, volunteer, purpose, and selected slot. If the volunteer
cancels, mark the request stopped and do not retry. If a call outcome is ambiguous, route to human
review rather than calling again automatically.
Safety Notes
Read references/safety.md before using live planning, and review references/examples.md for safe
and unsafe examples.
Signals
- GitHub stars
- 104
- Forks
- 527
- Last commit
- Sep 2026
Advanced
- Item type
- skill
- Key
volunteer-voice-booking- Source
- github.com/calle-ai/awesome-phone-call-agents