| name | alerts |
| description | Save recurring job searches and surface only newly-posted matches on demand. Use when the user wants a saved search / job alert, e.g. "/jobfinder:alerts save devops devops engineer Brisbane" or "/jobfinder:alerts run". |
jobfinder: alerts
Saved searches that, when run, show only jobs not seen before. $ARGUMENTS holds
the subcommand and its arguments.
Subcommands
Run uv run "${CLAUDE_PLUGIN_ROOT}/scripts/alerts.py" <subcommand>:
-
save — persist a search:
alerts.py save <name> --what "<keywords>" [--where "<AU location>"] [--salary-min <AUD>] [--max-days-old <N>]
Parse the user's phrasing into these flags. Keep the query Australian.
-
list — alerts.py list — show saved searches and when each last ran.
-
remove — alerts.py remove <name>.
-
run — alerts.py run [name] — run one saved search (or all). Returns JSON
{alerts: [{alert, new_count, total_found, new_listings:[...]}]}. Only
genuinely new listings appear; running again immediately yields none.
After a run
- Load grounding (
~/.jobfinder/profile/profile.md) if present.
- For each alert with
new_listings, score the new jobs using the same
rubric as /jobfinder:search (skills 40 / seniority 20 / location 15 /
salary 15 / recency 10, minus red-flags) and persist scores with
tracker.py score <id> <n> "<reason>".
- Present the new matches ranked per alert, highest score first. If an alert
returned nothing new, say so in one line.
- If Adzuna errored for an alert (the entry has an
error field), relay it and
suggest re-running /jobfinder:setup --check.
Cadence
There's no background scheduler — the user runs /jobfinder:alerts run when they
want fresh results (e.g. each morning). If they ask to automate it, mention they
can wire alerts.py run into their own cron / Claude Code scheduled task; that's
outside this plugin's scope for now.