Automating Job Applications
Landing a software engineering role in 2026 feels less like a career move and more like a high-stakes numbers game. To stay competitive, candidates are often forced to spray out hundreds of applications just to get a single bite.
You don’t have to look far to see the data. On Reddit, users like django_slice have shared their grueling journeys—in one case, applying to 163 positions and facing 157 rejections.
The Friction of the “Direct Apply” While recruiters often suggest applying directly through company websites to stand out, doing so is a double-edged sword. Unlike the “Easy Apply” features on LinkedIn or Indeed, corporate portals frequently demand extensive, manual data entry. Between re-typing your resume into clunky forms and answering bespoke questionnaires, a single application can easily swallow over an hour of your time.
Why Automation is No Longer Optional Facing a market that demands high volume but rewards manual effort, I hit a breaking point. I realized that if I wanted to maintain my sanity while keeping my application numbers high, I had to automate the process.
The job application process
While applying to jobs, I’ve found a pattern to what I was doing.
- Search for jobs: Look for jobs on sites such as LinkedIn or Indeed
- Prime the LLM: Take the job description and feed it into an LLM alongside my “primary” resume, asking if it’s a good fit. This primes the LLM with the information needed for the next prompt.
- Resume I’ll feed my resume into the LLM, asking for it to tailor the resume to the job posting. However, LLMs can’t be trusted as they tend to “confidently lie.” I then go and manually remove things that are simply untrue, and add additional information that the LLM missed.
- Cover Letter Ask the LLM to create an outline of a cover letter. A lot of the time, the LLM won’t know my true reason that I’d want to work there, so an outline will at least get me started.
- Apply Lookup the company’s website, and apply there (if possible).
Tools
There are a few tools that I use to speed up the process.
- MagicExtension A fork of a browser extension called SingleFile. I’ve modified it to send the page to a local API, though my modifications aren’t ready to be public just yet.
- MagicAPI: This is the API that I’m using to take the job description from the MagicExtension and processes it using LLMs. It’s also going to contain the Learning Machine, which I’ll add additional functionality for later, This API isn’t ready to go on my GitLab just yet, but I’ll post it as soon as it is.
- A fork of RenderCV. The original project is a Python application Sina Atalay, which allows me to define my resume in a computer-friendly format (YAML). Once it’s ready to apply to a job, I use RenderCV to convert it to multiple formats on-demand (most commonly, PDF). I’ve had to make a few slight modifications to the program to match the region I’m applying in: Removing the country code requirement, and changing the terminology from “CV” to “Resume.”
Learning Machine
In the world of software, simply hitting “submit” on an application isn’t enough; you have to constantly evolve. To stay sharp, I’m extending my job application workflow to act as a personal “mentor.”
The “Learning Machine” is part of the API that uses a relational database (PostgreSQL) to store research material. It tells me what to learn based on the jobs I’m applying to.
The database portion consists of multiple tables.
- Main Concepts: This includes the general concepts such as Relational Databases, Data Structures, Algorithms, and more.
- Technologies: The specific thing that it applies to such as PostgreSQL, Python, Django.
- Content: This contains the pipeline of questions that I need to learn. These could be things such as quiz questions, videos to watch, articles to read, social media accounts to check, and more.
- LLM Research: This is a table that contains all of the tasks that the LLMs are doing research on. It’s not viewed by me as the user.
I’m also storing the job applications I’ve applied to as well. This includes tables for the following:
- Companies
- Job Postings