Jobs_Applier_AI_Agent_AIHawk is a free, open source ai development platforms project written in Python and released under MIT. It has 32,361 GitHub stars, 4,741 forks and 3 open issues, and was last pushed 4 hours ago. On this registry it ranks #28 of 158 tracked projects in AI Development Platforms, with 5 head-to-head comparisons available.

What is Jobs_Applier_AI_Agent_AIHawk?

AIHawk is a Python terminal application that reads a resume, searches a published index of more than ten million job postings for titles that fit, scores the best matches against that resume, and then fills in application forms in a browser the user can watch — built for individual job seekers rather than recruiting teams.

What it is

AIHawk, published as Jobs_Applier_AI_Agent_AIHawk under the MIT license, is a Python application that runs in the terminal and needs Python 3.11 or newer. It reads a resume, writes a search plan from it, takes the applicant's contact details from it, and uses that plan to search a job database published as a release. It sits in the Python AI-agent and browser-automation ecosystem: form filling is carried out through invisible-playwright-mcp, and the project carries the ai-agent, browser-automation, mcp, job-search and terminal-app topics.

The problem it solves is the manual loop around job hunting — trawling boards for titles that fit, judging each posting against a resume, then retyping the same details into form after form on different applicant tracking systems. AIHawk replaces that loop with a local workflow: a one-time index download, a title-based shortlist, a 1-to-5 score per job with its gaps, and then form filling in a visible browser that stops short of submission until the user confirms.

Key capabilities

  • Reads a resume supplied as a PDF, a .docx or a text file and derives both a search plan and contact details from it; a scanned PDF has no text to read, so it must be exported with text or saved as .docx.
  • Searches a job database published as a release — 10,223,753 postings in the manifest of 2026-11-04, with postings older than 60 days left out by default — downloaded once per database at 672 MB into ~/.aihawk/data/index.
  • Shortlists the best 100 postings by title, has the Jev decision model answer six questions about each, keeps the best 25, and scores each from 1 to 5 against the resume with the gaps and reasons shown on Enter.
  • Drives a terminal table with single-key actions: space to select, a to send after one yes, s to list the jobs sent and what each page said, o to open a posting in the browser, m to score more jobs, r to give a new resume, l to open the browser for sign-in.
  • Keeps a human approval gate in the apply path: the model fills the form and names the submit button but is told not to send, and clicks that would send are refused until the user presses a and confirms.
  • Covers twelve applicant tracking systems through plugins — Ashby, BambooHR, Breezy, Greenhouse, JazzHR, Lever, Paylocity, Personio, Recruitee, SmartRecruiters, Teamtailor and Workable — plus read-only Gmail and Outlook plugins that take a code or a link from a mailbox.
  • Adds a site by writing a Markdown file in src/aihawk/plugins/ with no code required, and keeps private plugins in ~/.aihawk/plugins/; each send is recorded in applied.csv and data/proofs/.

Who uses it and how

  • Individual job seekers running aihawk resume.pdf on their own machine and working through the resulting table, approving each send one at a time rather than letting the agent submit unattended.
  • Applicants reaching across many applicant tracking systems at once, where the plugins cover the common forms and postings on sites without a plugin are still listed for applying by hand.
  • Users who want to watch and intervene: the browser is visible throughout, sign-in is done by hand through l, and whatever a form asks that the files do not answer is put to the user and remembered.
  • Contributors extending site coverage, who add a Markdown description of one site's form either to the repository or to their local plugin directory.
  • People working from a local index: after the one-time 672 MB download, a search reads the copy on the computer, while the descriptions of the jobs being judged are read from the release over the internet.

Getting started

Install with pipx install git+https://github.com/feder-cr/Jobs_Applier_AI_Agent_AIHawk, or with uv tool install followed by uv tool update-shell and a new terminal, or into a virtual environment. Then run aihawk resume.pdf; the first start asks for an OrcaRouter key, kept in ~/.aihawk/key, with ORCAROUTER_API_KEY overriding that file.

How it compares

No list of paid products is supplied for this project, and the facts name no sibling tool of the same kind, so within this registry it stands alone as a terminal-driven, MIT-licensed job application agent. The one closely related component named in the documentation is invisible-playwright-mcp, which is the browser-control layer AIHawk uses rather than an alternative to it.

When to use it — and when not to

The tool depends on an OrcaRouter key, so it is not a self-contained offline system, and the first start pulls a 672 MB index while the daily refresh workflow, jobs-database.yml, is on main and has not run yet, so index freshness is unproven. The Gmail and Outlook plugins have not been tried on a real mailbox, and the documentation warns that as a last resort the model can run a script that could send a form without asking, which is why SECURITY.md matters. Anyone wanting unattended bulk applications, or unwilling to hold an OrcaRouter account, should not pick it — the design deliberately requires one human yes per send.

project readme (upstream, from github) — read inline

AIHawk

Give it your resume, get the jobs that fit, select them and apply. Runs in your terminal, with a browser you can watch. Needs Python 3.11 or newer.

pipx install git+https://github.com/feder-cr/Jobs_Applier_AI_Agent_AIHawk

Or uv tool install git+https://github.com/feder-cr/Jobs_Applier_AI_Agent_AIHawk; uv leaves aihawk off your PATH until you run uv tool update-shell and open a new terminal. Or, in a virtual environment (on Windows, aihawk-env\Scripts\pip and aihawk-env\Scripts\aihawk):

python -m venv aihawk-env
aihawk-env/bin/pip install git+https://github.com/feder-cr/Jobs_Applier_AI_Agent_AIHawk
aihawk-env/bin/aihawk resume.pdf

The resume can be anywhere on your disk: a PDF, a .docx or a text file. A scanned PDF has no text to read; export it with text, or save it as .docx.

 AIHawk  Ada Rossi · Python Engineer, Backend Developer · Milano, Italy      [scoring 12/40]
 ┌───┬───────┬───────┬──────────┬─────────────────────────┬──────────┬────────┐
 │   │ Score │ Apply │ Company  │ Role                    │ Location │ Status │
 │ ● │ 4.8   │ auto  │ Acme     │ Senior Python Engineer  │ Milan    │        │
 │   │ 4.5   │ auto  │ Beta     │ Backend Developer       │ Remote   │ sent   │
 │   │ 4.1   │ link  │ Gamma    │ Python Developer        │ Rome     │        │
 └───┴───────┴───────┴──────────┴─────────────────────────┴──────────┴────────┘

The first time, AIHawk asks for an OrcaRouter key and keeps it in ~/.aihawk/key; after that, aihawk alone reopens your list. To change the key, edit or delete that file, or set ORCAROUTER_API_KEY, which wins over the file. If OrcaRouter refuses a key from the file, AIHawk forgets it and asks again.

The first start downloads the job index, 672 MB, once per database, into ~/.aihawk/data/index. A search reads it on your computer; the descriptions of the jobs AIHawk judges are read from the release over the internet.

Keys

Key What it does
space select a job
enter the score, the gaps and the reasons
a send the selected jobs, or the current one, after one yes
s the jobs sent, and what each page said
o open the posting in your browser
m score more jobs
r give a new resume
l open the browser to sign in; press Enter in the terminal when done
q quit (Ctrl+C quits too)

What it does

  • Reads your resume, writes a search plan from it, and takes your contact details from it.
  • Finds the postings whose titles fit the plan, in a job database published as a release: 10,223,753 postings in the manifest of 2026-11-04. Postings older than 60 days are left out by default. The daily refresh is jobs-database.yml: it is on main and has not run yet.
  • Shortlists the best 100 by title: Jev, the decision model, answers six questions about each, and the best 25 are kept.
  • Scores each shortlisted job from 1 to 5 against your resume, with its gaps.
  • Applies: writes a CV for the job and fills the form in a visible browser through invisible-playwright-mcp. What a form asks and your files do not say, it asks you, and remembers.

Sending

The model fills the form and names the submit button; it is told not to send, and clicks that would send are refused. Your a and Enter is the one yes: AIHawk clicks the control the model named. As a last resort the model can run a script, which could send a form without asking; see SECURITY.md. Each send keeps what the page said in applied.csv and data/proofs/; s lists them.

Sites

Plugins cover Ashby, BambooHR, Breezy, Greenhouse, JazzHR, Lever, Paylocity, Personio, Recruitee, SmartRecruiters, Teamtailor and Workable. Other postings are listed for applying by hand. The Gmail and Outlook plugins take a code or a link from your mailbox, read only; they have not been tried on a real mailbox yet.

A plugin is a Markdown file in src/aihawk/plugins/ that explains one site's form to the model. Add a site with a file and no code: see docs/plugins.md. Your own go in ~/.aihawk/plugins/.

Plan and models

The search plan is an editable graph in filters.plan of ~/.aihawk/aihawk.yaml; restart aihawk after editing it. Models go through OrcaRouter: model (default deepseek/deepseek-v4.1-flash) writes the CV and fills forms; quick_model (default google/gemini-3.5-flash) writes the plan; decision_model (default typesafe/jev-1.14, which is Jev) shortlists the jobs; judge_model (default deepseek/deepseek-v4.1-flash) scores them. base_url can name another gateway, which must serve OpenAI's chat API and also the decision model's /systemone call.

More: the wiki, CONTRIBUTING.md, SECURITY.md, CHANGELOG.md. The job database merges public sources, whose licences and posting links are in NOTICE; each posting belongs to its employer. The report's shape is adapted from career-ops (MIT).

MIT. The former Dots project is at feder-cr/invisible_dots.

Frequently asked questions

Is Jobs_Applier_AI_Agent_AIHawk free to use?

Jobs_Applier_AI_Agent_AIHawk is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does Jobs_Applier_AI_Agent_AIHawk do?

Give it your resume, get the jobs that fit, select them and apply. Runs in your terminal, with a browser you can watch.

What is Jobs_Applier_AI_Agent_AIHawk written in?

Jobs_Applier_AI_Agent_AIHawk is primarily written in Python. Its source is publicly available at https://github.com/feder-cr/Jobs_Applier_AI_Agent_AIHawk, and it has 32,361 GitHub stars.