This project is a Job Matching System designed to recommend internship and job opportunities for described profile. The system leverages LinkedIn job scraping, LLM-based job analysis (e.g., Google Gemini), and Telegram notifications to provide tailored job recommendations.
- LinkedIn Job Scraper: Scrapes job postings from LinkedIn using Selenium.
- LLM Integration: Supports multiple AI clients (e.g., Google Gemini, OpenAI) for analyzing job descriptions and matching them to the candidate's profile.
- Telegram Notifications: Sends job recommendations directly to a Telegram chat.
- Dynamic Client Support: Easily extendable to support additional AI clients.
- Customizable Matching Criteria: Define specific criteria for job matching based on location, skills, and job type.
.
├── ai_client/
│ ├── base.py # Base class for AI clients
│ ├── gemini_client.py # Google Gemini client implementation
│ ├── openai_client.py # OpenAI client implementation
├── config/
│ ├── config.py # Configuration for environment variables
├── notification/
│ ├── telegram.py # Telegram notification system
├── prompt/
│ ├── prompts.py # Prompt generation for LLMs
├── scraper/
│ ├── scrape.py # LinkedIn job scraper
├── templates/
│ ├── job_info.md # Template for Telegram messages
├── main.py # Entry point for the application
├── requirements.txt # Python dependencies
└── README.md # Project documentation
- Python 3.9 or higher
- Google Chrome browser
- ChromeDriver (compatible with your Chrome version)
- LinkedIn account credentials
- Telegram bot token and chat ID
- Google Gemini API key (or OpenAI API key if using OpenAI)
-
Install dependencies:
pip install -r requirements.txt
-
Set up environment variables: Create a
.envfile in the root directory with the following content:LINKEDIN_USERNAME=your_email LINKEDIN_PASSWORD=your_password TELEGRAM_ACCESS_TOKEN=your_telegram_bot_token TELEGRAM_CHAT_ID=your_telegram_chat_id GOOGLE_API_KEY=your_google_gemini_api_key -
Download and set up ChromeDriver:
- Download ChromeDriver compatible with your Chrome version.
- Add the ChromeDriver executable to your system's PATH.
-
Run the application:
python -m main
-
The system will:
- Log in to LinkedIn and scrape job postings (headless request through selenium).
- Analyze job descriptions using the configured AI client.
- Send job recommendations to your Telegram chat.
To add support for a new AI client:
- Create a new class in the
ai_client/directory that inherits fromBaseClient. - Implement the
get_job_detailsmethod with the logic for the new client. - Update the
get_llm_clientinmain.pyto include the new client.
Modify the prompts.py file in the prompt/ directory to customize the instructions, criteria, and output format for job matching.
Contributions are welcome! Please open an issue or submit a pull request for any improvements or bug fixes.
This project is licensed under the MIT License. See the LICENSE file for details.