Anyone who has looked for a job knows the feeling: after an hour spent scrolling through listings, you end up opening ten of them, reading them all the way through, only to discover that eight out of ten were clearly wrong from the second paragraph onward, wrong location, seniority level too high, required language different from the one mentioned in the title. The time isn’t lost in searching. It’s lost reading listings that should never have made it that far.
I built a system that handles that first round of screening for the job seeker and returns only the listings actually worth opening. It was originally built for a specific job search, an entry-level position in another European country, and it proved useful for a very different case as well: searching for consulting and freelance opportunities for myself.
The Problem Isn’t Finding Job Listings. It’s Not Wasting Time on the Wrong Ones
Job platforms aren’t short on opportunities. The problem is that every search returns a mix of genuinely relevant listings and listings that only look relevant based on the title. Opening every one of them just to figure out which ones to reject is the most exhausting part of the process, and it ends up being more discouraging than the job search itself.
So the right criterion wasn’t “find as many listings as possible,” but “do the first round of screening for me and show me only what passes.”
The Mistake I Made First
My first attempt was the most intuitive and also the most wrong: searching directly for the requirement that mattered most, in this case the required language. The result was almost always the same: listings for roles that were much more senior than the ones I was looking for, because those were the only ones that explicitly mentioned the language as a requirement in the title or short description.
The correction came after looking at enough of the wrong results to recognize the pattern. I started searching by job function, the type of role rather than the language requirement, and verifying the language by reading the body of the listing instead of the title. It’s a small change to the search query, but it completely changed the quality of the results.
It’s also, I think, the most transferable lesson from this entire project: the most obvious keyword to search for is often the one that filters the worst.
How Automated Job Listing Evaluation Works
The system searches listings across multiple sources, reads them in full, not just the title and excerpt, and assigns each one a compatibility score based on criteria defined in advance rather than on a generic judgment:
- Location, verified in the text rather than inferred from the company name
- Required language, searched for in the body of the listing
- Seniority level, to avoid mixing entry-level roles with positions requiring years of specific experience
- Estimated salary range, calculated when the listing doesn’t explicitly provide one, so that more transparent listings that simply don’t include a figure aren’t automatically discarded
The result isn’t a list of links. It’s a list ranked by compatibility, with the location and work arrangement (remote, hybrid, or on-site) already verified, not inferred from an impression, but actually found somewhere in the listing itself.
What the System Does and What It Deliberately Leaves to the Job Seeker
The system doesn’t write the cover letter, fill out the application form, or decide which employers to respond to. This isn’t a technical limitation. It’s a choice.
Applying for a job is the moment when a person’s voice, the nuances of their experience, and the choice of what to share actually matter. These are things a model can simulate, but they lose value precisely when they are delegated entirely to a machine.
What the system removes is all the work that comes before the application: searching, reading, rejecting. It’s the mechanical, repetitive part that can be standardized without sacrificing anything personal.
It Also Works for Finding Clients or Collaborations, Not Just a Job
I reused the same structure for a different case: not finding a salaried position, but looking for consulting opportunities and professional collaborations. The criteria change completely, no longer location and required language, but signals such as a company expanding its presence into a new market or a job posting indicating a specific need.
The underlying logic remains the same: search with a specific purpose, read the entire listing, evaluate it against explicit criteria, and present only what clears the threshold.
It’s the same framework used by the systems described in the other articles on this blog: a problem that repeats over time, evaluation criteria defined beforehand rather than improvised along the way, and a clear boundary between what the system decides and what remains the user’s responsibility.



