Daniel Puri

I built a job-application agent that stops before Submit

openapply is a Claude Code agent that finds roles, fills the forms in my own Chrome, and waits for me to review and click Submit.

Published
Code
openapply

I built openapply because filling application forms by hand is slow, and the same fields repeat on every site. It is a set of instructions and scripts that Claude Code follows. I fill in one profile about myself, and the agent does the searching, the screening, and the typing.

It works in five steps. It reads about 350 public job boards and stores every open role on my machine. A gate keeps only roles in my cities, with my titles, under my limit on years of experience. Before it opens a tab, it reads each form through the job board's API and sorts it. Forms with essay questions come to me. Plain forms go to a fast lane. Then it opens each form in my real Chrome, fills it from my profile, and reads every field back. A wrong value blocks the form.

I use my own Chrome because the sessions, the extensions, and the job sites all treat it as a normal browser. The agent drives it through the Claude in Chrome extension.

The hard stop is the main design choice. By default the fill scripts cannot click a submit button at all. I look at each tab and press Submit myself. An application goes out in my name, so a person has to read it first. Consent and legal checkboxes are never filled. There is an experimental setting that submits forms without essay questions after a second check and my yes for the whole batch. It is off by default.

Facts come from my profile or from answers I wrote. If a fact is missing, the field stays blank and the agent flags it. It does not guess. Essay answers are my approved text with the company name swapped in. When I edit an answer in a form, the agent saves my edit as the new approved version.

What went wrong

Each bug from a real run becomes a regression test, and each repeated fill problem becomes a written rule for that job board. I do not claim it works on every site. The Ashby form pre-read is not an official API, and if it changes, every Ashby form goes to my review.

Code: openapply.

Back to what I'm working on