Skip to content

Golf tee-time auto-booking bot

Parked: 2026-06-04 (updated same day with run-spec) Status: PARKED-AWAITING-WALKTHROUGH (Devin has the club + creds; needs to record a manual booking with chrome-devtools MCP watching before script can be built) Cost-to-build: ~2–3 hr one-time (record + script + scheduler wiring); $0/mo recurring (Windows Task Scheduler is free, chrome-devtools MCP already installed)

Run spec (locked 2026-06-04)

  • Trigger 1: Wednesday 7:00:00 AM CST → books Saturday tee time (3 days out)
  • Trigger 2: Thursday 7:00:00 AM CST → books Sunday tee time (3 days out)
  • Players per tee time: 5
  • Preferred time: earliest available
  • Latest acceptable: 12:00 noon (script aborts + alerts if nothing earlier exists)
  • Notification on confirm: screenshot of confirmation page sent to recipient(s) TBD via:
  • Preferred: SMS (email-to-MMS gateway through gmail-personal MCP — free, e.g. <number>@vtext.com Verizon / @txt.att.net AT&T / @tmomail.net T-Mobile)
  • Fallback: email with screenshot attachment via gmail-personal MCP

⚠️ Open question — 5 players

Most golf booking engines cap at 4 per tee time (industry-standard foursome). Need to confirm with Devin's club before scripting: - (a) Does the engine actually allow 5? (some private clubs do) - (b) If not: book 4 + 1 in adjacent slot, OR book two adjacent slots and split? Resolve at walkthrough — Devin manually books the "5-some" once and we observe how the engine handles it.

The idea

Auto-reserve tee times the instant the booking window opens at Devin's country club. Most private clubs open booking 7 days out at a fixed time (commonly 7:00:00 AM) and good slots disappear in seconds. A scripted Playwright login + click flow, fired at exact-second precision via Windows Task Scheduler, books the slot before humans can refresh.

Architecture

Windows Task Scheduler (fires at e.g. 06:59:55 AM, 7 days out)
  → Playwright script (via chrome-devtools MCP infrastructure)
    → Login (creds from ~/.claude/.env)
    → Navigate to booking page for target date
    → Click preferred time slot (with fallback ranking)
    → Confirm booking
  → gmail-personal MCP → email Devin success/fail + screenshot

Build steps (when revived)

  1. Walkthrough capture: Devin books one tee time manually while chrome-devtools MCP records the flow — URL transitions, form selectors, date picker behavior, time-slot click target, confirm-button selector.
  2. Identify booking engine: ForeUP / Chronogolf / GolfNow / Lightspeed / Club Caddie / custom. Each has known quirks (e.g., ForeUP uses iframes; Chronogolf has anti-bot timing checks).
  3. Build Playwright script parameterized by date offset, preferred times list, # players.
  4. Credentials in ~/.claude/.env: GOLF_CLUB_USER, GOLF_CLUB_PASS, GOLF_CLUB_URL. Never in repo.
  5. Schedule: Windows Task Scheduler (more reliable than cron on Windows for exact-second timing). Trigger at booking-window-open minus ~5 seconds.
  6. Notification: Success → email with confirmation screenshot. Failure → email with error + screenshot for debugging.
  7. Idempotency: Check before booking — if Devin already has a tee time on target date, skip (don't double-book).

Info needed from Devin at revival

  • Club name + booking URL
  • Booking engine (ask club pro shop if unclear, or visible in URL/page source)
  • Booking window rule (e.g., "members book 7 days out at 7:00 AM")
  • Preferred time slots ranked (e.g., 8:00 > 8:08 > 7:52 > 8:16)
  • players (always 4? variable?)

  • Same tee time weekly (cron-style) or ad-hoc (manual trigger)?
  • Any club-specific gotchas (e.g., guest-fee field, cart vs walking)

Risk callouts

  • Anti-bot detection: Some booking engines fingerprint headless browsers. May need stealth plugins or human-like delays.
  • 2FA / SMS verification: If club requires this on every login, scripting breaks. Mitigation: persist session cookies between runs.
  • CAPTCHA at booking confirm: Rare but possible. Would require human-in-the-loop fallback (notify Devin to finish manually).
  • TOS: Most club booking systems don't explicitly prohibit automation, but scraping aggressively could trigger account suspension. Keep it to one booking per legitimate booking window.
  • Clock drift: Windows system clock vs club server clock can differ by seconds. Worth syncing via w32tm /resync before run.

Revival trigger

  • Devin loses a desired tee time to a faster booker (the original pain point)
  • OR Devin asks to schedule the walkthrough session
  • ~/.claude/.env — global secrets file (reference_global_env_location.md)
  • chrome-devtools MCP — already installed (used for KP QA, SR landing audits)
  • gmail-personal MCP — for success/fail notifications