Price Watch
A fork of source-watch where the "item" is a product and "interesting" means
cheaper than it has ever been. It shows the shape worth copying: memory holds a
running extreme, not just a list of things already seen.
Configure
- Products — a list of product URLs the user cares about.
- Memory key —
price:<product-slug>, one per product. - Floor (optional) — alert only below this price regardless of history.
Procedure
For each product URL:
- Recall the history.
recall(query="price:<product-slug>", limit=20)and take the lowest price previously recorded. - Fetch the page.
fetch_page(url). - Extract the current price. Pull the number and its currency. Watch for the traps: a struck-through list price next to the real one, a subscription price next to the one-time price, and a per-unit price on a multipack. If you cannot find a price with confidence, say so — do not guess, and do not record a guessed number, because a wrong low poisons every future comparison.
- Compare. Alert when the current price is below the recorded low (or below the configured floor). Otherwise report the current price and the delta in one line.
- Record the observation.
remember(fact="price:<product-slug>: <amount> <currency> on <YYYY-MM-DD> — <url>", category="fact"). Record every observation, not only the lows, so the history is a real series.
Report format
— now , previously (). Down .
Honest limits
- Runs on demand, not on a schedule — the scheduler cannot run skills yet
(see
source-watchfor the detail). - Many retailers vary price by region, login state, or bot detection. The price a fetched page shows may not be the price the user is offered. Say which page you read.
- Needs memory enabled for the history to survive between runs.
Fork this
Swap "lowest price" for any running extreme — highest rating, largest discount, shortest lead time — and the same three steps (recall the extreme, extract the current value, alert on a new record) carry over unchanged.


