diff --git a/.gitignore b/.gitignore index 21ead07..4e73720 100644 --- a/.gitignore +++ b/.gitignore @@ -6,11 +6,8 @@ test* openaiSelenium* open_ai_calls.json _* -data_folder* .venv generated_cv* -resume.html .vscode chrome_profile -lib* answers.json diff --git a/README.md b/README.md index 05ac37e..4004be7 100644 --- a/README.md +++ b/README.md @@ -175,55 +175,281 @@ This file contains your resume information in a structured format. Fill it out w Each section has specific fields to fill out: -- `personal_information:` - - Contains basic personal details - - Example: `name: "John Doe"` +#### Personal Information -- `self_identification:` - - Optional demographic information - - Example: `gender: "Male"` +##### Description +This section contains basic personal details to identify yourself and provide contact information. -- `legal_authorization:` - - Work authorization status - - Use `true` or `false` for each field - - Example: `usWorkAuthorization: true` +- **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. -- `work_preferences:` - - Your work-related preferences - - Use `true` or `false` for each field - - Example: `remoteWork: true` +##### Example +```yaml +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:` - - List your educational background - - Include degree, university, GPA, graduation year, field of study, and skills acquired - - Example: - ```yaml - - degree: "Bachelor's" - university: "University of Example" - gpa: "3.8" - graduationYear: "2022" - fieldOfStudy: "Computer Science" - skillsAcquired: - problemSolving: "4" - ``` +#### Education Details -- `experience_details:` - - List your work experiences - - Include position, company, employment period, location, industry, key responsibilities, and skills acquired - - Example: - ```yaml - - position: "Software Developer" - company: "Tech Corp" - employmentPeriod: "Jan 2020 - Present" - location: "San Francisco, USA" - industry: "Technology" - keyResponsibilities: - responsibility1: "Developed web applications using React" - skillsAcquired: - adaptability: "3" - ``` +##### Description +This section outlines your academic background, including degrees earned and relevant coursework. -- Other sections like `projects`, `availability`, `salary_expectations`, `certifications`, `skills`, `languages`, and `interests` follow a similar format, with each item on a new line. +- **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 +```yaml +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 + +##### Description +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 +```yaml +experience_details: + - position: "Software Developer" + company: "Tech Innovations Inc." + employment_period: "06/2021 - Present" + location: "San Francisco, CA" + industry: "Technology" + key_responsibilities: + - responsibility_1: "Developed web applications using React and Node.js" + - responsibility_2: "Collaborated with cross-functional teams to design and implement new features" + - responsibility_3: "Troubleshot and resolved complex software issues" + skills_acquired: + - "React" + - "Node.js" + - "Software Troubleshooting" +``` + +#### Projects + +##### Description +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 +```yaml +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 + +##### Description +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 +```yaml +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 + +##### Description +Include any professional certifications you have earned. + +- **certification_name**: The name of the certification. + +##### Example +```yaml +certifications: + - "Certified Scrum Master" + - "AWS Certified Solutions Architect" +``` + +#### Languages + +##### Description +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 +```yaml +languages: + - language: "English" + proficiency: "Fluent" + - language: "Spanish" + proficiency: "Intermediate" +``` + +#### Interests + +##### Description +Mention your professional or personal interests that may be relevant to your career. + +- **interest**: A list of interests or hobbies. + +##### Example +```yaml +interests: + - "Machine Learning" + - "Cybersecurity" + - "Open Source Projects" + - "Digital Marketing" + - "Entrepreneurship" +``` + +#### Availability + +##### Description +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 +```yaml +availability: + notice_period: "2 weeks" +``` + +#### Salary Expectations + +##### Description +Provide your expected salary range. + +- **salary_range_usd**: The salary range you are expecting, expressed in USD. + +##### Example +```yaml +salary_expectations: + salary_range_usd: "80000 - 100000" +``` + +#### Self-Identification + +##### Description +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 +```yaml +self_identification: + gender: "Female" + pronouns: "She/Her" + veteran: "No" + disability: "No" + ethnicity: "Asian" +``` + +#### Legal Authorization + +##### Description +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 +```yaml +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 + +##### Description +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 +```yaml +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 @@ -247,7 +473,6 @@ Using this folder as a guide can be particularly helpful for: 2. Seeing examples of valid data for each field 3. Having a reference point while filling out your personal files -#### Important Note ## Usage 0. **LinkedIn language** @@ -276,7 +501,7 @@ Using this folder as a guide can be particularly helpful for: ## Documentation -For detailed information on each component and their respective roles, please refer to the [Documentation](documentation.md) file. +TODO ): ## Troubleshooting @@ -292,7 +517,7 @@ LinkedIn_AIHawk provides a significant advantage in the modern job market by aut ## Contributors -- [feder-cr](https://github.com/feder-cr/) - Creator and Maintainer +- [feder-cr](https://github.com/feder-cr) - Creator and Lead Developer 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. diff --git a/data_folder/config.yaml b/data_folder/config.yaml index ca23ac6..58a6f1c 100644 --- a/data_folder/config.yaml +++ b/data_folder/config.yaml @@ -1,40 +1,42 @@ -remote: true +remote: [true/false] experienceLevel: - internship: true - entry: false - associate: true - mid-senior level: false - director: true - executive: false + internship: [true/false] + entry: [true/false] + associate: [true/false] + mid-senior level: [true/false] + director: [true/false] + executive: [true/false] jobTypes: - full-time: true - contract: false - part-time: false - temporary: true - internship: false - other: false - volunteer: true + full-time: [true/false] + contract: [true/false] + part-time: [true/false] + temporary: [true/false] + internship: [true/false] + other: [true/false] + volunteer: [true/false] date: - all time: false - month: true - week: false - 24 hours: true + all time: [true/false] + month: [true/false] + week: [true/false] + 24 hours: [true/false] positions: - - Software Enginner ML - + - position1 + - position2 locations: - - USA + - Country1 + - Country2 distance: 100 companyBlacklist: - - Noir - - Crossover + - Company1 + - Company2 titleBlacklist: - - diocane + - word1 + - word2 \ No newline at end of file diff --git a/data_folder/plain_text_resume.yaml b/data_folder/plain_text_resume.yaml index c0ad978..aabcee4 100644 --- a/data_folder/plain_text_resume.yaml +++ b/data_folder/plain_text_resume.yaml @@ -1,133 +1,101 @@ personal_information: - name: "Liam" - surname: "Murphy" - date_of_birth: "15/08/1995" - country: "Ireland" - city: "Galway" - address: "Galway City Center" - phone_prefix: "+353" - phone: "871234567" - email: "liam.murphy@gmail.com" - github: "https://github.com/liam-murphy" - linkedin: "https://www.linkedin.com/in/liam-murphy/" - + name: "[Your Name]" + surname: "[Your Surname]" + date_of_birth: "[DD/MM/YYYY]" + country: "[Your Country]" + city: "[Your City]" + address: "[Your Address]" + phone_prefix: "[Your Phone Prefix]" + phone: "[Your Phone Number]" + email: "[Your Email Address]" + github: "[Your GitHub Profile URL]" + linkedin: "[Your LinkedIn Profile URL]" + education_details: - - degree: "Bachelor's Degree" - university: "National University of Ireland, Galway" - gpa: "4/4" - graduation_year: "2020" - field_of_study: "Computer Science" + - degree: "[Your Degree]" + university: "[Your University]" + gpa: "[Your GPA]" + graduation_year: "[Year of Graduation]" + field_of_study: "[Your Field of Study]" exam: - Information Theory and Inference: "4" - Algorithm Analysis and Design: "4" - Object-Oriented Languages and Programming: "4" - Linear Algebra and Numerical Analysis: "4" - Database: "4" + [Course Name 1]: "[Grade]" + [Course Name 2]: "[Grade]" + [Course Name 3]: "[Grade]" + [Course Name 4]: "[Grade]" + [Course Name 5]: "[Grade]" experience_details: - - position: "Co-Founder & Software Engineer" - company: "CryptoWave Solutions" - employment_period: "03/2021 - Present" - location: "Ireland" - industry: "Blockchain Technology" + - position: "[Your Job Title]" + company: "[Company Name]" + employment_period: "[Start Date] - [End Date]" + location: "[Location]" + industry: "[Industry]" key_responsibilities: - - responsibility_1: "Co-founded and led a startup specializing in app and software development with a focus on blockchain technology" - - responsibility_2: "Provided blockchain consultations for 10+ companies, enhancing their software capabilities with secure, decentralized solutions" - - responsibility_3: "Developed blockchain applications, integrated cutting-edge technology to meet client needs and drive industry innovation" + - responsibility_1: "[Key Responsibility 1]" + - responsibility_2: "[Key Responsibility 2]" + - responsibility_3: "[Key Responsibility 3]" skills_acquired: - - "Blockchain development" - - "Software engineering" - - "Consultancy" - - - position: "Research Intern" - company: "National University of Ireland, Galway" - employment_period: "11/2022 - 03/2023" - location: "Galway, Ireland" - industry: "IoT Security Research" - key_responsibilities: - - responsibility_1: "Conducted in-depth research on IoT security, focusing on binary instrumentation and runtime monitoring" - - responsibility_2: "Performed in-depth study of the MQTT protocol and Falco" - - responsibility_3: "Developed multiple software components including MQTT packet analysis library, Falco adapter, and RML monitor in Prolog" - - responsibility_4: "Authored thesis 'Binary Instrumentation for Runtime Monitoring of Internet of Things Systems Using Falco'" - skills_acquired: - - "IoT security" - - "Binary instrumentation" - - "MQTT protocol" - - "Prolog programming" - - - position: "Software Engineer" - company: "University Hospital Galway" - employment_period: "05/2022 - 11/2022" - location: "Galway, Ireland" - industry: "Healthcare IT" - key_responsibilities: - - responsibility_1: "Integrated and enforced robust security protocols" - - responsibility_2: "Developed and maintained a critical software tool for password validation used by over 1,600 employees" - - responsibility_3: "Played an integral role in the hospital's cybersecurity team" - skills_acquired: - - "Cybersecurity" - - "Software development" - - "Password validation" + - "[Skill 1]" + - "[Skill 2]" + - "[Skill 3]" projects: - - name: "JobBot" - description: "AI-driven tool to automate and personalize job applications on LinkedIn, gained over 3000 stars on GitHub, improving efficiency and reducing application time" - link: "https://github.com/liam-murphy/jobbot" - - name: "mqtt-packet-parser" - description: "Developed a Node.js module for parsing MQTT packets, improved parsing efficiency by 40%" - link: "https://github.com/liam-murphy/mqtt-packet-parser" + - name: "[Project Name]" + description: "[Brief Description of the Project]" + link: "[Project URL]" + - name: "[Project Name]" + description: "[Brief Description of the Project]" + link: "[Project URL]" achievements: - - name: "Winner of an Irish public competition" - description: "Won first place in a public competition with a perfect score of 70/70, securing a Software Developer position at University Hospital Galway" - - name: "Galway Merit Scholarship" - description: "Awarded annually from 2018 to 2020 in recognition of academic excellence and contribution" - - name: "GitHub Recognition" - description: "Gained over 3000 stars on GitHub with JobBot project" + - name: "[Achievement Title]" + description: "[Brief Description of the Achievement]" + - name: "[Achievement Title]" + description: "[Brief Description of the Achievement]" certifications: - - "C1" + - "[Certification Name]" languages: - - language: "English" - proficiency: "Native" - - language: "Spanish" - proficiency: "Professional" + - language: "[Language Name]" + proficiency: "[Proficiency Level]" + - language: "[Language Name]" + proficiency: "[Proficiency Level]" interests: - - "Full-Stack Development" - - "Software Architecture" - - "IoT system design and development" - - "Artificial Intelligence" - - "Cloud Technologies" + - "[Interest 1]" + - "[Interest 2]" + - "[Interest 3]" + - "[Interest 4]" + - "[Interest 5]" availability: - notice_period: "immediately" + notice_period: "[Notice Period]" salary_expectations: - salary_range_usd: "100000" + salary_range_usd: "[Expected Salary Range in USD]" self_identification: - gender: "Male" - pronouns: "He" - veteran: "No" - disability: "No" - ethnicity: "white" + gender: "[Gender]" + pronouns: "[Pronouns]" + veteran: "[Veteran Status]" + disability: "[Disability Status]" + ethnicity: "[Ethnicity]" 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" + eu_work_authorization: "[Yes/No]" + us_work_authorization: "[Yes/No]" + requires_us_visa: "[Yes/No]" + requires_us_sponsorship: "[Yes/No]" + requires_eu_visa: "[Yes/No]" + legally_allowed_to_work_in_eu: "[Yes/No]" + legally_allowed_to_work_in_us: "[Yes/No]" + requires_eu_sponsorship: "[Yes/No]" work_preferences: - remote_work: "Yes" - in_person_work: "Yes" - open_to_relocation: "Yes" - willing_to_complete_assessments: "Yes" - willing_to_undergo_drug_tests: "Yes" - willing_to_undergo_background_checks: "Yes" + remote_work: "[Yes/No]" + in_person_work: "[Yes/No]" + open_to_relocation: "[Yes/No]" + willing_to_complete_assessments: "[Yes/No]" + willing_to_undergo_drug_tests: "[Yes/No]" + willing_to_undergo_background_checks: "[Yes/No]" diff --git a/data_folder/secrets.yaml b/data_folder/secrets.yaml index b92541b..ad24cd8 100644 --- a/data_folder/secrets.yaml +++ b/data_folder/secrets.yaml @@ -1,3 +1,3 @@ -email: [Your Linkedin email] -password: [Your Linkedin password] -openai_api_key: [OpenAi API key, tutorial -> https://medium.com/@lorenzozar/how-to-get-your-own-openai-api-key-f4d44e60c327] \ No newline at end of file +email: myemaillinkedin@gmail.com +password: ImpossiblePassowrd10 +openai_api_key: sk-11KRr4uuTwpRGfeRTfj1T9BlbkFJjP8QTrswHU1yGruru2FR \ No newline at end of file diff --git a/data_folder_example/config.yaml b/data_folder_example/config.yaml new file mode 100644 index 0000000..6e362be --- /dev/null +++ b/data_folder_example/config.yaml @@ -0,0 +1,39 @@ +remote: true + +experienceLevel: + internship: true + entry: true + associate: true + mid-senior level: true + director: false + executive: false + +jobTypes: + full-time: true + contract: false + part-time: false + temporary: true + internship: false + other: false + volunteer: true + +date: + all time: false + month: true + week: false + 24 hours: true + +positions: + - Software Tester + + +locations: + - USA + +distance: 100 + +companyBlacklist: + - Noir + - Crossover + +titleBlacklist: diff --git a/data_folder_example/plain_text_resume.yaml b/data_folder_example/plain_text_resume.yaml new file mode 100644 index 0000000..2ba5666 --- /dev/null +++ b/data_folder_example/plain_text_resume.yaml @@ -0,0 +1,133 @@ +personal_information: + name: "Liam" + surname: "Murphy" + date_of_birth: "15/08/1995" + country: "Ireland" + city: "Galway" + address: "Galway City Center" + phone_prefix: "+353" + phone: "871234567" + email: "liam.murphy@gmail.com" + github: "https://github.com/liam-murphy" + linkedin: "https://www.linkedin.com/in/liam-murphy/" + +education_details: + - degree: "Bachelor's Degree" + university: "National University of Ireland, Galway" + gpa: "4/4" + graduation_year: "2020" + field_of_study: "Computer Science" + exam: + Information Theory and Inference: "4" + Algorithm Analysis and Design: "4" + Object-Oriented Languages and Programming: "4" + Linear Algebra and Numerical Analysis: "4" + Database: "4" + +experience_details: + - position: "Co-Founder & Software Engineer" + company: "CryptoWave Solutions" + employment_period: "03/2021 - Present" + location: "Ireland" + industry: "Blockchain Technology" + key_responsibilities: + - responsibility_1: "Co-founded and led a startup specializing in app and software development with a focus on blockchain technology" + - responsibility_2: "Provided blockchain consultations for 10+ companies, enhancing their software capabilities with secure, decentralized solutions" + - responsibility_3: "Developed blockchain applications, integrated cutting-edge technology to meet client needs and drive industry innovation" + skills_acquired: + - "Blockchain development" + - "Software engineering" + - "Consultancy" + + - position: "Research Intern" + company: "National University of Ireland, Galway" + employment_period: "11/2022 - 03/2023" + location: "Galway, Ireland" + industry: "IoT Security Research" + key_responsibilities: + - responsibility_1: "Conducted in-depth research on IoT security, focusing on binary instrumentation and runtime monitoring" + - responsibility_2: "Performed in-depth study of the MQTT protocol and Falco" + - responsibility_3: "Developed multiple software components including MQTT packet analysis library, Falco adapter, and RML monitor in Prolog" + - responsibility_4: "Authored thesis 'Binary Instrumentation for Runtime Monitoring of Internet of Things Systems Using Falco'" + skills_acquired: + - "IoT security" + - "Binary instrumentation" + - "MQTT protocol" + - "Prolog programming" + + - position: "Software Engineer" + company: "University Hospital Galway" + employment_period: "05/2022 - 11/2022" + location: "Galway, Ireland" + industry: "Healthcare IT" + key_responsibilities: + - responsibility_1: "Integrated and enforced robust security protocols" + - responsibility_2: "Developed and maintained a critical software tool for password validation used by over 1,600 employees" + - responsibility_3: "Played an integral role in the hospital's cybersecurity team" + skills_acquired: + - "Cybersecurity" + - "Software development" + - "Password validation" + +projects: + - name: "JobBot" + description: "AI-driven tool to automate and personalize job applications on LinkedIn, gained over 3000 stars on GitHub, improving efficiency and reducing application time" + link: "https://github.com/liam-murphy/jobbot" + - name: "mqtt-packet-parser" + description: "Developed a Node.js module for parsing MQTT packets, improved parsing efficiency by 40%" + link: "https://github.com/liam-murphy/mqtt-packet-parser" + +achievements: + - name: "Winner of an Irish public competition" + description: "Won first place in a public competition with a perfect score of 70/70, securing a Software Developer position at University Hospital Galway" + - name: "Galway Merit Scholarship" + description: "Awarded annually from 2018 to 2020 in recognition of academic excellence and contribution" + - name: "GitHub Recognition" + description: "Gained over 3000 stars on GitHub with JobBot project" + +certifications: + - "C1" + +languages: + - language: "English" + proficiency: "Native" + - language: "Spanish" + proficiency: "Professional" + +interests: + - "Full-Stack Development" + - "Software Architecture" + - "IoT system design and development" + - "Artificial Intelligence" + - "Cloud Technologies" + +availability: + notice_period: "immediately" + +salary_expectations: + salary_range_usd: "100000" + +self_identification: + gender: "Male" + pronouns: "He" + veteran: "No" + disability: "No" + ethnicity: "white" + +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: + remote_work: "Yes" + in_person_work: "Yes" + open_to_relocation: "Yes" + willing_to_complete_assessments: "Yes" + willing_to_undergo_drug_tests: "Yes" + willing_to_undergo_background_checks: "Yes" \ No newline at end of file diff --git a/data_folder_example/secrets.yaml b/data_folder_example/secrets.yaml new file mode 100644 index 0000000..ad24cd8 --- /dev/null +++ b/data_folder_example/secrets.yaml @@ -0,0 +1,3 @@ +email: myemaillinkedin@gmail.com +password: ImpossiblePassowrd10 +openai_api_key: sk-11KRr4uuTwpRGfeRTfj1T9BlbkFJjP8QTrswHU1yGruru2FR \ No newline at end of file diff --git a/job.py b/job.py index 9ac1842..31fef22 100644 --- a/job.py +++ b/job.py @@ -10,6 +10,7 @@ class Job: description: str = "" summarize_job_description: str = "" pdf_path: str = "" + recruiter_link: str = "" def set_summarize_job_description(self, summarize_job_description): self.summarize_job_description = summarize_job_description @@ -17,6 +18,9 @@ class Job: def set_job_description(self, description): self.description = description + def set_recruiter_link(self, recruiter_link): + self.recruiter_link = recruiter_link + def formatted_job_information(self): """ Formats the job information as a markdown string. @@ -27,6 +31,7 @@ class Job: - Position: {self.title} - At: {self.company} - Location: {self.location} + - Recruiter Profile: {self.recruiter_link or 'Not available'} ## Description {self.description or 'No description provided.'} diff --git a/src/linkedIn_easy_applier.py b/src/linkedIn_easy_applier.py index 0243681..6a4548c 100644 --- a/src/linkedIn_easy_applier.py +++ b/src/linkedIn_easy_applier.py @@ -55,8 +55,8 @@ class LinkedInEasyApplier: time.sleep(random.uniform(3, 5)) try: easy_apply_button = self._find_easy_apply_button() - job_description = self._get_job_description() - job.set_job_description(job_description) + job.set_job_description(self._get_job_description()) + job.set_recruiter_link(self._get_job_recruiter()) actions = ActionChains(self.driver) actions.move_to_element(easy_apply_button).click().perform() self.gpt_answerer.set_job(job) @@ -107,6 +107,19 @@ class LinkedInEasyApplier: tb_str = traceback.format_exc() raise Exception(f"Error getting Job description: \nTraceback:\n{tb_str}") + + def _get_job_recruiter(self): + try: + hiring_team_section = WebDriverWait(self.driver, 10).until( + EC.presence_of_element_located((By.XPATH, '//h2[text()="Meet the hiring team"]')) + ) + recruiter_element = hiring_team_section.find_element(By.XPATH, './/following::a[contains(@href, "linkedin.com/in/")]') + recruiter_link = recruiter_element.get_attribute('href') + return recruiter_link + except Exception as e: + print(f"Errore durante l'estrazione del link del recruiter: {e}") + return "" + def _scroll_page(self) -> None: scrollable_element = self.driver.find_element(By.TAG_NAME, 'html') #utils.scroll_slow(self.driver, scrollable_element, step=300, reverse=False) @@ -269,8 +282,6 @@ class LinkedInEasyApplier: else: question_type = 'textbox' answer = self.gpt_answerer.answer_question_textual_wide_range(question_text) - - existing_answer = None for item in self.all_data: if item['question'] == self._sanitize_text(question_text) and item['type'] == question_type: diff --git a/src/linkedIn_job_manager.py b/src/linkedIn_job_manager.py index 6190df0..7de12a4 100644 --- a/src/linkedIn_job_manager.py +++ b/src/linkedIn_job_manager.py @@ -149,6 +149,7 @@ class LinkedInJobManager: "company": job.company, "job_title": job.title, "link": job.link, + "job_recruiter": job.recruiter_link, "job_location": job.location, "pdf_path": pdf_path }