| name | search |
| description | Search Australian job listings (Adzuna + Workforce Australia) and rank them against the user's profile. Use when the user wants to find jobs, e.g. "/jobfinder:search devops engineer Brisbane" or "find me remote data roles". |
jobfinder: search
Find Australian jobs and rank them against the user's grounded profile.
$ARGUMENTS is the free-text request.
Steps
-
Load grounding. If ~/.jobfinder/profile/profile.md exists, Read it into
context now. If it doesn't, tell the user to run /jobfinder:profile first —
you can still search, but ranking will be generic without it.
-
Build the query. Translate the request (plus profile defaults) into flags.
Interpret bare city names as Australian (e.g. "Sydney" → --where Sydney).
Geolock: never search another country or substitute a non-Australian
location. Then run:
uv run "${CLAUDE_PLUGIN_ROOT}/scripts/search.py" --what "<keywords>" [--where "<AU location>"] [--salary-min <AUD>] [--max-days-old <N>]
The script returns JSON: {query, new_count, total_found, listings:[...]}.
Each listing has id, title, company, location, salary_min/max
(AUD), url, source, and a description snippet. Newly-seen jobs are stored
automatically. If listings is empty, broaden the query (drop the location,
widen --max-days-old, loosen keywords) and try again.
-
Score each listing 0–100 against the profile using this rubric:
- Skills overlap — 40: how many of the user's core skills the role needs.
- Seniority fit — 20: role level vs the user's seniority.
- Location / remote fit — 15: matches preferred AU locations or remote.
- Salary — 15: listing salary vs the user's AUD expectation (unknown
salary = neutral, don't penalize hard).
- Recency — 10: more recent postings score higher.
- Red-flag penalty: subtract for hard mismatches (work rights the user
lacks, an explicit red-line, wrong field).
-
Persist the scores so the tracker and alerts can reuse them:
uv run "${CLAUDE_PLUGIN_ROOT}/scripts/tracker.py" score <id> <0-100> "<one-line reason>"
-
Present a ranked table (highest score first): score, title, company,
location, AUD salary, source, id. Add a one-line "why it fits / watch-out"
for the top handful. Be honest about weak matches — don't inflate scores.
-
Offer next actions: save a job (/jobfinder:track save <id>), tailor an
application (/jobfinder:tailor <id>), or save this as a recurring alert
(/jobfinder:alerts save <name> <query>).