Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Job Match AI

A production-grade multi-agent AI system built with LangGraph that scrapes a job post URL, extracts requirements, and analyses them against your CV using RAG — returning a full match report, salary estimate, company insights, and interview questions.

Architecture

Job URL → Scraper → Extractor → Supervisor → [CV Analyst + Salary Analyst + Company Researcher + Interview Agent] → Reports

The supervisor uses deterministic parallel fan-out — all four analyst agents run simultaneously, not sequentially.

Tech Stack

  • LangGraph — multi-agent graph with parallel fan-out and persistent checkpointing
  • LangChain — LLM orchestration, embeddings, document loading
  • FastAPI — streaming and non-streaming REST API
  • Chroma — local vector store for CV RAG retrieval
  • PostgreSQL — persistent session memory via LangGraph checkpointer
  • OpenAI — GPT-4o-mini for agents, text-embedding-3-small for CV embeddings
  • Jina Reader — authenticated webpage scraping without browser overhead

Agents

Agent Role
Scraper Fetches job post content via Jina Reader
Extractor Extracts structured requirements using GPT-4o-mini
Supervisor Deterministic router with parallel fan-out
CV Analyst RAG retrieval from embedded CV + match report
Salary Analyst Estimates salary range from job requirements
Company Researcher Extracts culture, industry, and tech stack hints
Interview Agent Generates tailored technical and behavioural questions

API Endpoints

Method Endpoint Description
POST /analyse Full analysis, returns complete JSON report
POST /analyse/stream Streams agent events as they complete

Setup

1. Install dependencies

uv add langchain-openai langchain-community langchain-chroma \
       langchain-tavily langgraph langgraph-checkpoint-postgres \
       langchain-pymupdf4llm fastapi uvicorn python-dotenv \
       beautifulsoup4 lxml psycopg[binary]

2. Create .env file

OPENAI_API_KEY=your-openai-api-key
DATABASE_URL=your-postgres-connection-string

3. Add your CV

Place your CV as resume.pdf in the root directory.

4. Run the server

uvicorn supervisor:app --reload

Example Request

curl -X POST http://localhost:8000/analyse \
  -H "Content-Type: application/json" \
  -d '{"job_url": "https://www.reed.co.uk/jobs/lead-ai-engineer/57002808"}'

Example Response

{
  "thread_id": "abc-123",
  "cv_report": "Overall match: 75%...",
  "salary_report": "Estimated range: £70k - £90k...",
  "company_report": "Industry: FinTech, Culture: fast-paced...",
  "interview_report": "1. Explain your RAG pipeline architecture..."
}

Key Patterns Used

  • Deterministic supervisor routing — Python set logic, no LLM hallucinating routes
  • Parallel fan-outCommand(goto=[list]) runs all agents simultaneously
  • RAG retrieval — CV chunked with 500/50 overlap, retrieved per job requirements
  • Persistent sessions — PostgreSQL checkpointer survives server restarts
  • Streaming/analyse/stream yields agent events as NDJSON

Project Structure

job-match-ai/
├── supervisor.py      # Full system in one file
├── resume.pdf         # Your CV (not committed)
├── .env               # Environment variables (not committed)
├── chroma_db/         # Local vector store (auto-created)
└── README.md

About

Production multi-agent AI system that analyses job posts against your CV using LangGraph, RAG, and FastAPI

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages