Created
May 1, 2026 17:26
-
-
Save pejmanjohn/a83354cea074d2904f21cd285720ec07 to your computer and use it in GitHub Desktop.
OpenTable Reservation Sniper Prompt for OpenClaw Agent
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| You are helping me create an OpenTable availability watcher using OpenClaw. Make this seamless: first gather any missing inputs, then implement it end-to-end. | |
| Goal: | |
| Monitor OpenTable for a specific restaurant/date/time/party size and alert me if a table likely opens. Do not auto-book. | |
| First, collect these inputs from me. If I already provided any, do not ask again: | |
| 1. Restaurant OpenTable URL, restaurant name, or experience URL | |
| 2. Desired date | |
| 3. Desired time or acceptable time window | |
| 4. Party size | |
| 5. Regular reservation vs OpenTable Experience, if known | |
| 6. Alert destination, if different from this current chat/thread | |
| 7. Check frequency preference: | |
| - default: every 10 minutes | |
| - highly competitive: every 5 minutes | |
| - do not use less than 5 minutes unless I explicitly accept blocking/rate-limit risk | |
| If I am messaging you from a chat/thread and I do not specify an alert destination, default alerts to this current conversation/thread. Only ask for alert destination if you cannot determine a usable current destination. | |
| If any required input is missing, ask me one concise intake message with blanks to fill in. Example: | |
| “Send me: restaurant/link, date, time window, party size, regular vs Experience if known. I’ll default alerts to this chat and check every 10 min; say ‘competitive’ for 5 min.” | |
| Once inputs are available, proceed without further hand-holding unless there is a real blocker. | |
| Rules: | |
| - Do NOT auto-book. | |
| - Do NOT click final reservation/booking buttons. | |
| - Do NOT bypass login, CAPTCHA, anti-bot systems, payment, or terms protections. | |
| - Stay quiet when unavailable. | |
| - Alert only when availability likely appears or the page meaningfully changes. | |
| Implementation requirements: | |
| 1. Create a local work directory. Prefer `scratch/` if it exists; otherwise create `opentable-watcher/` in the workspace. | |
| 2. Build a Python 3 checker script that performs exactly ONE check and exits. Cron provides the loop. | |
| 3. Include a JSON config file, JSON state file, log file, and lock file. | |
| 4. Use the lock file so overlapping runs skip cleanly. | |
| 5. Close browser tabs after each check. | |
| 6. Distinguish unavailable pages from OpenTable technical-error pages. | |
| 7. The checker script must send alerts itself using OpenClaw messaging. Do not rely on cron final output, stdout, or the supervising agent to notice availability. | |
| 8. Suppress duplicate alerts using state. | |
| 9. When detecting availability, deduplicate matching reservation times. | |
| 10. Use a stable alert signature based on reservation target + status + sorted unique matching times. Do not include noisy page metadata like duplicated selects, DOM order, or repeated controls in the duplicate-suppression signature. | |
| 11. For OpenTable Experiences, derive/use `rid`, `experienceId`, `dateTime`, and `partySize` if possible. | |
| 12. For regular reservations, use browser inspection or an OpenTable endpoint, but verify the result rather than relying on brittle assumptions. | |
| 13. Add an OpenClaw-managed cron job, not launchd. | |
| 14. Cron should use an isolated session, quiet/no-deliver output, about a 120s timeout, and a clear name like `OpenTable <Restaurant> <Date/Time> Monitor`. | |
| 15. Default frequency is every 10 minutes. Use every 5 minutes only if I said the table is highly competitive. | |
| Verification: | |
| - Run the checker manually once. | |
| - Inspect the log and state file. | |
| - Add the cron. | |
| - Run the cron manually once if OpenClaw supports it. | |
| - Confirm the cron appears in cron list/run history. | |
| - Confirm browser tabs were cleaned up. | |
| Final response should include: | |
| - Files created | |
| - Cron job name and ID | |
| - Frequency | |
| - Alert destination | |
| - Whether availability was found during verification | |
| - Exact command to disable the cron after I book | |
| - Any assumptions or blockers | |
| If something fails, debug once or twice with evidence from logs/browser output. If still blocked, stop and tell me exactly what input or permission is needed. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment