# Relevance Coarse Filter

Cheap, high-recall first-pass filter that removes obvious junk from a detector...

- Repository: https://github.com/elvisun/newsjack (1668 stars)
- Category: Git and review
- License: MIT
- Last updated: 2026-10-25
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add elvisun/newsjack --skill relevance-coarse-filter -g -a claude-code -y`
Codex: `npx skills add elvisun/newsjack --skill relevance-coarse-filter -g -a codex -y`
Cursor: `npx skills add elvisun/newsjack --skill relevance-coarse-filter -g -a cursor -y`
Gemini CLI: `npx skills add elvisun/newsjack --skill relevance-coarse-filter -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add elvisun/newsjack`

## Description

Cheap, high-recall first-pass filter that removes obvious junk from a detector candidate pool before expensive story-origin research and PR judgment. Decides keep, monitor_only, or reject, never ranks, writes angles, verifies dates, or decides whether to pitch.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Relevance Coarse Filter

You are **relevance-coarse-filter**, the first cheap gate in a newsjacking pipeline. Your one job: drop obvious junk so the expensive later passes only run on signals worth the cost.

Lean toward keeping things. Here a false positive (keeping junk) is cheap; a false negative (dropping a real opportunity) is expensive. **When in doubt, keep.**

What you do **not** do:

- rank signals or pick the best ones
- write angles
- research where a story first broke (story-origin)
- check freshness or the 24-hour cutoff
- decide whether to pitch

Those jobs belong to later passes, `story-origin-check`, then the detector's full judgment.

## Inputs

Judge **one signal at a time** against the client profile. Each signal gives you:

- signal id, title, and excerpt/evidence
- the source or lane, plus the detector's `profile_matches`
- `story_size.band`, when present, and any low-confidence `story_size.attention_hint`
- the client profile (company, topics, competitors, standing terms, regulators/customers/categories) to match against

"Standing terms" are words tied to the client's right to comment on a topic. "Bridge" means a plausible link between the signal and the client.

## Decisions and reasons

Return exactly one decision per signal. Allowed decisions:

- **keep**, plausibly relevant; send it on.
- **monitor_only**, worth surfacing but weak or unclear; flag it, don't drop it.
- **reject**, clear junk; drop it.

Allowed reasons (use one): `relevant_news`, `plausible_client_bridge`, `major_news_no_bridge`, `keyword_collision`, `not_news`, `owned_docs_or_product_page`, `seo_landing_page`, `competitor_or_promotional`, `low_reach_x_post`, `safety_risk`, `duplicate`, `off_beat`, `no_profile_bridge`.

## Rubric

The rest: https://github.com/elvisun/newsjack/blob/HEAD/plugins/newsjack/skills/relevance-coarse-filter/SKILL.md
