How it works
A run processes exactly one watch. It is sequential, has no background work, and either ends with an alert or with a recorded reason why not.
The diagram in words: a run first replays any alert that failed to send, then collects from every source, discards content it has seen before, asks the model about what is left, checks the answer against the collected text, decides a tier, removes duplicates, delivers, and finally writes down what it learned.
Stage 0 — redeliver anything owed
Section titled “Stage 0 — redeliver anything owed”Before collecting anything, the engine checks whether a previous run produced an alert it could not deliver. If so, it replays the stored alert on the watch’s current channels — without re-collecting or re-asking the model.
This runs first on purpose: an unchanged source would otherwise end the run at “nothing new” and the owed alert would never get another chance.
Stage 1 — collect
Section titled “Stage 1 — collect”Every source with a collector is asked for candidate items. A source that throws is recorded and skipped; the run continues with the others.
The engine tracks every source that produced a given piece of content, which matters later: if two sources carry identical text, that counts as two corroborating sources, not one.
Exits here: collection-failed if every source threw (the last-run time is
deliberately not recorded, so the watch stays due). no-candidates if the
sources ran but returned nothing.
Stage 2 — keep only what is new
Section titled “Stage 2 — keep only what is new”Each item is hashed on its URL plus its normalised text and compared against what this watch has already seen. Only genuinely new content survives.
Exits here: nothing-new — the most common outcome on a healthy watch, and
the reason a quiet watch costs nothing.
Stage 3 — evaluate
Section titled “Stage 3 — evaluate”The surviving items, your condition, and a short history of what this watch has already alerted on are sent to the model. It returns a verdict: triggered or not, a confidence, a summary, and the exact quote it relies on.
Large batches are split into chunks so nothing is silently dropped, and each item’s text is windowed around your condition’s keywords rather than simply truncated at the start.
Exits here: not-triggered.
Stage 4 — validate the evidence
Section titled “Stage 4 — validate the evidence”Before the verdict is trusted, it is checked against reality:
- The quote must appear in the collected text, after normalising entities, smart punctuation and whitespace. A near-verbatim quote is accepted; a paraphrase is not.
- The link must be one Watcher fetched. A fabricated URL is repaired to the page that actually carries the quote, or dropped.
- The date must be plausible. Far-future or pre-2000 dates are discarded.
Stage 5 — decide
Section titled “Stage 5 — decide”Two things happen here. First, deduplication: an event whose identity matches one already alerted on is dropped. Then the tier: confidence, corroboration, grounding, source trust, second-opinion agreement and failover status together decide strong, weak or none. See Decision rules.
Then a second deduplication pass compares the event’s meaning against recent alerts, catching the same story reworded elsewhere.
Exits here: already-notified, below-threshold, semantic-duplicate.
Stage 6 — notify
Section titled “Stage 6 — notify”The alert is delivered on every channel the watch lists that has a notifier wired. Delivery is best-effort per channel: if one channel fails and another succeeds, the run still counts as notified and the failure is recorded.
Exits here: notify-failed — every channel failed. The formatted alert is
queued and stage 0 of the next run will replay it.
Stage 7 — persist
Section titled “Stage 7 — persist”On a successful alert the engine records: the new content hashes, the event fingerprint, the event’s embedding, and a dated one-line entry in the watch’s ledger (which becomes the “already known” context for the next evaluation).
Whatever the outcome, a run record is written — outcome, source errors, collection counts, the models consulted, and the model’s own reasoning — which is what the panel’s run history shows you.
What this means day to day
Section titled “What this means day to day”| You see | It means |
|---|---|
nothing-new most of the time |
The system is healthy and cheap |
not-triggered on new content |
The model looked and said no |
below-threshold |
Something triggered but did not clear the bar — check the run’s reasoning |
notified |
An alert went out |
collection-failed |
Every source broke — a health alert was sent too |
Full table: Run outcomes.