Varun Sharma 👋🏻

💼 Job Finding Agent - Demo

Hi. Below you can try the "Job Finding Agent" yourself.

It works in two steps:

  1. Job Discovery: Scrapes jobs from LinkedIn. Scores each job out of 10.
  2. Job Outreach: Researches the hiring manager. Drafts a personalized email applying for the job.

⚡ LIVE DEMO

1️⃣ Part 1: Job Discovery

Enter "Job Title" and "Location" to start the search.

Once complete, all the scraped jobs & LLM scores will be added to THIS Google Sheet.

2️⃣ Part 2: Job Outreach

Paste a LinkedIn job URL below.

The agent will research the company and hiring manager. Then draft a personalized email applying for the job.

🛠️ Tech Stack

Python n8n Agent Development Kit Docker Google Cloud Run Google Cloud Storage (GCS) IAM Apify Google Sheets Gemini API

📋 Full Workflow Details

I built this workflow for my job hunt.

It saves me hours finding the right jobs to apply to. As shared above, I built this in two parts.

Here is how the complete workflow looks...

1️⃣ Job Finding Workflow:

This workflow uses an Apify actor to scrape hundreds of public LinkedIn jobs based on a title and location, such as Generative AI Engineer, Bangalore."

It then filters out irrelevant roles based on a negative keyword list.

For example, it excludes job titles with words like "Senior", "Manager", or "Architect" so it does not save roles like "Senior Full-Stack Developer" which are not a good fit for me.

Each remaining job goes to an LLM (Gemini 3.1 Pro).

The LLM scores each job using a 12,000+ word system prompt. This prompt includes a scoring rubric and few-shot examples customized for my profile.

The model scores each job out of 10 based on how well my skills match the requirements.

These scored jobs are then saved into a Google sheet.

⚙️ Architecture

This complete workflow runs in an n8n instance deployed on Google Cloud Run.

Because Cloud Run is serverless, the workflow JSON is baked into the container image itself. This allows it to run perfectly without persistent storage.

Scraping is done via an Apify actor, and the Gemini model is accessed through the OpenRouter API.

2️⃣ Job Outreach Agent:

Once the jobs are in Google Sheets, I filter those with a score of 8, 9, or 10.

I manually review these top jobs. I check the job descriptions and company websites to ensure a good fit (both ways).

At this point, I apply for the job on LinkedIn (or the company portal directly).

➡️ To boost my chances, I also email the hiring manager directly. This is where the Job Outreach Agent comes in.

I paste the LinkedIn job URL into the agent.

The agent immediately starts researching.

  • It extracts the job description and visits the company website.
  • It checks their blog posts & news articles. It also scans Google for any recent company news.
  • Next, it queries LinkedIn for company employees. It identifies potential decision-makers based on who posted the job and their current role, narrowing it down to three top candidates.

The agent then pauses for a human-in-the-loop (HITL) step, where I choose who to research further.

The agent then reviews their LinkedIn profile, recent posts, finds their email.

It then writes a personalized email based on an extensive system prompt.

And saves the email to my Gmail drafts.

⚙️ Architecture

The agent is built in Python using Agent Development Kit (ADK). It runs in a Google Cloud Run container.

The agent is also connected to a Google Cloud Storage (GCS) bucket via a Service Account to cache intermediate data from each sub-agent.

The agent streams each step outputs to the frontend using SSE (Server-Sent Events).

The agent uses multiple Apify actors to extract LinkedIn data. Email is written by the Gemini Pro model (via Gemini API), and saved to drafts using Composio.

⏱️ Hours Saved

This workflow saves me tens of hours, especially the Job Discovery part.

Instead of manually reading hundreds of descriptions, it finds me the most relevant jobs directly.

The Job Outreach agent researches and writes a cold email in under 5 minutes.

Doing this manually easily takes me 30+ minutes.

While the AI-generated email is not perfect and requires about 5 minutes of editing, the agent still saves me 20 to 25 minutes per application.

Rough numbers for a typical run:

  • Jobs initially scraped: ~1,000
  • Jobs remaining after filtering (excluding "Senior", "Manager", etc.): 300 to 400
  • Jobs left with a score of 8 or more: 25 to 50

The time savings speak for themselves.