# Deal Alert Worker: a price watch your agent sets up and a fixed script runs

> Tell your agent what you want and the most you will pay with delivery. It checks each site's robots.txt and terms, finds which ones answer a plain request and which need your own browser, saves a real page from each, and writes a small spec you approve by its hash. A fixed script then reads on a timer and alerts you, and only you, when an item clears your total on two reads in a row. Same listing, same price: one alert. Night finds wait for a morning batch. A broken source tells you it broke. Nothing ever buys.

- URL: https://paperchasewebb.ai/bots/marketplace/items/deal-alert-worker-price-watch-run-by-a-fixed-script/
- Type: Bot template
- Category: Vibe coding
- By: PaperChaseWebb
- Works with: Claude Code, Codex, Grok Bot, Hermes (named in the listing); A skill file for Claude Code, Codex and Hermes, an AGENTS.md snippet and a Grok Bot rules block; the engines were tested on saved pages, a local server on 127.0.0.1, a fake Cloudflare KV and a fake chrome object, not on a live store, a real Cloudflare deploy or a real browser, and the prompts were not run inside each harness
- Price: $19 USD
- Difficulty: Intermediate
- Setup time: 40 min
- Time to result: A first approved watch in under an hour; the first alert whenever a match appears
- Format: Markdown (.md) file, deal-alert-worker-price-watch-run-by-a-fixed-script.md
- Version: 1.0, updated 2026-10-28
- License: Use for your own watches and on installs you do for clients. Do not resell or republish the pack itself.

## What you end up with

Alerts worth opening: totals that include delivery cost, no repeats, nothing at 3 AM, a warning when a watch stops reading, and a purchase path that always ends with your own yes and your own click.

## What you get

- 18 sections in one .md file
- A source spike prompt: robots.txt and terms checked, each site marked server, browser or off limits, one saved page per source
- deal_run.py: reads JSON-LD, JSON and RSS on a timer with GET only, two-read confirm, totals with delivery cost, dedupe with re-arm, quiet hours with a morning batch, and a watch-broken alert
- A Cloudflare Worker and a Manifest V3 extension that share one JavaScript core, tested to send the same alerts as the Python runner
- buy-check: confirms your purchase row matches a current alert and the total has not moved; the pay click stays yours
- A skill file for Claude Code, Codex and Hermes, an AGENTS.md snippet and a Grok Bot rules block
- Owner approvals in approvals.csv tied to the spec's sha256
- deal_check.py: fifteen read-only checks, with a seeded fixture
- A labeled eval set of 10 cases to count catches, misses and false deals
- Ten prompts, a failure table, and a look at six trackers and templates with sources

## Who it is for

Anyone tired of refreshing the same listing pages, who wants alerts they can trust and no agent anywhere near a card.

## Tools needed

- Claude Code, Codex, Hermes or Grok Bot: runs the source spike once, writes the spec, and summarizes an alert read-only when you ask
- Python 3: runs the price watch on a timer, the fifteen-check checker and the eval set; standard library only
- Cloudflare Workers or a Chrome-based browser (optional): the same rules on a Worker cron with KV state, or in your own browser for listings that need your login
- You need: Claude Code, Codex, Hermes or Grok Bot
- You need: Python 3.9 or newer
- You need: A timer: cron, a systemd timer, a Cloudflare Worker cron, or the browser extension
- You need: An ntfy topic, a webhook, or a local file for alerts

Cost to run: The pack is the only purchase. The runner, checker and eval use no model tokens; the agent is used once for the spike and spec. The Worker fits Cloudflare's free tier for a personal watch; check their current limits.

## How it works

1. **Run the tests.** Copy the deal-alert-worker folder and run sh test_all.sh. Expected: selftest 19 ok, net test 15 ok, 15 findings on seeded and 0 on fixed, exit 2 on a missing folder, eval caught 9 missed 0 false alarms 0, and the Worker, extension and parity tests at 0 failures.
2. **Run the spike.** Give your agent the item, your top total and the sites. It runs SPEC-PROMPT.md read-only and returns a table of server, browser and off-limits sources with a saved page for each. Expected: A table you have read, with robots.txt and terms checked for every site.
3. **Write and approve the spec.** The agent writes watch/deal.watch.json and runs deal_check.py until 0 findings. You add a start_watch row with the spec's sha256 to approvals.csv. Expected: A spec you approved by its hash.
4. **Start the timer.** Add the cron line from schedule.md, or deploy the Worker, or load the extension. The agent leaves the loop. Expected: One line in runlog.jsonl per run, and alerts only to you.

## Sample prompt: Spike and spec (Grok Bot, Claude Code, Codex, Hermes)

```
Run the source spike in SPEC-PROMPT.md for these sites and give me the table. Stop before writing a spec.
Write watch/deal.watch.json for this item under this total delivered. Run deal_check.py until 0 findings, then show me the spec and its sha256.
```

Prompts 1 and 2 of 10. The owner adds the approval row.

## Sample prompt: Review one alert (Grok Bot, Claude Code, Codex, Hermes)

```
An alert came in. Run REVIEW-PROMPT.md read-only and give me the five-line summary.
Do not log in, add to cart, message the seller or buy.
```

Prompt 5 of 10.

## Free preview of deal-alert-worker-price-watch-run-by-a-fixed-script.md

````markdown
# Deal Alert Worker: a price watch your agent sets up and a fixed script runs

Version 1.0, 2026-10-28. By PaperChaseWebb. Works with Grok Bot, Claude Code, Codex and Hermes. A skill file, a rules block, an AGENTS.md snippet, prompts, a Python runner (standard library only), a Cloudflare Worker, a Manifest V3 browser extension that share one JavaScript core, a read-only checker and a labeled eval set. Tested as described in section 11: everything ran on Linux with Python 3.13.5 and Node 24.22.1 against saved pages, a local HTTP server on 127.0.0.1, a fake Cloudflare KV and a fake chrome object. It was not deployed to Cloudflare, not loaded in a real Chrome, not pointed at a live store, and the prompts were not run inside each harness for this release. Each of those is marked where it matters.

You want one thing at one price: a brass desk lamp under $50 delivered, a used camera body, a part that only turns up now and then. The usual ways to wait for it go wrong in the same few places. A tracker emails you about a price that was a parsing error. The price was low but the delivery cost made the total higher than before. The alert repeats every hour, or arrives at 3 AM. The tracker quietly stopped reading the page weeks ago and you never heard. And the newer agent setups add one more risk: an agent with a browser and a card on file that could decide to buy.

Deal Alert Worker splits the job. An agent does the part that needs judgment once: it checks each site's robots.txt and te
````

## Worth knowing

- The engines were tested on saved pages, a local HTTP server on 127.0.0.1, a fake Cloudflare KV and a fake chrome object. The Worker was not deployed, the extension was not loaded in a real browser, and no live store was read. Run the spike on your own sites and save their pages as fixtures before you trust a watch.
- Follow each site's robots.txt and terms. The runner refuses robots-disallowed URLs, but terms are for you and the spike to read.
- RSS parsing is in the Python runner only; the Worker and extension read JSON-LD and JSON. The prompts were not run inside each harness for this release.
- On 2026-10-28, on Linux with Python 3.13.5 and Node 24.22.1: selftest 19 of 19; the local-server test 15 of 15 (unapproved spec exits 2, robots-disallowed page never requested, GET only, one alert to the owner topic, buy-check refused without the owner's row and after the window); deal_check.py 15 findings on the seeded fixture, 0 on the fixed one, exit 2 on a missing folder; eval of 10 cases caught 9, missed 0, false alarms 0, duplicates 0, quiet-hour breaches 0; Python and JavaScript sent the same 9 alerts with the same keys; Worker test 13 of 13 and extension test 9 of 9.

## Questions

**Can it buy the item for me?** No, on purpose. There is no cart, checkout or form code, and the checker flags any buying field. If you want to buy, you add a purchase row tied to that alert, buy-check confirms the total has not moved, and you click pay yourself.

**Is it allowed to read these sites?** The spike reads robots.txt and the terms for every site before a spec is written, and the runner checks robots.txt before every read and skips disallowed URLs. Sites that need your login are read only by the extension in your own browser, the same pages you can open by hand.

**Why two reads before an alert?** One bad parse is the most common false deal. Two matching reads in a row filters it out; the eval set includes the case so you can see it.

**Do I need Cloudflare?** No. The Python runner on cron does the same job. The Worker is for people who want it running without a machine of their own, and the extension is for listings that only show to your logged-in browser.

## How to buy

$19 one time at https://paperchasewebb.ai/bots/marketplace/items/deal-alert-worker-price-watch-run-by-a-fixed-script/. Stripe checkout, then an instant download page; the download link is also in your emailed receipt.

Seller: PaperChaseWebb Inc., mgmt@paperchasewebb.com
