Two Months Looking for Work and What Desperation Taught Me About Python
How I turned the frustration of searching for work in the most uncertain job market I have experienced into a Python web scraping project that changed how I apply.
There is a very specific feeling that appears at 9 in the morning when you have spent weeks sending resumes and the phone does not ring. It is not exactly panic. It is not calm either. It feels more like standing in a huge waiting room, looking at a sign that says “open,” but not being sure whether it applies to you.
That is what I felt after my first month without work.
I have 17 years of experience in design, digital marketing and product. I have managed databases of more than 30,000 contacts, built funnels from scratch and led inbound campaigns in fintech. My experience is real, not PowerPoint. And still, the market right now feels like swimming against a current you cannot see but can clearly feel.
The context nobody fully explains
Chile has an unemployment rate around 8.7%, notably above the OECD average. Add to that the forceful arrival of AI, a change of government that brings regulatory uncertainty and a LinkedIn feed that sometimes looks like a public mourning wall: brilliant people announcing layoffs, threads with “5 tips to get hired in 2025” that changed nobody’s life and job posts with 400 applications in 48 hours.
The World Economic Forum estimates that tens of millions of jobs will disappear in the coming years, while many new ones will emerge. What nobody mentions is that the interval between the jobs that disappear and the jobs that arrive is exactly where many of us are standing today.
In that space, traditional job boards start to feel like fishing with a broken rod.
When the map stopped working
Job search platforms have a structural problem everyone eventually discovers: they show inventory, not flow. They publish what already has 300 applicants. They mix current listings with posts that expired weeks ago. And the algorithm does not necessarily prioritize what is most relevant to you; it often prioritizes what the client paid to highlight.
So I decided to do what I tend to do when a system does not work: break it a little and build my own.
The first attempt: a ChatGPT agent at 6 AM
I started simple. I built a ChatGPT agent with instructions to scan job portals every morning, filter by specific roles and send me a summary at 9 AM. The setup was fast. The first days worked well. There was something almost therapeutic about opening my email and finding an ordered summary of opportunities.
But in less than two weeks, problems appeared: expired jobs, duplicates and results that did not match the filter I had defined. The agent was enthusiastic but imprecise. Like a new assistant with a lot of energy and little experience.
The second attempt: n8n and the limits of free tools
I moved to n8n, an automation tool that many people in marketing and product know well. The promise was tempting: visual nodes, clean integrations and conditional logic without writing code.
And yes, n8n works well. But its free version has restrictions that felt frustrating for this kind of task. The flows were functional in theory, but in practice they did not do exactly what I needed, the way I needed it. When 80% works but 20% annoys you, you end up thinking about the 20% all the time.
That is when I asked myself something I should have asked earlier: what if I simply learn to do it properly?
Python, a DigitalOcean VPS and a learning curve with teeth
My background is in design. I am comfortable with Figma, Adobe, HubSpot, Looker Studio. I have touched code in landing pages, email templates and some HTML/CSS. But Python was a language I watched from a respectful distance.
Setting up a server on DigitalOcean was, honestly, painful.
Not because it is impossible, but because the terminal has a logic that is radically different from any software you have used before. There are no interfaces. No drag and drop. No undo button. You type a command wrong and the server ends up in a state you do not understand. The feeling of being useless at the beginning is completely normal, but nobody warns you strongly enough.
What helped me enormously was working with Claude as a programming pair. Not as an oracle that solves everything, but as someone who explains the “why” behind the error, suggests alternatives and tells you “that will break everything” before you break it. Together we managed to set up the server, upload my personal website and create a clean environment for experiments.
If you are going into this, bring patience. The first day probably nothing will work. By day ten, you will understand something fundamental. By day twenty, you will feel you can do more.
What the scraper does today
The current version works like this:
I have a Python script that receives a list of company URLs, mainly their careers pages or institutional sites. The script analyzes each page and extracts what I care about: contact email, company LinkedIn profile and whether they have an active jobs section.
This lets me do something traditional portals do not offer: go straight to the source. No intermediaries. No relevance algorithms. No competing with 400 applicants for a role that has been live for a week.
Python turned out to be surprisingly accessible for someone coming from design. The syntax is readable, almost conversational. The only real friction point at the beginning was indentation: in Python, tabs and spaces are not aesthetics, they are structure. The interpreter reads them as part of the logic. Once that clicks, everything starts to flow better.
Chris Lovejoy, a doctor turned data scientist, did something similar when he documented how he built his own job scraper with BeautifulSoup and Selenium to automate his search. He was not a career programmer, but he saw the problem, learned the minimum tools and solved it. That approach is exactly the spirit that guides me.
What I learned along the way
Beyond scraping, this project introduced me to a world that used to feel completely foreign.
API keys. Understanding how an API key is configured, how it is called from code and how to protect it so it does not end up exposed in public repositories.
Server environments. Knowing the difference between local and production. Understanding what a background process is and why it matters.
Technical iteration. In design I iterate constantly, but in code iteration is different: more granular, more explicit. Every error has a cause, and every cause has a solution.
And the job?
I have not found it yet. But I have several applications open and feel hopeful. More importantly: I stopped feeling passive in the process.
The current labor market in Chile, especially for creative profiles with technology experience, demands exactly this: not waiting for the system to work for you, but building the system you need.
The next step is to develop a small piece of software to manage my applications: a simple dashboard where I can see which company I applied to, when, whether there was a response and which role I applied for. More than once, the phone has rung and I have not immediately known which company was calling or what role it was about.
The invitation
If you are looking for work and feel that job portals are not giving you what you need, do not wait for them to improve. Use this time to grow, explore tools you never had time to touch and learn something that is not on your resume but probably should be.
You do not need to be a programmer to start with Python. You do not need to be DevOps to set up a server. You only need curiosity, a willingness to get frustrated and the conviction that learning something new has value on its own, regardless of the immediate outcome.
The market is complex. But people who know how to adapt always find a way.
How are you facing the search? I would like to know. Message me on LinkedIn.