A Python automation bot that handles the daily grind of reserving workspace desks. Built for a friend who was tired of manually booking seats every day.
Features
- Scheduled Booking: Automated daily reservations at optimal times
- HTTP Basic Auth Handling: Uses PyAutoGUI to handle browser authentication popups that Selenium can't access
- Smart Retry Logic: Automatic retries with exponential backoff for failed bookings
- Singapore Holiday Awareness: Skips booking on public holidays automatically
- Notification System: Desktop notifications for successful bookings and failures
- Dry Run Mode: Test the booking flow without actually making reservations
- Seat Preference: Configure preferred seat IDs with fallback options
Technical Stack
- Python 3
- Selenium WebDriver for browser automation
- PyAutoGUI for handling OS-level auth dialogs
- webdriver-manager for automatic ChromeDriver management
- APScheduler for daily scheduled runs
How It Works
- Scheduler triggers at configured time (typically 8 AM)
- Bot launches Chrome and navigates to booking system
- PyAutoGUI handles the HTTP Basic Auth popup (Selenium limitation)
- Selenium takes over for UI navigation: date selection, room search, cart management
- Completes reservation and sends desktop notification
- Logs results and handles errors gracefully
Lessons Learned
This was a quick utility project built for a friend dealing with the daily friction of manual desk reservations. The interesting technical challenge was handling HTTP Basic Auth popups - a common pain point in browser automation that Selenium can't directly address.
The solution of combining Selenium for page interactions with PyAutoGUI for OS-level dialogs is a pattern I've used before, and it worked well here. The key was adding enough wait time and retry logic to handle the timing variability of popup appearances.
What started as a "quick favor" turned into a properly structured project with scheduling, notifications, and holiday awareness - a reminder that even small tools benefit from thoughtful implementation.