jev-job-search skill
A Claude Code command set that finds jobs, fills application forms in Chrome and sends only the ones you approve.
- 357 ★ on the repository
- Last commit
- MIT
Broad access
Why this level
- The tool drives a browser, fills forms in your name and sends applications with your resume and personal data.
- The `/daily` mode sends applications unattended within a policy you set.
Install
- Works in
Manual install
git clone https://github.com/qbeka/jev-job-search
cd jev-job-search
npm installThe README quick start. Then open the agent in the folder and type `/setup`.
Access and checks
How we reviewBroad accessThe tool can change data, run commands or handle secrets.
- The tool drives a browser, fills forms in your name and sends applications with your resume and personal data.
- The `/daily` mode sends applications unattended within a policy you set.
This is third-party code. Review the repository files before installing.
What it does
jev-job-search runs a job search for students and new graduates applying to software roles in Canada, the United States or remotely. You work with it through a coding agent: Claude Code by default, while Codex picks up the same rules through `AGENTS.md`. The `/discover` command reads public job lists and boards and ranks what fits. `/apply` fills each form in its own Chrome window, checks every answer on the page and sends the approved ones. `/report` opens a local dashboard with everything sent and everything waiting for you. Decisions with a fixed answer set come from the JEV model through OpenRouter, a writer model composes the sentences and the code does the rest. Values come from your profile, and letters and resumes are checked for invented numbers and names. A signature, an NDA, a robot check and an emailed code are left to the human.
Who it is for. Students and new graduates sending many applications for software roles who want to hand the form-filling routine to an agent.
Good fit when
- Open roles must be reviewed and ranked against the profile.
- A hundred applications on Ashby, Lever, Workable and other forms have to be filled in one go.
- A job needs a resume and a cover letter tailored to the posting.
- A rehearsal with `/apply --dry` will show how forms get filled without sending.
Not a fit when
- The search is outside software, or outside Canada, the United States and remote work.
- A robot check or a signature must be done for you, and the tool leaves them to you.
- There is no OpenRouter key with a small balance.
Example request
/apply https://jobs.ashbyhq.com/company/job-id — fill the form from my profile and show the answers before sending.Limitations
The project is in beta: forms on unfamiliar boards may stop a run, and the tool says so. Node 22 or newer, Chrome and an OpenRouter key with a few dollars are needed. The `/accounts` command for Workday and `/inbox` are marked in progress. Costs are measured at 1 to 1.5 cents per 10 forms for JEV, while the writer uses your subscription or key. The author has not yet done a full run on Linux or Windows. Open-question answers are written by a model, so read the wording during a `/apply --dry` rehearsal. The daily mode runs only within the policy from `data/policy.example.json`.
How to disable. Delete the cloned folder. Profile data lives in `data/`, `documents/`, `applications/` and `.env`, so wipe them separately. A daily run is removed with `npx jev schedule remove`.
FAQ
How do I start with jev-job-search?
Clone the repository, run `npm install`, open the agent in the folder and type `/setup`. Setup takes about 20 minutes and ends with one filled application waiting for your approval.
Does the tool send applications on its own?
Only with your approval. Every answer is read back from the page before sending, and a duplicate send is ruled out.
What does the tool leave to the human?
A signature, an NDA, a robot check, an interview slot choice and a code the site emails you. Those forms go to `applications/manual.csv` with the reason.
How much does it cost?
JEV costs 1 to 1.5 cents per 10 forms through your OpenRouter key. The writer uses your Claude Code or Codex subscription at no extra charge. There is no paid tier.
Where is my data stored?
In `data/`, `documents/`, `applications/` and `.env`, all git-ignored. Passwords live in the system secret store and are never shown to a model.
Discussion
No questions or reviews yet.
Related
SkillsSkill and CLI for job applications: fills Greenhouse, Ashby and Lever forms and logs only confirmed submissions
An agent on your Claude or Codex subscription finds jobs, tailors resumes and applies, with every status shown on a web dashboard.
A Claude Code skill that collects BOSS Zhipin vacancies, matches them against a resume and can apply to the best ones.
Skill that hands bulk pick-one, yes-or-no and scoring questions to the Jev model while Claude reads only the uncertain items.
A Codex plugin that speeds up Computer Use: short click and fill loops in the browser and macOS apps, with verification.
Full task-lifecycle skills for Yandex Tracker
yt-bp-claud-code-skills
Seven Claude Code skills that carry a Yandex Tracker issue from plan to merge: estimation, work, review, deploy, tests, merge request
Comparison with similar tools
Cards that share the main search query, and how they differ.
| Tool | Official | Repository stars | Main difference |
|---|---|---|---|
| jev-job-search (this card) | no | 357 | |
| JobPilot | no | 113 | handles search and applying as a plugin; jev-job-search verifies each answer by reading it back from the page and splits decisions and text between two models |
| JobAppAgent | no | 175 | a skill for applying; this one adds a profile, a queue, a report dashboard and a daily mode |
README in short
The author uses the project for their own job search. The repository holds skills in `.claude/skills`, rules for other agents in `AGENTS.md`, the `jev` CLI and docs on safety and cost. It is not affiliated with Anthropic, OpenAI or any job board.
README badge
Original SKILL.md
--- name: apply description: Apply to the queued jobs. Use when the user says /apply, "start applying", "run the applier", or asks to submit applications from the queue. Fills each form in the runner's own Chrome window with JEV, page by page, hands what is left to Claude, verifies, and submits only forms that are ready. model: claude-sonnet-5-5 effort: high --- # /apply: the application loop The CLI does the whole loop. JEV maps every field, the runner fills the form in its own Chrome window, a headless Claude Code call (Sonnet 5.5, high effort) answers what JEV left open, a form with several pages is walked with its own Next button, and every value is read back from the page before anything is sent. Your job is to run it, read what it reports, and tell the user what was left for them. Run every command from the repo root with `npx jev <command>`. ## One posting the user found themselves `apply <link> --submit` takes a Greenhouse, Lever or Ashby posting link in place of an id: the posting is read from the board, rated, queued at the top and filled like any other. For a link on another board, tell the user the tool reads those three directly and that `discover` picks up the rest. ## Before the loop 1. `doctor`. If it names something missing, fix that first. A missing profile means `/setup`. 2. `status`. If the queue is empty or older than today, run `/discover` first. 3. Ask the user how many to send and whether to submit, unless they already said. Submitting is never the default.