JobFinder is a powerful, LangGraph-driven conversational agent designed to streamline your job search. By combining the reasoning capabilities of LLMs with specialized scrapers for major job boards, JobFinder automates the tedious process of finding and filtering job listings based on your specific requirements.
- 🗣️ Conversational Interface: Provide your job preferences (profile, location, experience, etc.) in natural language.
- 🧠 LLM-Powered Parsing: Automatically extracts and structures your requirements using advanced language models.
- 🔍 Multi-Source Scraping: Fetches the latest job listings from Naukri and Hirist.
- 🔄 Intelligent Workflow: Managed by LangGraph, ensuring a robust, state-managed execution flow with human-in-the-loop capabilities.
- 💾 Persistent Sessions: Uses Redis to save search states and thread history, allowing you to resume searches anytime.
- 📊 Refined Results: Automatically cleanses, sorts, and formats job data for easy reading.
- Core: Python 3.12+
- Orchestration: LangGraph
- AI Framework: LangChain & OpenAI SDK
- Database: Redis (for state check-pointing)
- Scraping:
requests,cloudscraper - Environment:
python-dotenv
- Python 3.12 or higher.
- A running Redis instance.
- API Access for your preferred LLM (OpenAI-compatible).
-
Clone the repository:
git clone <repository-url> cd JobFinder
-
Install dependencies: It is recommended to use
uvfor lightning-fast dependency management:uv sync
Or using pip:
pip install -r requirements.txt
-
Configure Environment Variables: Create a
.envfile in the root directory and add the following:# LLM Configuration OPENAI_API_KEY=your_openai_api_key OPENAI_MODEL=gpt-4o # or your preferred model OPENAI_BASE_URL=https://api.openai.com/v1 # Optional # Database Configuration REDIS_URI=redis://localhost:6379 # Scraper-Specific Config (if required) NAUKRI_NKPARAM=your_naukri_nkparam
Launch the main script to start the conversational search process:
python main.pyThe agent follows a structured graph-based workflow:
- Initialise: Sets up the agent state.
- Collect Requirements: Greets the user and asks for job preferences.
- Prepare Query: LLM generates optimized search queries for different platforms.
- Scrape Jobs: Multi-board parallelized scraping (Naukri, Hirist).
- Refine Data: Cleans and sorts job postings based on relevance and experience.
- Format & Share: Presents the curated list to the user.
(You can find the workflow diagram in graph_xray.png)
main.py: The entry point and LangGraph workflow definition.scraper.py: Contains specialized classes for scraping Naukri and Hirist.utils.py: Utility functions for LLM interaction and data parsing.pyproject.toml: Dependency management viauv.
Made with ❤️ for developers searching for their next adventure.