booking-engineBooking Engine
Complete appointment scheduling system. Define availability windows, allow clients to book appointments online, send automatic confirmations and reminders, sync with calendar applications, and manage cancellations and rescheduling.
Key Features
- •Customizable availability calendars
- •Online booking with time slot selection
- •Automatic email confirmations
- •Calendar sync (Google, Outlook)
- •Buffer time and blackout date settings
Common Use Cases
- →Schedule client consultations
- →Book service appointments
- →Manage team meeting rooms
- →Coordinate group sessions
Custom Workflow Integration
This skill can be customized for your specific workflow as part of an SMF Works services engagement. Whether you need custom automation rules, integrations with your existing tools, or specialized configurations for your team, we can tailor this skill to fit your exact requirements.
Explore ServicesInstallation
# Install the skill (via TUI or CLI)
smfw install booking-engine
# Get help
smfw run booking-engine --help
💡 Tip: Install via the OpenClaw TUI skill manager for an interactive experience, or use the CLI command above.
Setup Guide
Booking Engine — Setup Guide
Estimated setup time: 5 minutes
Difficulty: Easy
Tier: Pro — requires SMF Works Pro subscription ($19.99/mo)
What You'll Need
| Requirement | Details | Cost |
|---|---|---|
| SMF Works Pro subscription | smfworks.com/subscribe | $19.99/mo |
| Python 3.8+ | Built into macOS 12+, available on Linux | Free |
| OpenClaw | Installed and authenticated | Free |
| smfworks-skills repository | Cloned via git | Included |
| Web browser | For accessing the booking form | Free |
Step 1 — Subscribe and Authenticate
openclaw auth status
If not subscribed: smfworks.com/subscribe
Step 2 — Get the Repository
git clone https://github.com/smfworks/smfworks-skills ~/smfworks-skills
Step 3 — Navigate and Verify
cd ~/smfworks-skills/skills/booking-engine
python3 main.py help
Verify Your Setup
Step 1 — Create a booking page:
python3 main.py create
Follow the prompts (enter a name, duration, etc.).
Note the BOOK-ID in the output (e.g., BOOK-A1B2C3).
Step 2 — Add some availability:
python3 main.py availability BOOK-A1B2C3 --add monday:09:00-17:00
python3 main.py availability BOOK-A1B2C3 --add tuesday:09:00-17:00
Step 3 — Start the server:
python3 main.py serve BOOK-A1B2C3 --port 8080
Step 4 — Open in browser:
Go to http://localhost:8080/BOOK-A1B2C3
You should see a booking page with a calendar showing available Monday and Tuesday slots.
Step 5 — Test a booking (optional):
Select a time slot, enter a name and email, submit.
Step 6 — Stop the server (Ctrl+C) and verify:
python3 main.py appointments BOOK-A1B2C3
Your test appointment should appear.
Availability Format
Availability is added per-day:
python3 main.py availability BOOK-ID --add WEEKDAY:START-END
| Day | Format |
|---|---|
| Monday | monday:09:00-17:00 |
| Tuesday | tuesday:10:00-15:00 |
| Wednesday | wednesday:09:00-12:00 |
| Thursday | thursday:14:00-18:00 |
| Friday | friday:09:00-16:00 |
Use 24-hour format for times.
Troubleshooting
Error: SMF Works Pro subscription required — Subscribe at smfworks.com/subscribe.
No time slots on booking page — Add availability first with availability --add.
Address already in use — Use a different port: --port 8090.
Next Steps
Setup complete. See HOWTO.md for walkthroughs on creating booking pages, managing availability, and handling appointments.
How-To Guide
Booking Engine — How-To Guide
Prerequisites: SMF Works Pro subscription active. Setup complete (see SETUP.md).
Table of Contents
- How to Set Up a Booking Page
- How to Configure Your Availability
- How to Serve Your Booking Page
- How to View and Manage Appointments
- How to Cancel an Appointment
- Automating with Cron
- Combining with Other Skills
- Troubleshooting Common Issues
- Tips & Best Practices
1. How to Set Up a Booking Page
What this does: Creates a booking page with a name, service description, and duration.
Steps
Step 1 — Navigate to the skill.
cd ~/smfworks-skills/skills/booking-engine
Step 2 — Create a booking page.
python3 main.py create
Interactive prompts:
Booking page name: 30-Minute Consultation
Service description: A focused 30-minute call to discuss your project
Appointment duration (minutes) [30]: 30
Timezone [UTC]: America/New_York
Daily booking limit [10]: 5
✅ Booking page created: BOOK-A1B2C3
Name: 30-Minute Consultation
URL: http://localhost:8080/BOOK-A1B2C3
Step 3 — Note your BOOK-ID.
You'll use this ID for all subsequent commands. Run python3 main.py list at any time to see your IDs.
Result: Booking page created. Next step: set availability.
2. How to Configure Your Availability
What this does: Sets which days and times you're available for bookings.
Steps
Step 1 — Add availability for each day you're available.
python3 main.py availability BOOK-A1B2C3 --add monday:09:00-17:00
python3 main.py availability BOOK-A1B2C3 --add tuesday:09:00-17:00
python3 main.py availability BOOK-A1B2C3 --add wednesday:13:00-17:00
python3 main.py availability BOOK-A1B2C3 --add thursday:09:00-12:00
Each command outputs:
✅ Availability added: monday 09:00–17:00
Step 2 — Verify your availability.
python3 main.py availability BOOK-A1B2C3
Output:
📅 Availability: 30-Minute Consultation
Monday: 09:00 – 17:00
Tuesday: 09:00 – 17:00
Wednesday: 13:00 – 17:00
Thursday: 09:00 – 12:00
Result: Clients will see these days and times as available on the booking form.
3. How to Serve Your Booking Page
What this does: Starts a local HTTP server that shows the booking form and accepts bookings.
Steps
Step 1 — Start the server.
python3 main.py serve BOOK-A1B2C3 --port 8080
Output:
🌐 Booking Server Started
Page: 30-Minute Consultation (BOOK-A1B2C3)
URL: http://localhost:8080/BOOK-A1B2C3
Press Ctrl+C to stop
Step 2 — Open the booking page.
Go to http://localhost:8080/BOOK-A1B2C3 in your browser.
The page shows:
- Your service name and description
- A calendar with available time slots
- Name and email fields
Step 3 — Share the URL with clients.
For clients on your LAN, share your machine's local IP:
# Find your local IP:
ip addr | grep "inet 192"
# Share: http://192.168.1.100:8080/BOOK-A1B2C3
For local demos, share your screen and let clients select a time slot while on a call.
Step 4 — Monitor incoming bookings.
The terminal shows each request:
[10:15:22] GET /BOOK-A1B2C3 200 — booking page served
[10:15:45] POST /BOOK-A1B2C3/book 200 — booked: 2024-03-18 10:00 — Alice Smith
Step 5 — Stop the server when done.
Press Ctrl+C.
Result: Your booking page is live and accepting appointments.
4. How to View and Manage Appointments
When to use it: Before starting your day or week to see who you have calls with.
python3 main.py appointments BOOK-A1B2C3
Output:
📅 Appointments: 30-Minute Consultation
Upcoming:
1. APPT-20240318-A1B — 2024-03-18 10:00 — Alice Smith — alice@example.com
2. APPT-20240319-B2C — 2024-03-19 14:00 — Bob Jones — bob@techco.io
3. APPT-20240321-C3D — 2024-03-21 09:30 — Carol White — carol@startup.io
Past:
4. APPT-20240315-D4E — 2024-03-15 11:00 — Dan Morrow — dan@co.io — Completed
Use the client email to reach out with a confirmation or calendar invite.
5. How to Cancel an Appointment
When to use it: A client needs to reschedule, or you need to clear a slot.
python3 main.py cancel APPT-20240318-A1B
Output:
✅ Appointment cancelled: APPT-20240318-A1B
Note: Consider notifying the client manually.
After cancelling, notify the client using the email address from appointments.
6. Automating with Cron
Example: Daily morning appointment reminder
0 8 * * * python3 /home/yourname/smfworks-skills/skills/booking-engine/main.py appointments BOOK-A1B2C3 >> /home/yourname/logs/appointments.log 2>&1
7. Combining with Other Skills
Booking Engine + Task Manager: After each appointment, create a follow-up task:
python3 ~/smfworks-skills/skills/task-manager/main.py task add "Follow up with Alice Smith" --project client-work --priority high --due 2024-03-20
Booking Engine + Coffee Briefing: See your calendar events in your morning briefing (Coffee Briefing reads Google Calendar, Booking Engine manages its own storage — for manual cross-referencing).
8. Troubleshooting Common Issues
No time slots showing on the booking form
Fix: Add availability for at least one day: python3 main.py availability BOOK-ID --add monday:09:00-17:00
Address already in use: port 8080
Fix: Use a different port: --port 9090. Or kill the occupying process: lsof -ti :8080 | xargs kill
Client gets "slot unavailable" error
Fix: The slot was already booked or the daily limit was reached. Check appointments and daily limit settings.
Booking doesn't appear in appointments list
Fix: Ensure the server was running when the client booked. Submissions are only saved while the server is active.
9. Tips & Best Practices
Set a realistic daily limit. If your limit is 10 appointments per day but you only have 4 hours of availability with 30-minute slots, the effective limit is 8. Set the limit slightly higher than your actual slot count.
Keep the server running only during booking windows. Don't leave the server running indefinitely — stop it when you're not accepting new bookings to prevent unexpected appointments.
Always contact clients to confirm. The system doesn't send confirmation emails. After each booking, reach out to the client using their email address to confirm and send calendar details.
Use separate booking pages for different service types. Create one for "30-min intro call" and another for "60-min strategy session" — each with its own availability and duration settings.
Review appointments each morning. Run appointments BOOK-ID daily so you're never surprised by a booking you forgot about.
