Job Search Agent

SkillSearch

Search, filter, and rank freelance and job opportunities on authorized sources with the career tool. Use to run a structured search or a watch.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Job Search Agent skill

What this skill tells your AI

The instructions your AI receives, as published by navinspire-ia/navin in navin/skills/job-search-agent/SKILL.md and read by ahel’s review.

The live index is the Career desk (#/career) and the career tool. Do not invent a posting.

Search setup

  1. Criteria live in the Career profile: titles, track, primary / secondary / excluded countries, stack, min_rate / min_salary, work_mode.
  2. Sources that index live follow the user setup (career action=status shows Source ids and Official APIs). Search always launches web search (company career pages + public ATS boards) + scrape on open hosts + the LinkedIn official pack. Remotive, the public feeds engine (Jobicy API v2, Remote OK, Himalayas, We Work Remotely RSS, Arbeitnow, Hacker News Who is hiring; one hour cache, 16 requests max, titles filtered on the profile), published ATS slugs (Greenhouse, Lever, Ashby, Workable), JSON-LD JobPosting on careers pages and the Free-Work public listing reader (FR and UK missions with TJM, duration, remote mode and skills; rate limited, no login) run with those live families. Every row lands on the same normalized card: contracts, remote mode, experience level, start, duration, day rate and yearly salary ranges, currency of the posted amount or of the searched market. Keyed APIs (Adzuna, Jooble, USAJOBS, Job Opportunities API) are extra: only when that id is in source_ids and a key is on file (wizard secrets or env). Closed boards stay official-open or paste. Use scrape-operator / scrapling for a public listing Search missed. Never invent a scrape because a key is missing. Never point scrape or Scrapling at LinkedIn or another closed board.
  3. Sources that stay official-open without MCP: LinkedIn tabs, Bayt, Welcome to the Jungle, Apec, Indeed, Malt. User opens the tab, copies, career action=import.
  4. Recommended LinkedIn option when enabled: MCP linkedin (user session). Call search_jobs / get_saved_jobs / get_job_details, then career action=ingest or import. Never scrape the URL. Never Easy Apply.

Workflow

  1. career action=status then confirm the full profile from the local book (titles, countries, stack, pay, CV facts).
  2. career action=search (or find with a brief). Deduplicate is already in the store.
  3. Present Perfect then Good. Skip list pages unless the user asks.
  4. For a closed URL the user cares about: do not web_fetch. Ask them to paste title + description, then import.
  5. Selected offers: ats-analyzercareer action=preparecover-letter-writer.
  6. Autonomous hunt is the Career desk loop (Studio Start loop, Tauri #/career, navin career start, python -m navin.career.desk_cli start). Use career action=start / stop / schedule / tick. Do not create a chat cron that searches. Never apply. Never scrape LinkedIn.
  7. Heartbeat (silent unless useful): the gateway already ran career action=watch. If watch.count is 0, stop. Never search, collect, start or tick from heartbeat. Log with application-tracker.

Rules

  • Never scrape LinkedIn. Never Easy Apply. Never fetch a closed job URL.
  • Freshness: flag postings older than 30 days when the date is known.
  • Scam signals: no company, pay-to-apply, generic gmail only.
  • Human submits. Preparation is allowed.

Signals

GitHub stars
22
Forks
4
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
job-search-agent
Source
github.com/navinspire-ia/navin