Skip to main content
IAMV Consulting

AI Job Scout: Autonomous Recruiter with AI

AI Agents

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

Stack

  • n8n
  • OpenAI GPT-4o-mini
  • Google Jobs
  • LinkedIn
  • Telegram
  • Google Docs

Solution architecture

Daily 8 AM schedule
Prospecting agent (n8n)
Telegram digest
Recursos · Prospecting agent (n8n)
Sources
Google Jobs US/Global
Google Jobs LATAM
Google Jobs Brazil
LinkedIn
JobDireto
Model
GPT-4o-mini
Scores each listing from 0 to 10
Reference
CV in Google Docs
Read on every run
Five collectors running in parallel over four sources, a model that scores the fit, and the real CV as the judgment reference.

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 does the whole prospecting run 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 difference is the relevance criterion. 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 the adaptation lives 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.

Solution flow

  1. 1Schedule Trigger 8 AM

    Daily scan

  2. 25 parallel collectors

    Google Jobs US/Global, LATAM and Brazil, LinkedIn and JobDireto

  3. 3Normalizers

    Uniform schema of title, company, url, date, and source

  4. 4Merge + dedup

    By URL, with a 24h freshness filter

  5. 5GPT-4o-mini scores 0 to 10

    Against the real CV read from Google Docs

  6. 6Cutoff filter

    Default of 7 out of 10

  7. 7Telegram

    Digest grouped by source, with an alert if the scout fails

Prospecting before 8 AM: from the scheduled trigger to the curated Telegram digest, with parallel collection, deduplication, and scoring against the candidate's real CV.

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, so the digest only carries 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 means duplicating the Collector + Normalizer pattern and connecting it to the next merge. To prioritize criteria like remote work, salary range, or stack, adjust the analysis system prompt.

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 the candidate themselves would make, not a syntactic keyword match.

Metrics

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