HARPA.AI
LIBRARYAPIGUIDESAI COMMANDSBLOG

๐Ÿ’ผย ย LinkedIn / CV Analyzer

Find out if a given CV or LinkedIn Profile fits the Job Description.

Created by HARPA AI
Updated on May 12, 14:40
Installed 128 times
RUNS JS CODE

How to Use

IMPORT COMMAND

Content

- type: ask
  param: askForJD
  message: >-
    ```markdown

    {{g.job}}

    ```


    Copy and paste a new Job Description below (any text or PDF) or use the
    previous one โฌ†๏ธ
  options:
    - label: โœ… USE PREVIOUS JD
      value: previous
    - $custom
  default: ''
  vision:
    enabled: false
    mode: area
    hint: ''
    send: true
  optionsInvalid: false
  condition: '{{g.job}}'
  label: ASK FOR NEW JD
- type: calc
  func: clone
  from: askForJD
  to: g.job
  condition: '{{askForJD}} != previous'
- type: ask
  param: g.job
  message: |-
    Copy and paste a Job Description below.
    Send a PDF or any text, then hit Enter.
  default: ''
  vision:
    enabled: false
    mode: area
    hint: ''
    send: true
  optionsInvalid: true
  condition: '{{g.job}} ='
  label: ASK FOR 1ST JD
- type: ask
  param: cv
  message: >-
    Go to the candidate's LinkedIn page to parse info, or send me their CV in
    text or PDF format.
  options:
    - label: โœ… USE WEBPAGE
      value: linkedin
    - $custom
  default: ''
  vision:
    enabled: false
    mode: area
    hint: ''
    send: true
  optionsInvalid: false
  label: ASK FOR CV
- type: group
  steps:
    - type: group
      steps:
        - type: say
          message: โš ๏ธ Sorry, this doesn't seem to be a LinkedIn profile page.
        - type: stop
      condition:
        - '{{url}} =~ ^(?!https:\/\/www\.linkedin\.com\/in\/[\w\-]+\/?).*$'
      label: CHECK PAGE
    - type: js
      args: ''
      code: |-
        const result = (() => {
            const selectors = {
                name: 'h1',
                status: '.text-body-medium.break-words',
                location: '.text-body-small.inline.t-black--light.break-words',
                contact: 'section.pv-top-card--website a',
                about: '#about ~ .display-flex span',
                experience: '#experience + div + div',
                education: '#education + div + div',
                language: '#languages + div + div'
            };

            const getListContent = (container) => {
                if (!container) return null
                return Array.from(container.querySelectorAll('.artdeco-list__item'))
                    .map(item => {
                        const clone = item.cloneNode(true);
                        clone.querySelectorAll('.visually-hidden').forEach(el => el.remove());
                        return clone.textContent
                            .replace(/\s+/g, ' ')
                            .replace(/\n\n+/g, '\n')
                            .trim();
                    });
            };

            const result = {
                name: document.querySelector(selectors.name)?.textContent.trim(),
                url: window.location.href,
                status: document.querySelector(selectors.status)?.textContent.trim(),
                location: document.querySelector(selectors.location)?.textContent.trim(),
                contact: document.querySelector(selectors.contact)?.href || null,
                about: document.querySelector(selectors.about)?.textContent.trim(),
                experience: getListContent(document.querySelector(selectors.experience)),
                education: getListContent(document.querySelector(selectors.education)),
                language: getListContent(document.querySelector(selectors.language))
            };

            return result;
        })();

        return result;
      param: profile
      timeout: 15000
      silent: true
    - type: calc
      func: set
      param: cv
      format: ''
      value: |-
        {{profile}}

        Full LinkedIn Webpage: {{page}}
  label: LINKEDIN PAGE
  condition: '{{cv}} = linkedin'
- type: gpt
  prompt: >-
    Please ignore all previous instructions. 


    I want you to act as a CV reviewer and a very proficient HR that writes
    fluently in {{language}}.


    I'm going to provide you with a job description for a job that I'm trying to
    hire for. You're going to read the job description and understand the key
    requirements for the position โ€“ including years of experience, skills,
    position name.

    Then you will read the candidate's CV. You'll go over it and provide
    feedback based on how tailored the CV is for the job, according to my
    scoring system (0-100 points):


    1. **Alignment with Key Professional Skills** (0-30 points)
       * Evaluation of all mandatory skills from the JD
       * Consideration of depth of experience in key technologies/methodologies
       * Bonus points for additional relevant skills

    2. **Relevant Work Experience** (0-25 points)
       * Length of experience in similar positions/projects
       * Experience solving tasks similar to those required in the JD
       * Career progression and expansion of responsibilities

    3. **Education and Professional Qualifications** (0-15 points)
       * Alignment of education with required specialization
       * Presence of professional certifications
       * Additional training and professional development courses

    4. **Achievements and Performance Results** (0-20 points)
       * Measurable results from previous workplaces
       * Initiatives and projects successfully implemented by the candidate
       * Awards, recognition, and other confirmations of effectiveness

    5. **Cultural Fit** (0-10 points)
       * Experience working in similar corporate environments
       * Indication of personal qualities important for the position
       * Demonstration of values aligned with the company


    Provide your response in the following format:


    **Score:** total score from 0 to 100, assign emoji ๐ŸŸข for scores 80-100, ๐ŸŸก
    for scores 50-79, and ๐Ÿ”ด for scores from 0 to 49. E.g.: **Score:** ๐ŸŸก 79/100

    **Candidate:** [First Name Last Name]({{cv.url}}) (use markdown link if URL
    is known).

    **Employment:** Currently employed or not, company name and country with
    city.


    **Summary:**

    Brief description of strengths and weaknesses, using โŒ and โœ… emojis. Do not
    repeat all the scoring points, mention only crucial ones. Do not write the
    full report, be brief and to the point. 


    **Questions to candidate:**

    2-3 brief questions that help me understand if the candidate is suitable for
    my Job Description.


    [PARSE JOB DESCRIPTION FROM]: {{job}}


    [PARSE MY CV FROM]: {{cv}}


    [YOUR RESPONSE]:
  isolated: true
- type: say
  message: 'Choose an option or ask a question, e.g.: "What hard skill is missing?"'
- type: ask
  param: action
  message: ''
  options:
    - label: โ†ฉ๏ธ NEXT CANDIDATE
      value: next
    - label: ๐Ÿ“ CONNECTION NOTE
      value: >-
        Brief LinkedIn connection request note, less than 200 symbols. No
        signoffs and long greetings.
    - label: ๐Ÿ“จ EMAIL/MESSAGE
      value: >-
        Brief Email that includes information about which company or person is
        writing, a short job description, and an invitation to chat by email or
        phone call, beginning with one of the questions for the candidate about
        his skills, that you mentioned before
    - label: โœ… DONE
      value: done
    - $custom
  default: ''
  vision:
    enabled: false
    mode: area
    hint: ''
    send: true
  optionsInvalid: false
  label: ASK NEXT STEP
- type: jump
  to: ASK FOR CV
  condition: '{{action}} = next'
- type: stop
  condition: '{{action}} = done'
- type: group
  steps:
    - type: gpt
      prompt: '{{action}}'
    - type: jump
      to: ASK NEXT STEP
  condition: '{{action-option}} = $custom'
  label: $CUSTOM ASK
- type: group
  steps:
    - type: gpt
      prompt: >-
        Please ignore previous instructions. 

        I want you to write a {{action}} in {{language}}.


        I'm searching for a candidate for the position I sent you and have found
        a suitable person. Now I want to contact them by writing a {{action}} in
        {{language}}. Your task is to help me draft such a message from me that
        is brief and clear, effectively communicating the main point.


        Follow my tone instructions: {{tone}}

        Info about me: {{userinfo}}


        Candidate's CV: {{cv}}

        Job Description: {{job}}


        Your responce must be in a single ```markdown code block```.


        [Output framework]:


        Message draft:


        ```markdown

        message draft text

        ```


        YOUR RESPONSE:
      silent: false
    - type: ask
      param: refine
      message: ''
      options:
        - label: โ†ฉ๏ธ NEXT CANDIDATE
          value: next
        - label: โฌ†๏ธ EXPAND
          value: |
            Expand your reply, adding more details and depth to it.
        - label: โฌ‡๏ธ SHORTEN
          value: >
            Shorten your reply, make it concise and to the point. Remove stock
            and boilerplate phrases if any.
        - label: ๐Ÿคช SIMPLIFY
          value: |
            Simplify reply language, add clarity and conciseness, remove jargon.
        - label: โœ… DONE
          value: done
      default: ''
      vision:
        enabled: false
        mode: area
        hint: ''
        send: true
      optionsInvalid: false
      label: REFINE MESSAGE
    - type: stop
      condition: '{{refine}} = done'
    - type: jump
      to: ASK FOR CV
      condition: '{{refine}} = next'
    - type: gpt
      prompt: '{{refine}}'
    - type: jump
      to: REFINE MESSAGE
  label: NOTE OR EMAIL
Contact us
HomeUse CasesGuidesPrivacy PolicyTerms of Service
CAN WE STORE COOKIES?
Our website uses cookies for the purposes of accessibility and security. They also allow us to gather statistics in order to improve the website for you. More info: Privacy Policy