A lightweight multi-agent workflow system that automatically searches for job postings and matches them against a candidate's CV using AI agents.
- Multi-Agent Architecture: Supervisor coordinates two specialized worker agents
- Intelligent Job Search: ReAct agent that searches across LinkedIn, Indeed, and Glassdoor
- CV Analysis: AI-powered matching with detailed recommendations
- In-Memory State Management: Simple state store for workflow coordination
- Modular Design: Clean separation between agents and tools
┌─────────────────────────────────────────────┐
│ Supervisor Agent │
│ (Orchestrates workflow & manages state) │
└──────────────┬──────────────┬───────────────┘
│ │
┌───────▼──────┐ ┌────▼──────────┐
│ JobRetriever │ │ CVAnalyst │
│ Agent │ │ Agent │
└──────┬───────┘ └───────────────┘
│
┌──────▼──────────┐
│ Tavily Search │
│ Tool │
└─────────────────┘
.
├── agents/
│ ├── __init__.py
│ ├── supervisor_agent.py # Orchestrates workflow
│ ├── job_retriever_agent.py # Searches for jobs
│ └── cv_analyst_agent.py # Analyzes CV matches
├── tools/
│ ├── __init__.py
│ └── job_search_tools.py # Tavily search implementation
├── main.py # Entry point
├── cv.txt # Your CV (not tracked)
├── .env # API keys (not tracked)
├── requirements.txt
└── README.md
- Python 3.8+
- OpenAI API key
- Tavily API key
- Clone the repository
git clone https://github.com/yourusername/multi-agent-job-matcher.git
cd multi-agent-job-matcher- Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate- Install dependencies
pip install -r requirements.txt- Set up environment variables
Create a .env file in the root directory:
OPENAI_API_KEY=your_openai_api_key_here
TAVILY_API_KEY=your_tavily_api_key_hereGet your API keys:
- OpenAI: https://platform.openai.com/api-keys
- Tavily: https://tavily.com/
- Create your CV file
Create a cv.txt file with your CV content:
cp cv.example.txt cv.txt
# Edit cv.txt with your informationRun the job matching system:
python main.pyThe system will:
- Read your CV from
cv.txt - Search for "machine learning engineer" jobs in "San Francisco"
- Analyze each job against your CV
- Provide ranked matches with recommendations
Edit main.py to change search parameters:
# Define search parameters
job_query = "data scientist" # Change job title
location = "New York" # Change location- Manages overall workflow
- Coordinates between worker agents
- Maintains in-memory state
- Provides execution logs
- ReAct agent with Tavily search tool
- Filters results from job boards
- Returns structured job data
- Handles search errors gracefully
- Analyzes CV-job compatibility
- Provides match scores (0-100)
- Lists matching skills
- Identifies missing requirements
- Offers actionable recommendations
STARTING JOB MATCHING WORKFLOW
================================================================================
[Supervisor] Step 1: Storing CV in state...
[Supervisor] Step 2: Delegating job search to JobRetriever...
[Supervisor] Query: machine learning engineer, Location: San Francisco
[Supervisor] Retrieved 5 job postings
[Supervisor] Step 3: Delegating CV analysis to CVAnalyst...
WORKFLOW COMPLETED
================================================================================
RESULTS SUMMARY
================================================================================
Jobs Found: 5
MATCH ANALYSIS
--------------------------------------------------------------------------------
Job Rankings:
1. Senior ML Engineer at TechCorp (Match: 85/100)
✓ Matching: Python, TensorFlow, Production ML
✗ Missing: Kubernetes experience
→ Strong match - apply immediately
2. Data Scientist at StartupXYZ (Match: 72/100)
...
Each agent can be tested independently:
# Test Job Retriever
python agents/job_retriever_agent.py
# Test CV Analyst
python agents/cv_analyst_agent.py
# Test Supervisor
python agents/supervisor_agent.py- langchain
- langchain-openai
- tavily-python
- python-dotenv
- openai
See requirements.txt for specific versions.
Contributions are welcome! Feel free to:
- Add new job search sources
- Improve matching algorithms
- Add more worker agents
- Enhance state management
MIT License - feel free to use this project for your job search!
- Never commit your
cv.txtor.envfiles - Keep your API keys secure
- This system processes data locally (CV analysis happens via API calls)
- Add more job boards (Monster, ZipRecruiter)
- Implement persistent state (SQLite/Redis)
- Add resume optimization suggestions
- Create web interface
- Add email notifications for new matches
- Support multiple CV formats (PDF, DOCX)
Questions? Open an issue or reach out!
Happy job hunting! 🎯