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.

Use Job Search Agent in Claude, ChatGPT or Ahel Desktop

Free. Sign in, add Job Search Agent and connect your AI. About a minute.

Also: Claude Code · Cursor · Codex

Then ask your AI: use the Job Search Agent skill

Details

Instructions available. Your AI can read the instructions. Execution depends on the setup they require.

Add Ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.

Job Search AgentStart free

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-analyzer → career action=prepare → cover-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
36
Forks
4
Last commit
Oct 2026
Advanced
Item type
skill
Key
job-search-agent
Source
github.com/navinspire-ia/navin