| name | price-watch |
| description | Check product pages for a price drop, comparing against the lowest price seen before and alerting only on a new low. Use when the user asks to watch a price, track a deal, or tell them when something gets cheaper. |
| license | MIT |
| version | 1.0.0 |
| metadata | {"gaia":{"security_tier":"community","permissions":["network:read"],"tools_required":["fetch_page","recall","remember"],"provenance":{"source":"starter-pack"}}} |
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-watch for 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.