Project Overview
Job Agent — a human-in-the-loop job search system.
It sources roles from 11 public job boards and the career pages of 65 companies, then runs them through a deterministic filter before any AI is involved: wrong country, wrong seniority, no sponsorship, below a pay floor, not an engineering role. Only what survives gets scored by a language model, which keeps the running cost near zero instead of paying to rank thousands of jobs that were never viable.
Everything is measured against three routes rather than one: EU roles with visa sponsorship, remote roles paying enough to qualify for a European remote-worker visa, and Gulf roles judged on what's left after cost of living rather than headline salary.
What survives becomes a daily brief. For any role I pick, it drafts a CV and cover letter tailored to that posting — but the experience bullets are copied verbatim from a verified evidence base, and a check rejects any draft claiming a technology I can't prove I've used. The PDF builder refuses to produce a file an applicant tracking system can't read.
A separate piece runs on my server and watches two inboxes, sorting mail into 27 categories, alerting me on Telegram for anything that needs a reply, and updating the application tracker so nothing is missed.
It never applies for me. Job boards prohibit automated applying and detect it, and a restricted account would be a serious setback — but the real reason is that ten tailored applications beat two hundred sprayed ones. The system's job is to make each decision cheap and well-informed, not to make it for me.
Python, no third-party dependencies. Automation runs on self-hosted n8n in Docker.
It sources roles from 11 public job boards and the career pages of 65 companies, then runs them through a deterministic filter before any AI is involved: wrong country, wrong seniority, no sponsorship, below a pay floor, not an engineering role. Only what survives gets scored by a language model, which keeps the running cost near zero instead of paying to rank thousands of jobs that were never viable.
Everything is measured against three routes rather than one: EU roles with visa sponsorship, remote roles paying enough to qualify for a European remote-worker visa, and Gulf roles judged on what's left after cost of living rather than headline salary.
What survives becomes a daily brief. For any role I pick, it drafts a CV and cover letter tailored to that posting — but the experience bullets are copied verbatim from a verified evidence base, and a check rejects any draft claiming a technology I can't prove I've used. The PDF builder refuses to produce a file an applicant tracking system can't read.
A separate piece runs on my server and watches two inboxes, sorting mail into 27 categories, alerting me on Telegram for anything that needs a reply, and updating the application tracker so nothing is missed.
It never applies for me. Job boards prohibit automated applying and detect it, and a restricted account would be a serious setback — but the real reason is that ten tailored applications beat two hundred sprayed ones. The system's job is to make each decision cheap and well-informed, not to make it for me.
Python, no third-party dependencies. Automation runs on self-hosted n8n in Docker.