Close Menu
    Trending
    • Why PDF Extraction Still Feels LikeHack
    • GenAI Will Fuel People’s Jobs, Not Replace Them. Here’s Why
    • Millions of websites to get ‘game-changing’ AI bot blocker
    • I Worked Through Labor, My Wedding and Burnout — For What?
    • Cloudflare will now block AI bots from crawling its clients’ websites by default
    • 🚗 Predicting Car Purchase Amounts with Neural Networks in Keras (with Code & Dataset) | by Smruti Ranjan Nayak | Jul, 2025
    • Futurwise: Unlock 25% Off Futurwise Today
    • 3D Printer Breaks Kickstarter Record, Raises Over $46M
    AIBS News
    • Home
    • Artificial Intelligence
    • Machine Learning
    • AI Technology
    • Data Science
    • More
      • Technology
      • Business
    AIBS News
    Home»Artificial Intelligence»How to Build a Resume Optimizer with AI | by Shaw Talebi | Dec, 2024
    Artificial Intelligence

    How to Build a Resume Optimizer with AI | by Shaw Talebi | Dec, 2024

    Team_AIBS NewsBy Team_AIBS NewsDecember 30, 2024No Comments5 Mins Read
    Share Facebook Twitter Pinterest LinkedIn Tumblr Reddit Telegram Email
    Share
    Facebook Twitter LinkedIn Pinterest Email


    Imports

    We begin by importing a number of hand Python libraries. The important thing ones are openai for accessing GPT-4o-mini, in addition to markdown and weasyprint to create a PDF model of the ultimate resume. Notice: An OpenAI API secret’s required for this challenge, which I imported from a separate Python script.

    from IPython.show import show, Markdown
    from openai import OpenAI
    from top_secret import my_sk

    from markdown import markdown
    from weasyprint import HTML

    Step 1: Enter Resume & JD

    Subsequent, we’ll load our enter resume into Python as a string and use Python’s enter() perform to permit us to copy-paste it into any job description after we run the script.

    # open and skim the markdown file
    with open("resumes/resume.md", "r", encoding="utf-8") as file:
    resume_string = file.learn()

    # enter job description
    jd_string = enter()

    A element right here is that the resume is saved in a markdown format. That is vital as a result of it should encourage GPT-4o-mini to generate a brand new resume in markdown, which we are able to simply type right into a PDF. Notice: ChatGPT (or the like) can convert your PDF resume to markdown.

    Step 2: Assemble Immediate

    With our resume and JD imported, we are able to now craft a immediate to instruct the mannequin to optimize the resume. A professional tip right here is to use ChatGPT to jot down an preliminary model of this immediate as a result of 1) it’s fairly lengthy, and a couple of) LLMs have a tendency to jot down directions extra aligned with the expectations of different LLMs.

    After some experimentation, I ended up with the next immediate template, which rewrites the resume and makes extra recommendations for enchancment if ability gaps exist.

    prompt_template = lambda resume_string, jd_string : f"""
    You're a skilled resume optimization skilled specializing in tailoring
    resumes to particular job descriptions. Your aim is to optimize my resume and
    present actionable recommendations for enchancment to align with the goal position.

    ### Pointers:
    1. **Relevance**:
    - Prioritize experiences, expertise, and achievements **most related to the
    job description**.
    - Take away or de-emphasize irrelevant particulars to make sure a **concise** and
    **focused** resume.
    - Restrict work expertise part to 2-3 most related roles
    - Restrict bullet factors below every position to 2-3 most related impacts

    2. **Motion-Pushed Outcomes**:
    - Use **sturdy motion verbs** and **quantifiable outcomes** (e.g.,
    percentages, income, effectivity enhancements) to spotlight affect.

    3. **Key phrase Optimization**:
    - Combine **key phrases** and phrases from the job description naturally to
    optimize for ATS (Applicant Monitoring Techniques).

    4. **Extra Options** *(If Gaps Exist)*:
    - If the resume doesn't absolutely align with the job description, counsel:
    1. **Extra technical or smooth expertise** that I might add to make my
    profile stronger.
    2. **Certifications or programs** I might pursue to bridge the hole.
    3. **Undertaking concepts or experiences** that will higher align with the position.

    5. **Formatting**:
    - Output the tailor-made resume in **clear Markdown format**.
    - Embrace an **"Extra Options"** part on the finish with
    actionable enchancment suggestions.

    ---

    ### Enter:
    - **My resume**:
    {resume_string}

    - **The job description**:
    {jd_string}

    ---

    ### Output:
    1. **Tailor-made Resume**:
    - A resume in **Markdown format** that emphasizes related expertise,
    expertise, and achievements.
    - Incorporates job description **key phrases** to optimize for ATS.
    - Makes use of sturdy language and is not than **one web page**.

    2. **Extra Options** *(if relevant)*:
    - Listing **expertise** that might strengthen alignment with the position.
    - Advocate **certifications or programs** to pursue.
    - Counsel **particular initiatives or experiences** to develop.
    """

    Step 3: Make API Name

    Utilizing the above immediate template, we are able to dynamically assemble a immediate utilizing the enter resume and JD after which ship it to OpenAI through their API.

    # create immediate
    immediate = prompt_template(resume_string, jd_string)

    # setup api shopper
    shopper = OpenAI(api_key=my_sk)

    # make api name
    response = shopper.chat.completions.create(
    mannequin="gpt-4o-mini",
    messages=[
    {"role": "system", "content": "Expert resume writer"},
    {"role": "user", "content": prompt}
    ],
    temperature = 0.7
    )

    # extract response
    response_string = response.decisions[0].message.content material

    Step 4: Save New Resume

    Lastly, we are able to extract the optimized resume and recommendations for enchancment.

    # separate new resume from enchancment recommendations
    response_list = response_string.cut up("## Extra Options")

    For the resume, we are able to convert the markdown output to HTML utilizing the markdown library. Then, convert the HTML to a PDF utilizing weasyprint.

    # save as PDF
    output_pdf_file = "resumes/resume_new.pdf"

    # Convert Markdown to HTML
    html_content = markdown(response_list[0])

    # Convert HTML to PDF and save
    HTML(string=html_content).write_pdf(output_pdf_file,
    stylesheets=['resumes/style.css'])

    Right here’s what the ultimate outcome seems like.

    Closing PDF model of resume. Picture by writer.

    For the advance recommendations, we are able to print these instantly.

    show(Markdown(response_list[1]))
    Enchancment recommendations. Picture by writer.

    Bonus: Construct a GUI

    Whereas the code above streamlines this course of to some extent, we are able to do higher. To enhance the usability of this instrument, we are able to create a easy net interface utilizing Gradio.

    The ultimate product is proven under. A person can add a markdown file of their resume and paste it into any job description extra straightforwardly. I additionally added an space the place customers can edit the brand new resume earlier than exporting it as a PDF.

    Demo of ultimate GUI. GIF by writer.

    The instance code is out there on the GitHub repository here. Try the YouTube video to see me speak via the code.

    Whereas tailoring one’s resume to particular job descriptions is an efficient approach to make an utility stand out, it may be fairly tedious. Right here, we stroll via the implementation of an AI-powered resume optimization instrument utilizing Python and OpenAI’s API.

    You probably have any questions or need to dive deeper into any of the subjects coated, let me know within the feedback 🙂
    —
    y2b.io helped me write this text.



    Source link

    Share. Facebook Twitter Pinterest LinkedIn Tumblr Email
    Previous ArticleSouth Korea plane crash More than 170 people have died after a plane crashed as it was landing in South Korea on Sunday morning. Harrowing video footage shows the Jeju Air plane coming off the runway… – Abhinav Kumar
    Next Article Big Tech, Small Price—Get a MacBook Air for $230
    Team_AIBS News
    • Website

    Related Posts

    Artificial Intelligence

    Become a Better Data Scientist with These Prompt Engineering Tips and Tricks

    July 1, 2025
    Artificial Intelligence

    Lessons Learned After 6.5 Years Of Machine Learning

    July 1, 2025
    Artificial Intelligence

    Prescriptive Modeling Makes Causal Bets – Whether You Know it or Not!

    June 30, 2025
    Add A Comment
    Leave A Reply Cancel Reply

    Top Posts

    Why PDF Extraction Still Feels LikeHack

    July 1, 2025

    I Tried Buying a Car Through Amazon: Here Are the Pros, Cons

    December 10, 2024

    Amazon and eBay to pay ‘fair share’ for e-waste recycling

    December 10, 2024

    Artificial Intelligence Concerns & Predictions For 2025

    December 10, 2024

    Barbara Corcoran: Entrepreneurs Must ‘Embrace Change’

    December 10, 2024
    Categories
    • AI Technology
    • Artificial Intelligence
    • Business
    • Data Science
    • Machine Learning
    • Technology
    Most Popular

    These Are the Top Innovations Paving the Way for Clean Energy By 2030

    January 25, 2025

    g jf cfg jg

    April 2, 2025

    New Alternatives to GPS could Be Jamming- and Spoof-Proof

    February 16, 2025
    Our Picks

    Why PDF Extraction Still Feels LikeHack

    July 1, 2025

    GenAI Will Fuel People’s Jobs, Not Replace Them. Here’s Why

    July 1, 2025

    Millions of websites to get ‘game-changing’ AI bot blocker

    July 1, 2025
    Categories
    • AI Technology
    • Artificial Intelligence
    • Business
    • Data Science
    • Machine Learning
    • Technology
    • Privacy Policy
    • Disclaimer
    • Terms and Conditions
    • About us
    • Contact us
    Copyright © 2024 Aibsnews.comAll Rights Reserved.

    Type above and press Enter to search. Press Esc to cancel.