USE CASES
The competitor page, read for you
- Persona
- Jess, founder, doing their own marketing.
- Scene
- A competitor quietly rewrites their pricing page. Jess sees it three weeks later in a prospect's email.
The old loop
A tab of competitor pages, checked “when there’s time”. A change-detection tool that alerts on every rotated banner.
The new loop
The page change watcher reads the page’s headings every hour. If nothing changed, it’s done: no model call. If something did, a model reads the old and new, decides whether the change is meaningful, and writes one sentence. It only sends if it’s meaningful and confident. The first few sends waited for Jess’s approval.
The one capability that matters
Gated reasoning. The model is called only on a change, answers into a schema (is_meaningful, summary, confidence), and is capped at five cents a day.
The synth
# Most ticks are a free diff; the LLM only thinks when the
# page actually changed. Swap the URL/selector for any page you care about.
blueprint:
id: page-change-watcher
title: Page change watcher
description: >-
Watches a web page and tells you when it meaningfully changes. Most checks
are free — it only reasons when something on the page is different.
Ships pointed at the Anthropic newsroom; swap in any page you care about.
config:
synth:
name: Page watcher
goal: Tell me when the page I'm watching meaningfully changes.
schedule_seconds: 3600
requires_credentials:
- WEBHOOK_URL
sources:
- id: page
primitive: dom_scrape
config:
url: https://www.anthropic.com/news
selectors:
headlines: "h1, h2, h3"
fast_path:
primitive: fast_path_diff
inputs:
current: $sources.page.headlines
previous: $state.last_headlines
reasoning:
primitive: llm_reason
triggered_by: fast_path
model_tier: standard
budget_usd_per_day: 0.05
output_schema:
is_meaningful: bool
summary: string
confidence: float
actions:
- if: "$reasoning.is_meaningful AND $reasoning.confidence > 0.6"
primitive: notify_webhook
config:
url: $secrets.WEBHOOK_URL
template: "[Page watcher] {summary}"
- always: true
primitive: write_state
config:
last_headlines: $sources.page.headlines
checked_at: $tick.started_at What it costs
Cost: $0 on quiet hours; a ceiling of $0.05 a day.