2 of 122 min

How the bot compares me with a vacancy and assembles an application for it

One of the most important things about this project is that it doesn’t answer all vacancies the same way.

It doesn’t take one universal resume, paste in the same template and hope it happens to work somewhere.

First the system decides which professional version of me should answer a particular market at all.

For that it has not one general search but a set of scenarios: with different directions, regions, conditions and attached resumes. So even before applying, the project chooses not only what to search for but which resume to go out with.

It looks roughly like this:

search_mode = 7
mode_7 -> [config_5]

config_5:
  text = "Prompt Engineer / AI Developer"
  area = [1, 2]
  salary_min = "configured threshold"
  resume_name = "automation_resume"

resumes["automation_resume"]:
  resume_id = "..."
  portfolio_url = "..."

search_mode selects the working scenario. config_5 sets the search frame: direction, regions and financial threshold. resume_name ties this scenario to the right resume. resume_id turns all this into the specific document the project actually takes to market. portfolio_url extends the resume outward and gives the system not only text but evidence.

But that’s only the first layer.

Then the project opens the vacancy and analyses it as a text problem. It pulls from the description key requirements, the stack, the role, constraints, screening phrases and recurring signals by which both people and automatic filters will later read the vacancy.

After that comes the most important part: the system compares these signals with my resume, experience and portfolio. So it doesn’t “come up with a nice letter”, it builds a map of real matches between the vacancy and me.

And on that basis it writes the cover letter.

So the letter here isn’t a template or decorative text. It’s built from three layers: • what exactly the vacancy requires; • what I really have in terms of experience and materials; • how to phrase it so the application is readable both for a person and for the first HR filter.

That’s why the cover letter’s job here isn’t to “trick the system”. Its job is different: to make relevance explicit, not lose the key signals of the vacancy, and not drop out before a human ever looks.

For me this was one of the main boundaries of the project.

I didn’t want a bot that simply speeds up spam. I wanted a system that first understands who exactly I am going to market as right now, then understands what exactly the employer is looking for, and only then assembles an application from real matches.

That’s the moment automation stops being mechanics.

It becomes a form of discipline: don’t answer everyone the same way, don’t lie about yourself, and don’t lose relevance even where a machine already does part of the first screening.

How the bot compares me with a vacancy and assembles an application for it: illustration 1
Series contents
  1. Automating applications as an answer to market asymmetry
  2. How the bot compares me with a vacancy and assembles an application for it
  3. Why the closure of the job seeker API didn't kill the project but made it grow up
  4. How I kept the system's brain and replaced its transport
  5. The hardest part of auto-apply isn't submit
  6. Auto-apply in visible mode
  7. How the LLM in my project turns a vacancy into a cover letter
  8. Why full autonomy turned out weaker than managed autonomy
  9. I gave the system not only actions but also brakes
  10. How the project lives after applying: statuses, invitations, conversations and a manual dashboard
  11. Dashboard
  12. The most unexpected vacancy my bot found