Skip to content

An n8n-powered workflow that scrapes new LinkedIn jobs, compares them to your CV with an LLM, ranks them by fit, and emails you a daily digest of the best matches.

License

Notifications You must be signed in to change notification settings

SummerLiu95/DailyJobMatch

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ChatGPT 2025-11-24 17 16 20

DailyJobMatch

Made with n8n Powered by OpenAI Docker Status

Automated AI-powered job-matching workflow built with n8n


📑 Table of Contents

  1. Overview
  2. Architecture Diagram
  3. How to Use
  4. Output Format
  5. Example Email
  6. Contact
  7. Roadmap

📚 Overview

🧠 What DailyJobMatch Does

DailyJobMatch automates your job search every morning by collecting fresh job postings, comparing each role against your CV using a large language model, and emailing you a ranked shortlist of the most relevant opportunities.

⭐ Core Features

  • 🔄 Daily automation: Scheduled trigger (e.g. 07:30) runs the entire pipeline without manual effort.
  • 📝 CV-aware matching: Uses the full text of your CV, not just keywords, to evaluate fit.
  • 💯 Multi-dimensional scoring: Breaks fit into background match, skills overlap, experience relevance, seniority, language requirements, and company score.
  • 🧹 Cleaning & deduplication: Normalises fields, removes obvious mismatches (student roles, internships, postdocs), and deduplicates by title/company/link.
  • 📊 Structured LLM output: Forces the model to return strict JSON, then parses and validates it before ranking.
  • 🥇 Top-N selection: Ranks all jobs by overall score and keeps only the top matches for you to review.
  • 💌 Dark-theme email report: Sends a dark-theme HTML digest with job cards, scores, keywords, fit bullets, and “View & Apply” buttons.

🏗️ Architecture Diagram

image
image


📘 How to Use DailyJobMatch

This is an early-stage project and still requires personalised setup.


1️⃣ Installing & Running n8n with Docker

DailyJobMatch is built on n8n, a flexible automation tool. Docker is the recommended and easiest deployment method. Here is an installation guide: https://github.com/n8n-io/n8n


2️⃣ Setting Up Required Credentials

DailyJobMatch relies on several external services:

🔹 Google Drive & Gmail

Used to fetch your CV and send daily job digest emails. They require the Google credentials, and here are the official docs from n8n: https://docs.n8n.io/integrations/builtin/credentials/google/

🔹 Apify (LinkedIn Job Scraper)

In our workflow, Apify is used to collect fresh LinkedIn jobs within the last 24 hours. Apify provides tons of actors to scrape up-to-date web data from any website for AI apps and agents, and I chose Linkedin Jobs Scraper - PPR as it is paid by result rather than subscription. But feel free to choose the scrapper which fits your needs, and the detailed configuration steps will be on the actor's page.

🔹 OpenAI (LLM scoring model)

DailyJobMatch uses an LLM to read your job description, read your CV, evaluate the matches and score the fit across 6 dimensions and finally generate structured JSON outputs. n8n can be integrated with almost all the conversational chatbots. Here's how you can set up with the OpenAI model: https://docs.n8n.io/integrations/builtin/credentials/openai/


3️⃣ Importing & Configuring the Workflow

After setting up Docker and credentials, import:

workflow/Daily_Job_Match.json

⚠️ Replace all my example credentials with your own.

I've written a few lines of descriptions for each node, and feel free to click and check the official docs to learn more. Here I will just walk through these key nodes, which you may need to alter or customise based on your needs:

  • Config: Add Apify API key (NOT the full link, check LinkedIn node), recipient email, and number of jobs per day.
  • RetrieveCV (Google Drive): Under Credentials, select your Google Drive OAuth2 credential and make sure the file / fileId is set to your CV PDF.
  • LinkedIn Under URL or body, make sure it uses your Apify dataset or actor endpoint (depending on how you configured it). Under Authentication / Headers, ensure your Apify API token is set.
  • Filter & Deduplicate: Update banned keywords (e.g., “student”, “temporary”).
  • Score Job & Extract: customise the prompt for your agent, including the goals, input and tasks.
  • Model Nodes: finish credentials setting and choose your model.
  • Send a Message (Gmail): Under Credentials, choose your Gmail OAuth2 credential. Ensure the To field is either A static email or an expression pointing to Config.gmailTo.

✔️ Manual Test

Disable schedule → click Execute Workflow → review step-by-step execution.


📤 Output Format

For my personalised agent, the scoring node requires the LLM to:

  • Read your entire CV
  • Read the job description
  • Evaluate fit across six dimensions
  • Output strict JSON (no markdown or commentary)
  • Keep the structure consistent across all jobs

JSON Template

{
  "score": {
    "overall": 0,
    "background_match": 0,
    "skills_overlap": 0,
    "experience_relevance": 0,
    "seniority": 0,
    "language_requirement": 0,
    "company_score": 0
  },
  "summary": "",
  "keywords": [],
  "fit_bullets": [],
  "connector": ""
}

Scoring Rubric

Category Range Description
background_match 0–10 Fit with domain (bioinformatics, pharma, biotech)
skills_overlap 0–30 Match between required skills and your technical stack
experience_relevance 0–30 Alignment with responsibilities & past projects
seniority 0–10 Entry-level preference; penalises senior roles
language_requirement 0–10 Penalises strict “Danish required” listings
company_score 0–10 Bonus for biotech/pharma/AI companies
overall 0–100 Sum of all categories

📧 Example Email Output


📬 Contact

Feel free to reach out with questions or feature ideas!


🌟 Roadmap

  • JobIndex integrations
  • Notion job-tracking storage
  • Auto-apply system (draft cover letters)
  • Weekly analytics dashboard
  • AI-based CV improvement suggestions

Contributions welcome — open an issue or submit a PR!


About

An n8n-powered workflow that scrapes new LinkedIn jobs, compares them to your CV with an LLM, ranks them by fit, and emails you a daily digest of the best matches.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published