IAMV Consulting
Back to case studiesAI Agents

AI Job Scout: Autonomous Recruiter with AI

Daily scanning of 4 job sources, scored against the candidate's real CV, delivered via Telegram.

Job sources scanned in parallel
4 (5 collectors)
Configurable cutoff score
7/10 (default)
Freshness window for job listings
24h

The challenge

Active job searching in technology is a second job. Product Managers, AI Engineers, and hybrid profiles working in niches need to scour Google Jobs, LinkedIn, and regional boards every day, and in competitive job markets, those who apply first have the advantage. The work is repetitive (searching, filtering duplicates, assessing fit) and the cost of doing it poorly is high: good listings expire in the feed, while bad ones consume analysis time.

The same problem affects independent recruiters and headhunters who monitor opportunities for multiple candidates. Manual screening does not scale, and keyword filters do not capture the real fit between a job listing and a CV.

The solution

An autonomous agent in n8n that conducts the entire prospecting process before the candidate wakes up. Every day at 8 AM, a Schedule Trigger initiates a parallel scan across four sources (Google Jobs segmented by US/Global, LATAM, and Brazil, plus LinkedIn and JobDireto) through five simultaneous HTTP collectors, each followed by a normalizer that converts raw data into a uniform schema: title, company, url, posted_date, source.

The differentiator lies in the relevance criteria. Instead of keywords, the agent uses the actual CV: the consolidated package of job listings is sent to GPT-4o-mini along with the candidate's complete CV, read directly from Google Docs with each execution. The model returns, for each listing, a score from 0 to 10, the justification for the match, the inferred level of seniority, and a boolean match flag. Only those that exceed the configurable cutoff score (default: 7) reach the candidate.

All adaptations reside in a single configuration node: search terms in boolean query (posicoes_query), cutoff score, time window, and number of results per source. Changing this node adapts the workflow to any professional profile.

How it works

After the parallel collection, four chained merge nodes progressively consolidate the sources. Deduplication removes repeated entries by URL (or by title+company as a fallback) and discards listings older than 24 hours, ensuring that the digest only contains fresh opportunities.

The analysis chain runs with a timeout of 120 seconds to accommodate large packages. The result is parsed, sorted by descending score, and filtered by the cutoff; listings below the threshold are silently discarded. The approved listings are grouped by source and sent to Telegram in a Markdown-formatted message, including the title, company, link, and score for each listing. If the AI node fails, the workflow automatically sends a separate alert message: the candidate is always informed if the scout ran.

Adding a new source involves duplicating the Collector + Normalizer pattern and connecting it to the next merge. Prioritizing criteria such as remote work, salary range, or stack is achieved by adjusting the system prompt of the analysis.

Results

  • Automated daily prospecting across 4 sources, with curation ready by 8 AM, before the workday begins
  • Fit score from 0 to 10 per listing, calculated against the actual CV instead of keywords
  • Deduplication by URL and 24h filter eliminate noise from repeated or expired listings in the digest
  • Error handling with automatic alerts: no execution fails silently
  • Eliminates the daily manual scanning of Google Jobs, LinkedIn, and regional boards, which previously consumed screening time every day

What the project made clear: the costly stage of job searching is judging fit at scale, not finding listings. When the LLM reads the entire CV with each execution, the filter reproduces the judgment that the candidate themselves would make, rather than a syntactic match of keywords.