skip to content

Search

Syspirit
EN

#The workflow that might (just might) land me a job

Job hunting in Dublin without spending every evening on it, and without missing openings: the problem I tried to solve.

6 min read Karl Certa
The workflow that might (just might) land me a job - Cover
AI-generated image

A few months ago I decided to move to Dublin. That involves a whole lot of things, and above all a fresh start from zero. Including one fairly important item: finding a job.

Dublin has a reputation as a tech hub. The last few years have been quieter on that front, but there are still plenty of opportunities.

I’m actively looking right now, and I’ve realised how hard it is to get a picture of everything that’s actually out there. I scroll Indeed and LinkedIn every day, but it takes time and it gets demoralising. So I decided to hand that task over to AI. Let me explain how, without writing an essay about it.

JobCtrl, so I don’t lose track

First, a tool I vibecoded before leaving: JobCtrl. It lets me track all my applications properly, see which processes are live, and get clear stats during the search.

It’s a Go app with a SQLite database, served in a container. Nothing clever, but it beats the spreadsheet everyone abandons after three weeks. And it looks nicer, incidentally :D

JobCtrl dashboard: 24 applications, a 43% response rate, the pipeline by status and the ranking of sources

There’s still work to do on it of course, but it’s already doing its job.

Filon, to go and find the openings

That left the bigger piece: automating the search itself.

I already rent a VPS, with Claude and Telegram installed on it (same process as in my article how I made my infra come alive), which lets me drive it quickly from my phone.

I asked it to set up a scan across every source it could safely scrape, and to give me a report with the openings that best match my profile. For that I handed it my CV, all my experience, my projects, basically the full context of my professional background. So yes, Anthropic now knows everything about me, but at this level it hardly matters: I’ve already made all of that public, on this blog for instance.

The result is called Filon (Claude picked the name on its own, I thought it was fine so I left it 🙃). It’s a Python pipeline running on cron on the VPS, with no external dependencies: everything is standard library. No virtualenv, no pip install, nothing to patch for security reasons.

How it works

The basic idea is that Claude shouldn’t deal with anything a script can handle on its own. Everything verifiable gets filtered by code first, and the model only handles what needs an opinion.

The collection, every evening

Every evening a script goes out and hits six sources: the public APIs of Greenhouse, Lever and SmartRecruiters, plus three Irish job boards. It dumps everything into a JSON file.

One thing worth mentioning: the same opening often shows up at two or three agencies, with a different link each time. So the comparison isn’t done on the URL, but on the company name and the job title, otherwise I get it several times in the report.

This step costs zero Claude calls, it’s just a script doing its thing.

The filtering, before Claude sees anything

This is the big piece, and it’s mostly what keeps the whole thing usable. The code throws out everything that can be thrown out without thinking. Here’s what that looked like on 28 August:

Reason for rejectionCount
Title doesn’t touch anything in my field228
Contracting, which I’m turning down for now108
Different profession (sales, HR, healthcare, hospitality)86
Outside Ireland and not remote28
Already appeared in a previous report8
Company that already said no (status read from JobCtrl)6
Dismissed by hand from the dashboard2
Role I’ve already applied to1

Out of the 599 openings in storage, only 45 make it through all the filters. Which works out well, because every listing I send costs tokens and I’m on the 20 euro Claude plan, so I cap it there.

Filon's dashboard: out of 599 openings collected, 45 pass the factual filters and 12 are picked out by Claude The dashboard still needs work… not that useful having the stats twice 😅

The report, Tuesday and Friday

Claude gets those 45 openings along with my profile, and gives me its ranking.

It scores each one against the criteria I gave it, then shows me its picks as well as the ones it dropped.

For every opening it keeps, it explains why it’s putting it in front of me, what might not work, it gives me the link to the listing and a quick read on the company (Glassdoor search, employee reviews, and so on) so I get a first impression of the place.

An opening put forward by Filon: a match score of 73, salary range, source, then why it suits me, what might not work, and the buttons to decide Another opening, with the red warning "You already have an application in progress there" and the employer research filled in: Glassdoor rating, review volume, recommendation rate

The two tools talk to each other

Both apps now sit behind a single entry point and talk to each other. Filon reads JobCtrl read-only to know where my applications stand and whether I’ve already applied somewhere, and I can push an opening I like straight into JobCtrl.

The portal home page: two tiles, JobCtrl and Filon

I’m the one deciding, and I tell it so

So yes, it’s Claude judging whether an opening might suit me, which means it’s probably not perfect. But it already covers far more sources than I did on my own, and I still check Indeed and LinkedIn myself.

On every opening in the report, I answer yes or no. No opens a justification field, where I write down why.

Those verdicts get fed back into the prompt for the next report, in my own words, and they override the model’s scoring. It’s the strongest signal in the system: a human read it and made a call. When a pattern comes up often enough, it becomes a hard-coded rule.

I want to keep that manual, human side. I’m the one who reviews the opening, I’m the one who decides to apply, and I’m the one who applies. Not the AI. I’m looking for a job that fits me, not something too junior or too senior where I’d be overselling myself.

What it teaches me about the market

A side effect I wasn’t expecting: from collecting all this, I’ve ended up with a fairly sharp picture of what’s in demand here. The dashboard counts how often a list of technologies shows up in the openings on the ground, over a 45 day window.

TechnologyShare of openings
Development (Java, Go…)37 %
AWS29 %
Python28 %
Azure25 %
Google Cloud25 %
Linux19 %
Kubernetes18 %
CI/CD14 %

Kubernetes is clearly becoming unavoidable, and so is hands-on public cloud, or even Python. So I know what I need to work on… 😅

What’s next

None of this is perfect yet, I imagine. More sources could be added, the results could be sharpened.

If this whole workflow gets clean enough and I find the motivation, I’ll turn it into a proper project on GitHub, with easier profile management and maybe more integrations. Need to think about it.

In the meantime it keeps running, and I’ve got a pile of openings to review: my turn to play 😁