This project logs into LinkedIn and searches for jobs using information retrieved from Google Sheets.
- Reads login credentials and filters from Google Sheets (e.g., job title, location...).
- Opens a Chrome browser using Selenium.
- Logs into LinkedIn.
- Searches for jobs using the specified filters.
- Can be modified later to automatically apply or save results.
LinkedInJobBot/
├── src/
│ └── main/
│ ├── java/
│ │ └── com/
│ │ └── linkedinjobbot/
│ │ ├── App.java
│ │ ├── FilterData.java
│ │ ├── GoogleSheetsService.java
│ │ ├── LinkedInJobSearcher.java
│ │ ├── auth/
│ │ │ └── LinkedInAuthenticator.java
│ │ ├── driver/
│ │ │ └── WebDriverManager.java
│ │ └── filters/
│ │ ├── LinkedInJobFilterApplier.java
│ │ └── actions/
│ │ └── ClickFilterButtonAction.java
│ └── resources/
│ └── careerpilot-sheets-c4624e233bec.json # Google Service Account credentials file
├── pom.xml # Maven project settings
├── .gitignore # Files to ignore when uploading the project
└── README.md # This file
- Java 21
- Maven
- Google Service Account with read permissions for Google Sheets
careerpilot-sheets-c4624e233bec.jsonfile placed insidesrc/main/resources/- ChromeDriver installed on your machine (compatible with your Google Chrome version)
# Build the project
mvn clean install
# Run the application
mvn exec:java -Dexec.mainClass="com.linkedinjobbot.App"
🛡️ Security
CRUCIAL: Ensure that your careerpilot-sheets-c4624e233bec.json file is NEVER uploaded to GitHub. It has been added to .gitignore for this reason.
Additionally, LinkedIn login credentials (email and password) should be set as environment variables (LINKEDIN_EMAIL and LINKEDIN_PASSWORD) on your local machine for enhanced security, and not hardcoded or stored in the Google Sheet you share.
📌 Notes
You can modify SPREADSHEET_ID and RANGE inside GoogleSheetsService.java to change the data source.
The application includes waits for LinkedIn page elements to load. You can further optimize these using WebDriverWait for more robust page interactions.
✨ Future Development Ideas
Saving search results to a CSV file (already implemented).
Sending notifications via Telegram or Email.
Supporting daily automated runs via Cron Job or Scheduled Task.
Analyzing job search results.
Integrating with n8n for workflow automation.
Automated job application.
CV tailoring to match job descriptions.
👨💻 Developed By Ali Al-Jalo
This is a personal project aimed at automating LinkedIn job applications using Java, Google Sheets, and Selenium.