mrkeyoor.com_
Tue 01 Sept 16:08 UTC
AI Toolsevaluationupdated 26 Aug 2026

ai-job-search review

AI Job Search is a local Claude Code workflow for profiling a candidate, finding openings, judging fit, tailoring a CV and cover letter, and preparing for interviews. It keeps applications and outcomes in files you control, with Danish job-board tools included and a path for adding portals in other markets.

+3,847stars / 7d
Verdict

Our ai-job-search run passed all 307 measured tests in 25 seconds after a 9-second install, making it the cleanest executable result in this group. Use it if Claude Code already fits your workflow and you want careful drafts, PDF checks, and application history under your control. Avoid a public personalized fork, and expect real adaptation work outside the Danish portal set.

We ran it

Lab card: what happened when we ran ai-job-searchScreenshot of ai-job-search (github.com/MadsLorentzen/ai-job-search)
Install✓ · 9s35 packages · 37 MB
Build✓ · 1s
Tests✓ · 25s307 passed · 0 failed · 6 skipped of 307 (pytest)
Known vulns0(pip-audit)
Repo214 files~14,412 lines of source · 2.9 MB · 2 CI workflows · tests dir

Answers from our run

Does ai-job-search build from source?

Dependencies installed in 9 seconds (35 packages), and the build succeeded in 1 seconds. We cloned commit e2c311a into a clean Debian container with 3 CPUs and no project-specific setup.

Do ai-job-search's tests pass?

Yes: 307 of 307 passed when we ran the project's own test command (pytest). Some failures need services or credentials a bare container does not have.

Does ai-job-search have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use ai-job-search?

People seeking unattended mass application submission: the workflow prepares materials and expects the applicant to review them before sending.

What are the alternatives to ai-job-search?

AIHawk, Teal, Huntr. Our ai-job-search run passed all 307 measured tests in 25 seconds after a 9-second install, making it the cleanest executable result in this group.

Setup3/5Tests pass, but Claude Code, Bun, and two LaTeX engines are needed
Docs5/5Setup, privacy, portals, templates, updates, and workflow are explicit
Community5/536,168 stars with active August 2026 releases and issue work
Maturity4/5307 tests passed; live job-board behavior still needs checking

Who it’s for

Claude Code users who want a repeatable job-search process rather than isolated prompts.
Applicants comfortable reviewing AI-written claims, LaTeX source, and compiled PDFs before sending anything.
Danish job seekers who can use the included portal tools directly.
Developers willing to adapt portal skills, templates, and fit criteria for another country or profession.
Candidates who want application history, interview preparation, and outcome tracking in local files.

Who it’s NOT for

People seeking unattended mass application submission: the workflow prepares materials and expects the applicant to review them before sending.
Users unwilling to install Claude Code, Python, Bun, and a LaTeX distribution with both lualatex and xelatex.
Anyone planning to personalize a public GitHub fork: /setup writes contact details, employment history, and salary expectations into tracked files, and public forks cannot be made private.
Job seekers outside Denmark who expect local portals to work immediately: four included portal CLIs target Danish sites, so another market may require a custom skill.
Applicants who trust scraped listings without checking them: issue #331 reports nonexistent LinkedIn jobs, while issue #371 reports a fractional freshness flag silently removing the date filter.

Setup reality

Our sandbox install succeeded in 9 seconds, adding 35 packages and using 37 MB. The build passed in 1 second. Pytest finished in 25 seconds with 307 passed, 0 failed, and 6 skipped. Pip-audit found 0 known vulnerabilities.

The full workflow needs Claude Code, Python 3.10 or newer, Bun for portal tools, and LaTeX with lualatex plus xelatex. Poppler's pdftotext is optional; without it, ATS checking falls back to visual keyword review.

Use a private repository with this project configured as upstream. The default public fork route can expose the personal files created by /setup. Outside Denmark, expect to add or audit a portal skill, and inspect unfamiliar posting content because prompt-injection defenses are instructions rather than a sandbox.

The workflow covers the job search after profile setup

AI Job Search turns a repository into a working folder for one candidate. /setup builds a profile from existing documents, a pasted CV, or an interview. /scrape searches enabled portals, and /rank scores results against preferences and deal-breakers. /apply evaluates one posting, drafts tailored documents, sends them through a second-agent review, compiles the PDFs, and presents the result for human inspection.

The project goes beyond document generation. It tracks application outcomes, prepares for interview stages using the exact materials already submitted, produces a local HTML report, and can propose status updates from Gmail for approval. A Notion integration publishes a one-way view while repository files remain authoritative. The included 12 commands and several skills create a process that can be repeated, audited, and changed.

Danish portals work first; other markets need adaptation

Four bundled command-line tools target Jobbank, Jobdanmark, Jobindex, and Jobnet. LinkedIn and Freehire provide broader starting points. The profile, evaluation, drafting, and interview steps are meant to work across countries and languages, but search quality depends on the portal adapters. A developer outside Denmark may spend more time building and testing a local board integration than filling in the initial profile.

The /add-portal command investigates a site's search pattern, result structure, robots rules, and access restrictions before generating a skill. Authenticated portals are declined, and restrictive terms trigger a personal-use warning. Copied community skills deserve manual review because portal CLIs are pre-approved in Claude settings and can access career data. The README explicitly tells users to inspect network calls, dependencies, lifecycle scripts, and file access.

What happened when we ran it

Our sandbox installed commit e2c311a in 9 seconds, adding 35 packages and using 37 MB on disk. The build succeeded in 1 second. Pytest completed in 25 seconds with 307 passed, 0 failed, and 6 skipped. Pip-audit reported 0 known vulnerabilities in the installed Python environment.

The checkout contained 214 files, about 14,412 lines of source, and 2.9 MB. It had 2 CI workflow files, no Dockerfile, and a tests directory. Those results are strong for the repository logic. They do not cover a real Claude session, live portal responses, Gmail or Notion access, LaTeX packages, PDF rendering, or the accuracy of a model's fit judgment.

Our unprivileged Debian container had 3 CPUs, 8 GB of RAM, Python 3.12, and no secrets. The 9-second install understates end-user setup because the full README requires Claude Code, Bun, and a TeX distribution. pdftotext is optional, but skipping it changes the ATS check from inspecting the PDF text layer to a visual keyword review.

PDF checks catch errors that source review misses

The default CV uses lualatex, while the cover letter uses xelatex. After drafting and review, Claude compiles both, inspects the rendered pages, and adjusts layout. The target is a 2-page CV and 1-page letter, with the signature visible and no orphaned headings. A user can register another template and compilation command through /add-template.

Version 1.6.0 documents why the compiled artifact needs inspection. The release fixed bullets that disappeared because LaTeX parsed them as optional labels, percent signs that removed the rest of a line, and text extraction that mishandled non-ASCII characters on some pdftotext builds. CI now checks that expected body text survives into the PDF text layer. Human visual review is still necessary before submission.

Personal data makes repository visibility a setup decision

A normal GitHub fork of a public repository is public. /setup writes the candidate's name, contact details, employment history, and salary expectations into tracked files. The README now places that warning beside the fork command and recommends creating a private repository with this project configured as upstream. Release 1.6.0 also added a visibility check before onboarding writes personal information.

That guard should be treated as a backup, not the privacy plan. Check the repository visibility yourself, inspect git status after setup, and review ignore rules before adding CVs, application archives, interview notes, or Gmail-derived status. Removing sensitive data from a commit later may require GitHub's sensitive-data process; force-pushing alone does not remove every copy in a fork network.

Job postings remain untrusted and sometimes wrong

The workflow instructs agents not to follow commands embedded in a posting or fetch links from its body. The README also says those protections are instruction-level rather than a sandbox. On an unfamiliar site, inspect fetched content and every written file before sending an application. A fabricated skill claim or wrong employer detail can cost more than a failed command.

Open issue #331 reports occasional nonexistent or mismatched LinkedIn listings being ranked as good fits. Issue #371 shows a narrower parser flaw: --jobage 0.5 can be truncated to zero, causing the freshness filter to disappear while the command succeeds. Use integer flags, open every shortlisted posting at its canonical URL, and confirm that it still accepts applications.

Active maintenance supports a careful recommendation

GitHub recorded 36,168 stars, 6 combined issues and pull requests, and a last push on August 26, 2026. Version 1.6.0 was released on August 19 with portal-contract, document, privacy, and test fixes. Recent activity plus our 307-test pass supports using the framework as a serious personal system.

The boundaries are sensible: Gmail changes need approval, follow-ups are drafts, unsupported keywords remain gaps, and application documents are presented before sending. That restraint is a better fit for hiring than blind submission volume. The recommendation depends on the user keeping it: verify postings, compare every claim with the profile, inspect PDFs, and keep the personalized repository private.

Alternatives

ProjectWhat it isPick it when
AIHawkAn AI job-application automation project aimed at finding and applying to roles.pick this instead when browser-driven application automation matters more than a cautious drafting and review workflow.
TealA hosted job tracker with resume tools and guided search features.pick this instead when a managed interface is worth giving up a local file-based workflow.
HuntrA hosted job-search organizer with application tracking and resume assistance.pick this instead when visual pipeline tracking matters more than owning and editing the workflow code.

What people are saying

  1. [github-trending] MadsLorentzen/ai-job-search

Sources

  1. AI Job Search repository and README
  2. AI Job Search v1.6.0 release
  3. LinkedIn ghost job issue
  4. LinkedIn fractional freshness flag issue
  5. Project security guidance

More ai tools reviews

SkillSpector · robin · mjlab · MoGe · awesome-design-md · Code-as-World · the whole board →