Go to file
2024-09-03 00:27:54 +02:00
assets Enhance README with improved branding, social links, email, and clearer messaging. 2024-08-27 21:03:02 +05:00
data_folder config yaml file with default openai gpt freely hosted 2024-09-01 21:16:02 +02:00
data_folder_example Added support for ollama endpoint and defining the LLM model in the config 2024-08-31 22:58:40 +02:00
src Added instructions toDo; about apply method 2024-09-03 00:27:54 +02:00
.gitignore final 2024-08-23 22:20:48 +01:00
LICENSE Rename LICENZE to LICENSE 2024-08-06 23:37:35 +01:00
main.py Added support for ollama endpoint and defining the LLM model in the config 2024-08-31 22:58:40 +02:00
README.md Merge branch 'v3' into v3 2024-09-02 14:27:29 +02:00
requirements.txt Merge branch 'v3' into v3 2024-09-02 14:27:29 +02:00

LinkedIn Gmail

LinkedIn_AIHawk

🤖🔍 Your AI-powered job search assistant. Automate applications, get personalized recommendations, and land your dream job faster.


🚀 Join the AIHawk Community 🚀

Connect with like-minded individuals and get the most out of AIHawk.

💡 Get support: Ask questions, troubleshoot issues, and find solutions.

🗣️ Share knowledge: Share your experiences, tips, and best practices.

🤝 Network: Connect with other professionals and explore new opportunities.

🔔 Stay updated: Get the latest news and updates on AIHawk.

Join Now 👇

Telegram

Table of Contents

  1. Introduction
  2. Features
  3. Installation
  4. Configuration
  5. Usage
  6. Documentation
  7. Troubleshooting
  8. Conclusion
  9. Contributors
  10. License
  11. Disclaimer

Introduction

LinkedIn_AIHawk is a cutting-edge, automated tool designed to revolutionize the job search and application process on LinkedIn. In today's fiercely competitive job market, where opportunities can vanish in the blink of an eye, this program offers job seekers a significant advantage. By leveraging the power of automation and artificial intelligence, LinkedIn_AIHawk enables users to apply to a vast number of relevant positions efficiently and in a personalized manner, maximizing their chances of landing their dream job.

The Challenge of Modern Job Hunting

In the digital age, the job search landscape has undergone a dramatic transformation. While online platforms like LinkedIn have opened up a world of opportunities, they have also intensified competition. Job seekers often find themselves spending countless hours scrolling through listings, tailoring applications, and repetitively filling out forms. This process can be not only time-consuming but also emotionally draining, leading to job search fatigue and missed opportunities.

Enter LinkedIn_AIHawk: Your Personal Job Search Assistant

LinkedIn_AIHawk steps in as a game-changing solution to these challenges. It's not just a tool; it's your tireless, 24/7 job search partner. By automating the most time-consuming aspects of the job search process, it allows you to focus on what truly matters - preparing for interviews and developing your professional skills.

Features

  1. Intelligent Job Search Automation

    • Customizable search criteria
    • Continuous scanning for new openings
    • Smart filtering to exclude irrelevant listings
  2. Rapid and Efficient Application Submission

    • One-click applications using LinkedIn's "Easy Apply" feature
    • Form auto-fill using your profile information
    • Automatic document attachment (resume, cover letter)
  3. AI-Powered Personalization

    • Dynamic response generation for employer-specific questions
    • Tone and style matching to fit company culture
    • Keyword optimization for improved application relevance
  4. Volume Management with Quality

    • Bulk application capability
    • Quality control measures
    • Detailed application tracking
  5. Intelligent Filtering and Blacklisting

    • Company blacklist to avoid unwanted employers
    • Title filtering to focus on relevant positions
  6. Dynamic Resume Generation

    • Automatically creates tailored resumes for each application
    • Customizes resume content based on job requirements
  7. Secure Data Handling

    • Manages sensitive information securely using YAML files

Installation

Please watch this video to set up your LinkedIn_AIHawk: How to set up LinkedIn_AIHawk - https://youtu.be/gdW9wogHEUM 0. Confirmed succesfull runs OSs & Python: Python 3.10, 3.11.9(64b), 3.12.5(64b) . Windows 10, Ubuntu 22

  1. Download and Install Python:

    Ensure you have the last Python version installed. If not, download and install it from Python's official website. For detailed instructions, refer to the tutorials:

  2. Download and Install Google Chrome:

    • Download and install the latest version of Google Chrome in its default location from the official website.
  3. Clone the repository:

    git clone https://github.com/feder-cr/LinkedIn_AIHawk_automatic_job_application
    cd LinkedIn_AIHawk_automatic_job_application
    
  4. Activate virtual environment:

    python3 -m venv virtual
    
    source virtual/bin/activate
    
  5. Install the required packages:

    pip install -r requirements.txt
    

Configuration

1. secrets.yaml

This file contains sensitive information. Never share or commit this file to version control.

  • email: [Your LinkedIn email]
    • Replace with your LinkedIn account email address
  • password: [Your LinkedIn password]
    • Replace with your LinkedIn account password
  • llm_api_key: [Your OpenAI or Ollama API key]

2. config.yaml

This file defines your job search parameters and bot behavior. Each section contains options that you can customize:

  • remote: [true/false]

    • Set to true to include remote jobs, false to exclude them
  • experienceLevel:

    • Set desired experience levels to true, others to false
  • jobTypes:

    • Set desired job types to true, others to false
  • date:

    • Choose one time range for job postings by setting it to true, others to false
  • positions:

    • List job titles you're interested in, one per line
    • Example:
      positions:
        - Software Developer
        - Data Scientist
      
  • locations:

    • List locations you want to search in, one per line
    • Example:
      locations:
        - Italy
        - London
      
  • distance: [number]

    • Set the radius for your job search in miles
    • Example: distance: 50
  • companyBlacklist:

    • List companies you want to exclude from your search, one per line
    • Example:
      companyBlacklist:
        - Company X
        - Company Y
      
  • titleBlacklist:

    • List keywords in job titles you want to avoid, one per line
    • Example:
      titleBlacklist:
        - Sales
        - Marketing
      

2.1 config.yaml - Customize LLM model endpoint

3. plain_text_resume.yaml

This file contains your resume information in a structured format. Fill it out with your personal details, education, work experience, and skills. This information is used to auto-fill application forms and generate customized resumes.

Each section has specific fields to fill out:

  • personal_information:

    • This section contains basic personal details to identify yourself and provide contact information.
      • name: Your first name.
      • surname: Your last name or family name.
      • date_of_birth: Your birth date in the format DD/MM/YYYY.
      • country: The country where you currently reside.
      • city: The city where you currently live.
      • address: Your full address, including street and number.
      • phone_prefix: The international dialing code for your phone number (e.g., +1 for the USA, +44 for the UK).
      • phone: Your phone number without the international prefix.
      • email: Your primary email address.
      • github: URL to your GitHub profile, if applicable.
      • linkedin: URL to your LinkedIn profile, if applicable.
    • Example
    personal_information:
      name: "Jane"
      surname: "Doe"
      date_of_birth: "01/01/1990"
      country: "USA"
      city: "New York"
      address: "123 Main St"
      phone_prefix: "+1"
      phone: "5551234567"
      email: "jane.doe@example.com"
      github: "https://github.com/janedoe"
      linkedin: "https://www.linkedin.com/in/janedoe/"
    
  • education_details:

    • This section outlines your academic background, including degrees earned and relevant coursework.

      • degree: The type of degree obtained (e.g., Bachelor's Degree, Master's Degree).
      • university: The name of the university or institution where you studied.
      • gpa: Your Grade Point Average or equivalent measure of academic performance.
      • graduation_year: The year you graduated.
      • field_of_study: The major or focus area of your studies.
      • exam: A list of courses or subjects taken along with their respective grades.
    • Example:

    education_details:
      - degree: "Bachelor's Degree"
        university: "University of Example"
        gpa: "3.8/4"
        graduation_year: "2022"
        field_of_study: "Software Engineering"
        exam:
          Algorithms: "A"
          Data Structures: "B+"
          Database Systems: "A"
          Operating Systems: "A-"
          Web Development: "B"
    
  • experience_details:

    • This section details your work experience, including job roles, companies, and key responsibilities.

      • position: Your job title or role.
      • company: The name of the company or organization where you worked.
      • employment_period: The timeframe during which you were employed in the role (e.g., MM/YYYY - MM/YYYY).
      • location: The city and country where the company is located.
      • industry: The industry or field in which the company operates.
      • key_responsibilities: A list of major responsibilities or duties you had in the role.
      • skills_acquired: Skills or expertise gained through this role.
    • Example:

    experience_details:
      - position: "Software Developer"
        company: "Tech Innovations Inc."
        employment_period: "06/2021 - Present"
        location: "San Francisco, CA"
        industry: "Technology"
        key_responsibilities:
          - "Developed web applications using React and Node.js"
          - "Collaborated with cross-functional teams to design and implement new features"
          - "Troubleshot and resolved complex software issues"
        skills_acquired:
          - "React"
          - "Node.js"
          - "Software Troubleshooting"
    
  • projects:

    • Include notable projects you have worked on, including personal or professional projects.

      • name: The name or title of the project.
      • description: A brief summary of what the project involves or its purpose.
      • link: URL to the project, if available (e.g., GitHub repository, website).
    • Example:

    projects:
      - name: "Weather App"
        description: "A web application that provides real-time weather information using a third-party API."
        link: "https://github.com/janedoe/weather-app"
      - name: "Task Manager"
        description: "A task management tool with features for tracking and prioritizing tasks."
        link: "https://github.com/janedoe/task-manager"
    
  • achievements:

    • Highlight notable accomplishments or awards you have received.

      • name: The title or name of the achievement.
      • description: A brief explanation of the achievement and its significance.
    • Example:

    achievements:
      - name: "Employee of the Month"
        description: "Recognized for exceptional performance and contributions to the team."
      - name: "Hackathon Winner"
        description: "Won first place in a national hackathon competition."
    
  • certifications:

    • Include any professional certifications you have earned.

      • certification_name: The name of the certification.
    • Example:

    certifications:
      - "Certified Scrum Master"
      - "AWS Certified Solutions Architect"
    
  • languages:

    • Detail the languages you speak and your proficiency level in each.

      • language: The name of the language.
      • proficiency: Your level of proficiency (e.g., Native, Fluent, Intermediate).
    • Example:

    languages:
      - language: "English"
        proficiency: "Fluent"
      - language: "Spanish"
        proficiency: "Intermediate"
    
  • interests:

    • Mention your professional or personal interests that may be relevant to your career.

      • interest: A list of interests or hobbies.
    • Example:

    interests:
      - "Machine Learning"
      - "Cybersecurity"
      - "Open Source Projects"
      - "Digital Marketing"
      - "Entrepreneurship"
    
  • availability:

    • State your current availability or notice period.

      • notice_period: The amount of time required before you can start a new role (e.g., "2 weeks", "1 month").
    • Example:

    availability:
      notice_period: "2 weeks"
    
  • salary_expectations:

    • Provide your expected salary range.

      • salary_range_usd: The salary range you are expecting, expressed in USD.
    • Example:

    salary_expectations:
      salary_range_usd: "80000 - 100000"
    
  • self_identification:

    • Provide information related to personal identity, including gender and pronouns.

      • gender: Your gender identity.
      • pronouns: The pronouns you use (e.g., He/Him, She/Her, They/Them).
      • veteran: Your status as a veteran (e.g., Yes, No).
      • disability: Whether you have a disability (e.g., Yes, No).
      • ethnicity: Your ethnicity.
    • Example:

    self_identification:
      gender: "Female"
      pronouns: "She/Her"
      veteran: "No"
      disability: "No"
      ethnicity: "Asian"
    
  • legal_authorization:

    • Indicate your legal ability to work in various locations.

      • eu_work_authorization: Whether you are authorized to work in the European Union (Yes/No).
      • us_work_authorization: Whether you are authorized to work in the United States (Yes/No).
      • requires_us_visa: Whether you require a visa to work in the US (Yes/No).
      • requires_us_sponsorship: Whether you require sponsorship to work in the US (Yes/No).
      • requires_eu_visa: Whether you require a visa to work in the EU (Yes/No).
      • legally_allowed_to_work_in_eu: Whether you are legally allowed to work in the EU (Yes/No).
      • legally_allowed_to_work_in_us: Whether you are legally allowed to work in the US (Yes/No).
      • requires_eu_sponsorship: Whether you require sponsorship to work in the EU (Yes/No).
    • Example:

      legal_authorization:
        eu_work_authorization: "Yes"
        us_work_authorization: "No"
        requires_us_visa: "Yes"
        requires_us_sponsorship: "Yes"
        requires_eu_visa: "No"
        legally_allowed_to_work_in_eu: "Yes"
        legally_allowed_to_work_in_us: "No"
        requires_eu_sponsorship: "No"
      
  • work_preferences:

    • Specify your preferences for work arrangements and conditions.

      • remote_work: Whether you are open to remote work (Yes/No).
      • in_person_work: Whether you are open to in-person work (Yes/No).
      • open_to_relocation: Whether you are willing to relocate for a job (Yes/No).
      • willing_to_complete_assessments: Whether you are willing to complete job assessments (Yes/No).
      • willing_to_undergo_drug_tests: Whether you are willing to undergo drug testing (Yes/No).
      • willing_to_undergo_background_checks: Whether you are willing to undergo background checks (Yes/No).
    • Example:

    work_preferences:
      remote_work: "Yes"
      in_person_work: "No"
      open_to_relocation: "Yes"
      willing_to_complete_assessments: "Yes"
      willing_to_undergo_drug_tests: "No"
      willing_to_undergo_background_checks: "Yes"
    

PLUS. data_folder_example

The data_folder_example folder contains a working example of how the files necessary for the bot's operation should be structured and filled out. This folder serves as a practical reference to help you correctly set up your work environment for the LinkedIn job search bot.

Contents

Inside this folder, you'll find example versions of the key files:

  • secrets.yaml
  • config.yaml
  • plain_text_resume.yaml

These files are already populated with fictitious but realistic data. They show you the correct format and type of information to enter in each file.

Usage

Using this folder as a guide can be particularly helpful for:

  1. Understanding the correct structure of each configuration file
  2. Seeing examples of valid data for each field
  3. Having a reference point while filling out your personal files

Usage

  1. LinkedIn language To ensure the bot works, your LinkedIn language must be set to English.

  2. Data Folder: Ensure that your data_folder contains the following files:

    • secrets.yaml
    • config.yaml
    • plain_text_resume.yaml
  3. Run the Bot:

    LinkedIn_AIHawk offers flexibility in how it handles your pdf resume:

  • Dynamic Resume Generation: If you don't use the --resume option, the bot will automatically generate a unique resume for each application. This feature uses the information from your plain_text_resume.yaml file and tailors it to each specific job application, potentially increasing your chances of success by customizing your resume for each position.
    python main.py
    
  • Using a Specific Resume: If you want to use a specific PDF resume for all applications, place your resume PDF in the data_folder directory and run the bot with the --resume option:
    python main.py --resume /path/to/your/resume.pdf
    

Troubleshooting Common Issues

1. OpenAI API Rate Limit Errors

Error Message:

openai.RateLimitError: Error code: 429 - {'error': {'message': 'You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: https://platform.openai.com/docs/guides/error-codes/api-errors.', 'type': 'insufficient_quota', 'param': None, 'code': 'insufficient_quota'}}

Solution:

  • Check your OpenAI API billing settings at https://platform.openai.com/account/billing
  • Ensure you have added a valid payment method to your OpenAI account
  • Note that ChatGPT Plus subscription is different from API access
  • If you've recently added funds or upgraded, wait 12-24 hours for changes to take effect
  • Free tier has a 3 RPM limit; spend at least $5 on API usage to increase

2. LinkedIn Easy Apply Button Not Found

Error Message:

Exception: No clickable 'Easy Apply' button found

Solution:

  • Ensure that you're logged into LinkedIn properly
  • Check if the job listings you're targeting actually have the "Easy Apply" option
  • Verify that your search parameters in the config.yaml file are correct and returning jobs with the "Easy Apply" button
  • Try increasing the wait time for page loading in the script to ensure all elements are loaded before searching for the button

3. Incorrect Information in Job Applications

Issue: Bot provides inaccurate data for experience, CTC, and notice period

Solution:

  • Update prompts for professional experience specificity
  • Add fields in config.yaml for current CTC, expected CTC, and notice period
  • Modify bot logic to use these new config fields

4. YAML Configuration Errors

Error Message:

yaml.scanner.ScannerError: while scanning a simple key

Solution:

  • Copy example config.yaml and modify gradually
  • Ensure proper YAML indentation and spacing
  • Use a YAML validator tool
  • Avoid unnecessary special characters or quotes

5. Bot Logs In But Doesn't Apply to Jobs

Issue: Bot searches for jobs but continues scrolling without applying

Solution:

  • Check for security checks or CAPTCHAs
  • Verify config.yaml job search parameters
  • Ensure your LinkedIn profile meets job requirements
  • Review console output for error messages

General Troubleshooting Tips

  • Use the latest version of the script
  • Verify all dependencies are installed and updated
  • Check internet connection stability
  • Use VPNs cautiously to avoid triggering LinkedIn security
  • Clear browser cache and cookies if issues persist

For further assistance, please create an issue on the GitHub repository with detailed information about your problem, including error messages and your configuration (with sensitive information removed).

Additional Resources

If you encounter any issues, you can open an issue on GitHub. Please add valuable details to the subject and to the description. If you need new feature then please reflect this.
I'll be more than happy to assist you!

Conclusion

LinkedIn_AIHawk provides a significant advantage in the modern job market by automating and enhancing the job application process. With features like dynamic resume generation and AI-powered personalization, it offers unparalleled flexibility and efficiency. Whether you're a job seeker aiming to maximize your chances of landing a job, a recruiter looking to streamline application submissions, or a career advisor seeking to offer better services, LinkedIn_AIHawk is an invaluable resource. By leveraging cutting-edge automation and artificial intelligence, this tool not only saves time but also significantly increases the effectiveness and quality of job applications in today's competitive landscape.

Contributors

LinkedIn_AIHawk is still in beta, and your feedback, suggestions, and contributions are highly valued. Feel free to open issues, suggest enhancements, or submit pull requests to help improve the project. Let's work together to make LinkedIn_AIHawk an even more powerful tool for job seekers worldwide.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Disclaimer

LinkedIn_AIHawk is developed for educational purposes only. The creator does not assume any responsibility for its use. Users should ensure they comply with LinkedIn's terms of service, any applicable laws and regulations, and ethical considerations when using this tool. The use of automated tools for job applications may have implications on user accounts, and caution is advised.