# Jobs_Applier_AI_Agent (feder-cr/Jobs_Applier_AI_Agent)

> AIHawk is an open-source AI browser agent that browses the web undetected: it drives a stealth Firefox that anti-bot systems see as a normal person, so no captchas and no blocks. You say what you want in plain language, and it browses, clicks, types and reads the actual web to get it done.

- GitHub: https://github.com/feder-cr/Jobs_Applier_AI_Agent
- GitHub.Locker page: https://github.locker/feder-cr/Jobs_Applier_AI_Agent
- Stars: 32.3K
- Language: Python
- License: MIT
- Last push: 2026-11-05

## Questions and answers

Written by GitHub.Locker from the README and the repository; check the README below for details.

**Is this a hosted service I sign up for, or something I run myself?**

Something you run yourself: it is self-hosted and has no server of its own. There are two ways to use it — plug it into your assistant over MCP, or run the standalone web UI with the chat on the left and the live browser on the right.

**How do I get it running?**

Two paths. Over MCP, run the one-line install for your OS and then tell your assistant — Claude Code, Codex or Gemini CLI — that it exists. Standalone, run the command and open the local interface at 127.0.0.1:8765 (the default host and port), then type what you want in the chat.

**Do I need an OpenRouter key to run it?**

For the standalone web UI, yes — you bring your own OpenRouter key via --openrouter-key, the OPENROUTERAPIKEY variable or a .env file. Over MCP there is no separate key: the assistant you plugged it into uses whichever model it runs. The model defaults to z-ai/glm-5.3-flash and can be changed with --model.

**Anything I should watch out for when running it?**

A few things: exposing the interface beyond 127.0.0.1 gives you no authentication; passing the key as a flag leaves it in your shell history, so prefer the environment or a .env file; and a custom --binary must be exactly the pinned build or startup refuses. Also read the terms of the sites you automate and respect their rate limits.

**Does it run on macOS?**

The README documents Windows (PowerShell) and Linux install commands only — macOS is not mentioned. It may well work, but there is no official word on it.

**What leaves my computer when I use it?**

Three channels: the sites you visit see the browser as they would any Firefox; your model provider gets the conversation and page content under your OpenRouter key; GitHub sees ordinary HTTPS requests for the engine download, a GeoIP database when a proxy is set, and an anonymous per-launch counter. Sessions, profiles and screenshots stay local and are yours to delete.

**Is the licensing straightforward?**

For current releases, yes: MIT. The catch is that everything distributed before 2 September 2026 was released under AGPL-3.0 and stays under it, so older versions carry copyleft obligations.

**How does it stay undetected by anti-bot systems?**

It drives a stealth Firefox the way a person would — the pointer moves, keys are pressed — so anti-bot systems see a normal user rather than a script. A --seed pins a stable browser identity across runs, and when --proxy is set the timezone, locale and egress follow the proxy.

**What kinds of tasks is it good for?**

Anything that needs real web automation: a browser rather than an API, plus human judgement about what is on the page. The README's example is checking flight fares day by day on an airline site — clicking through the calendar widget instead of typing dates, reading each day's cheapest fare, and reporting when a date has no availability rather than guessing a number.

**Can I code against the engine instead of chatting with it?**

Yes. The same package ships invisibleplaywright, a Python library whose API is Playwright's, for writing code instead of prompts, and invisiblecore, which turns a seed into a fingerprint, preferences, proxy and geolocation. The MCP server lives there too: 'aihawk' with no subcommand is the server, 'aihawk ui' opens the interface.

**Will my logins and cookies survive a restart?**

Only if you keep them: pass --profile-dir with a directory to store the profile in, and logins and cookies persist between runs. Profiles and screenshots are stored locally and are yours to delete.


---

## README (checked against GitHub 2026-11-05)

Source: https://github.com/feder-cr/Jobs_Applier_AI_Agent/blob/main/README.md

<div align="center">
<picture>
  <source media="(max-width: 767px) and (prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/feder-cr/Jobs_Applier_AI_Agent/main/assets/banner-phone-dark.gif">
  <source media="(max-width: 767px)" srcset="https://raw.githubusercontent.com/feder-cr/Jobs_Applier_AI_Agent/main/assets/banner-phone-light.gif">
  <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/feder-cr/Jobs_Applier_AI_Agent/main/assets/banner-dark.gif">
  <img alt="AIHawk. An animation: 10 million job postings narrow to the 600 whose titles fit a resume, 100 read by a decision model, 25 scored from 1 to 5, then one yes, and an application submitted." src="https://raw.githubusercontent.com/feder-cr/Jobs_Applier_AI_Agent/main/assets/banner-light.gif" width="100%">
</picture>
<h3 align="center">Applying by hand takes days, and most postings do not fit you.<br>
AIHawk reads 10 million of them against your resume, and applies to the ones you pick, in a browser you can watch.</h3>

<sub>THE EARLIER AIHAWK WAS FEATURED IN</sub><br>
<a href="https://www.businessinsider.com/aihawk-applies-jobs-for-you-linkedin-risks-inaccuracies-mistakes-2024-11"><b>Business Insider</b></a> ·
<a href="https://techcrunch.com/2024/10/10/a-reporter-used-ai-to-apply-to-2843-jobs/"><b>TechCrunch</b></a> ·
<a href="https://www.semafor.com/article/09/12/2024/linkedins-have-nots-and-have-bots"><b>Semafor</b></a> ·
<a href="https://www.wired.it/article/aihawk-come-automatizzare-ricerca-lavoro/"><b>Wired</b></a> ·
<a href="https://www.theverge.com/2024/10/10/24266898/ai-is-enabling-job-seekers-to-think-like-spammers"><b>The Verge</b></a> ·
<a href="https://www.vanityfair.it/article/intelligenza-artificiale-candidature-di-lavoro"><b>Vanity Fair</b></a> ·
<a href="https://www.404media.co/i-applied-to-2-843-roles-the-rise-of-ai-powered-job-application-bots/"><b>404 Media</b></a>
</div>

<br>

![AIHawk: the jobs that fit, why each one fits, select, and send. A test search with an invented CV.](docs/demo.gif)

## How it works

A job search asks two questions, and AIHawk answers both.

**1. Which jobs fit you?** It narrows about 10.2 million postings, from 24 public sources rebuilt daily, down to the few worth reading.

- Your resume becomes a search plan, a graph of the words your jobs use, each with a weight. 600 postings fit it by their titles, found on your computer with no model.
- [Jev](https://github.com/feder-cr/jev), a decision model, reads 100 of them against your resume.
- A chat model scores the best 25 from 1 to 5, with the gaps and the reasons.

**2. Can it get through the form?** You select the jobs and say yes once.

- The model fills every required field, from what your resume says and what it implies, and attaches your CV.
- It drives [invisible-playwright-mcp](https://github.com/feder-cr/invisible_playwright_mcp), a real Firefox with a person's hands, in a window you can watch.
- AIHawk clicks send, reads the page, and keeps what it said for each job.

---

## Install

Windows, in PowerShell:

```powershell
irm https://raw.githubusercontent.com/feder-cr/Jobs_Applier_AI_Agent/main/run.ps1 | iex
```

Linux:

```bash
curl -LsSf https://raw.githubusercontent.com/feder-cr/Jobs_Applier_AI_Agent/main/run.sh | sh
```

It installs what is missing, updates AIHawk and starts it. It is the same command every time. You need a key: [get one from OrcaRouter](https://www.orcarouter.ai/ref/ref_accd17afb78fc95ac4d7).

---

## Usage

The screen asks for your key and your resume, then shows the jobs, best first.

| Key | What it does |
|---|---|
| `enter` | why this score: the gaps and the reasons |
| `space` | select a job |
| `a` | send the selected jobs, after one yes |
| `s` | every application, and what each page said |
| `m` | score the next ones |
| `e` | settings: resume, sign-in to your mail and job sites, what to look for, where, models |

---

## Where it applies

Postings are counted in the job index. One send each so far, the last of them, on Lever, made by the app as it is now. So read "confirmed" as "it can send", not "it sends reliably": [what has really been seen](docs/sites.md).

| | Sites | Postings |
|---|---|---|
| **Sent and confirmed by the page** | Greenhouse, Ashby, Lever, Breezy, Recruitee, Teamtailor | ~484k |
| **Reaches the send button, send not confirmed yet** | SmartRecruiters, Paylocity, Workable | ~782k |
| **Often stopped by a captcha** | JazzHR, BambooHR, Personio | ~305k |
| **Tried with no plugin** | Workday, iCIMS and every other site. A sign-in or a puzzle stops the form: sign in with `e`, and it can go on | ~2,103k and more |

A site is one Markdown file that explains its pages to the model, with no code: [add yours](docs/plugins.md).

## Measured

| What | Result |
|---|---|
| Ranking, graded blind on real postings | nDCG@10 of 0.683, against 0.569 before Jev; 0.4 wrong jobs in the top 10 |
| Form model, on a local course of hard forms, of 100 | DeepSeek v4.1 flash 87, GLM 83, Gemini 81 |
| A form, on real sites | 0.4 to 3.3 cents in model calls; 3 to 27 minutes |

---

## Before you send

- **It goes out in your name, unread, after one yes.** Where your resume says nothing, the model writes "Please see my attached CV", picks the closest option or a plausible number, and ticks the boxes the form requires, statements such as the right to work included. You answer for all of it. Sites have terms of their own, and some do not allow this.
- **Nothing checks what the model does in the browser.** It is told to leave the send to AIHawk, and it could send early or half filled: [SECURITY.md](SECURITY.md).
- **Your data.** Your CV, the postings and the pages, screenshots included, go to OrcaRouter and its providers, on your paid key. The rest stays in `~/.aihawk`, sign-ins included.
- **Downloads.** About 740 MB of job index on the first search, and about 268 MB of browser on the first form. Windows and Linux: the browser has no macOS build.
- **The job data is not ours.** Each posting belongs to its employer. Some sources state no licence, and one asks not to be republished as listings; the published database includes it: [every source](docs/data-sources.md).

---

## Documentation

[Configuration](docs/configuration.md) · [Sites](docs/sites.md) · [Writing a plugin](docs/plugins.md) · [Data sources](docs/data-sources.md) · [Wiki](https://github.com/feder-cr/Jobs_Applier_AI_Agent/wiki) · [Contributing](CONTRIBUTING.md) · [Security](SECURITY.md) · [Changelog](CHANGELOG.md)

## Related projects

- **[invisible-playwright-mcp](https://github.com/feder-cr/invisible_playwright_mcp)** - the browser AIHawk drives, as an MCP server for any assistant.
- **[invisible_playwright](https://github.com/feder-cr/invisible_playwright)** - Playwright on an anti-detect Firefox, the engine underneath.
- **[Jev](https://github.com/feder-cr/jev)** - yes/no decisions on a laptop CPU.
- **[invisible_dots](https://github.com/feder-cr/invisible_dots)** - the former Dots project, once in this repository.

Built with [OrcaRouter](https://www.orcarouter.ai/ref/ref_accd17afb78fc95ac4d7). Its links here and on the screen are referral links: AIHawk gets 6% of what you spend through them.

---

## License

[MIT](LICENSE) for the code. See [NOTICE](NOTICE).

## Disclaimer

This project is provided as-is, with no warranties. Applications go out in your name, and you answer for them and for following each site's terms and the laws of your jurisdiction.

