Job Search Agent
SkillSearchSearch, 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.
No other account needed.
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
- Criteria live in the Career profile: titles, track, primary / secondary / excluded countries, stack, min_rate / min_salary, work_mode.
- Sources that index live follow the user setup (
career action=statusshowsSource idsandOfficial 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. Usescrape-operator/scraplingfor 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. - 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. - Recommended LinkedIn option when enabled: MCP
linkedin(user session). Callsearch_jobs/get_saved_jobs/get_job_details, thencareer action=ingestorimport. Never scrape the URL. Never Easy Apply.
Workflow
career action=statusthen confirm the full profile from the local book (titles, countries, stack, pay, CV facts).career action=search(or find with a brief). Deduplicate is already in the store.- Present Perfect then Good. Skip list pages unless the user asks.
- For a closed URL the user cares about: do not
web_fetch. Ask them to paste title + description, then import. - Selected offers:
ats-analyzer→career action=prepare→cover-letter-writer. - Autonomous hunt is the Career desk loop (Studio Start loop, Tauri
#/career,navin career start,python -m navin.career.desk_cli start). Usecareer action=start/stop/schedule/tick. Do not create a chat cron that searches. Never apply. Never scrape LinkedIn. - Heartbeat (silent unless useful): the gateway already ran
career action=watch. Ifwatch.countis 0, stop. Never search, collect, start or tick from heartbeat. Log withapplication-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