| ▲ | Show HN: An AI workflow to automate your LinkedIn job search(gabidev.gumroad.com) | |
| 2 points by gab18 5 hours ago | ||
So as I was scrolling LinkedIn for a long time, I started noticing how little actual matches I get with my real background. Not even the keywords I use seem to matter. If I look for ML or AI Engineer I get more often than not completely unrelated: DevOps, Java, even Electric Engineer! The new AI feature they have where you describe the job you want to find doesn't seem to help either. I decided I would make my own AI workflow to find these good matches. The basic idea is simple: load your information and job search preferences, find the LinkedIn posts, give a scoring for every job post, a recommendation if to apply or skip, so I can focus only on the few jobs I actually have a shot at. Since the point of LLMs is to understand semantics and language patterns, this task seems like a fit. The scope of the project is divided into three AI agents, the last one being a total plus: profiling agent, rank & match agent and an autoapply agent. The current stack is Python, using LiteLLM for model access and Qt for a simple dashboard, and playwright for browser automation. The profiling agent takes your resume and, optionally, your LinkedIn profile. This is because many people write on their LinkedIn past jobs, projects and activities that are not necessarily documented on their resume. It ends up with a profile of the candidate which will be evaluated by the second agent against the job posts. The agent is also required to suggest the user with possible job searches. When we need to fetch jobs, things get interesting: there is no public API to do it. So I needed to wrestle with browser automation and heuristics to get the job posts. Next, the agent evaluates the posts one by one, giving a score from 1 to 100 (depending on the LLM, they can be more or less creative with their scoring), based on rules that are as non-vague as possible when prompting: assess the candidate's skills, previous experience and search preferences, and give a reasoned decision on whether to skip, review or apply for the job. My first tests conducted a few weeks ago showed just how my first impressions of needing an automation for this were right: out of 300+ found jobs, only around 25 actually were worth applying. The agent also outputs the skills gap and skills match for each job, so I can see exactly what I'm missing. Lastly, the autoapply feature was more of an exercise to see if I could get it done and how, than something needed, but it was really fun to program: the agent takes every field of the easyapply functionality on LinkedIn and infills its field, or chooses an alternative based on a user profile with personal information (like where you live for example). It's a hybrid between browser automation and AI Agent that is very fun to look at while it infills the fields. It even writes a cover letter for me! This was the biggest challenge by far: handling what to do when the website rejects a field and finding the submit button was a nightmare. The challenges didn't end here though: automation can be dangerous. I wanted not just to avoid spamming on the website but also give a real user feeling. So I introduced various actions, delays taken from a non-uniform distribution, pauses, and consistent browser fingerprinting. This was my first attempt at building a workflow in this way! I'd be glad to hear what people think! | ||