Skip to main content

Tailor your resume to match any job posting effortlessly

Project description



Tailor your resume to match any job posting effortlessly with ResumeGPT.


ResumeGPT allows you to simply provide your resume and a job posting link, and it will produce a formatted ATS friendly PDF resume that is optimized and personalize your resume to align with the specific requirements and keywords of the job.

Features

  • Extracts relevant skills, qualifications, and keywords from a job posting.
  • Tailors your curent resume to match job requirements.
  • Generates professional ATS friendly PDF resumes.
  • Allows for user verification and customization before finalizing the resume.

Installation

pip install ResumeGPT

or:

pip install git+https://github.com/takline/ResumeGPT.git

or:

git clone https://github.com/takline/ResumeGPT.git
cd ResumeGPT
pip install -r requirements.txt

Usage

  • Add your resume to ResumeGPT/data/sample_resume.yaml (make sure ResumeGPT.config.YOUR_RESUME_NAME is set to your resume filename in the .data/ folder)
  • Provide ResumeGPT with the link to a job posting and it will tailot your resume to the job:

Single job posting usage

url = "https://[link to your job posting]"
resume_improver = ResumeGPT.services.ResumeImprover(url)
resume_improver.create_draft_tailored_resume()

ResumeGPT then creates a new resume YAML file in a new folder named after the job posting (ResumeGPT/data/[Company_Name_Job_Title]/resume.yaml) with a YAML key/value: editing: true. ResumeGPT will wait for you to update this key to verify the resume updates and allow them to make their own updates until users set editing=false. Then ResumeGPT will create a PDF version of their resume.

Custom resume location usage

Initialize ResumeImprover via a .yaml filepath.:

resume_improver = ResumeGPT.services.ResumeImprover(url=url, resume_location="custom/path/to/resume.yaml")
resume_improver.create_draft_tailored_resume()

Post-initialization usage

resume_improver.update_resume("./new_resume.yaml")
resume_improver.url = "https://[new link to your job posting]"
resume_improver.download_and_parse_job_post()
resume_improver.create_draft_tailored_resume()

Background usage

You can run multiple ResumeGPT.services.ResumeImprover's concurrently via ResumeGPT's BackgroundRunner class (as it takes a couple of minutes for ResumeImprover to complete a single run):

background_configs = [
    {
        "url": "https://[link to your job posting 1]",
        "auto_open": True,
        "manual_review": True,
        "resume_location": "/path/to/resume1.yaml",
    },
    {
        "url": "https://[link to your job posting 2]",
        "auto_open": False,
        "manual_review": False,
        "resume_location": "/path/to/resume2.yaml",
    },
    {
        "url": "https://[link to your job posting 3]",
        "auto_open": True,
        "manual_review": True,
        "resume_location": "/path/to/resume3.yaml",
    },
]
background_runner = ResumeGPT.services.ResumeImprover.create_draft_tailored_resumes_in_background(background_configs=background_configs)
#Check the status of background tasks (saves the output to `ResumeGPT/data/background_tasks/tasks.log`)
background_runner["background_runner"].check_status()
#Stop all running tasks
background_runner["background_runner"].stop_all_tasks()
#Extract a ResumeImprover
first_resume_improver = background_runner["ResumeImprovers"][0]

You will follow the same workflow when using ResumeGPT's BackgroundRunner (ex: verify the resume updates via editing=false in each ResumeGPT/data/[Company_Name_Job_Title]/resume.yaml file). You can also find logs for the BackgroundRunner in ResumeGPT/data/background_tasks/tasks.log.

Once all of the background tasks are complete:

background_runner["background_runner"].check_status()

Output:

['Task completed.',
 'Task completed.',
 'Task completed.',
 'Task completed.',
 'Task completed.',
 'Task completed.',
 'Task completed.',
 'Task completed.',
 'Task completed.']

Create the pdf for each ResumeImprovers instance:

for improver in background_runner["ResumeImprovers"]:
    pdf_generator = ResumeGPT.pdf_generation.ResumePDFGenerator()
    resume_yaml_path = os.path.join(improver.job_data_location, "resume.yaml")
    pdf_generator.generate_resume(improver.job_data_location, ResumeGPT.utils.read_yaml(filename=resume_yaml_path))

ResumeGPT PDF Output

Example ATS friendly resume created by ResumeGPT:

pdf_generator = ResumeGPT.pdf_generation.ResumePDFGenerator()
pdf_generator.generate_resume("/path/to/save/pdf/", ResumeGPT.utils.read_yaml(filename="/path/to/resume/resume.yaml"))

Resume Example

Discussions

Feel free to give feedback, ask questions, report a bug, or suggest improvements:

Contributors

⭐️ Please star, fork, explore, and contribute to ResumeGPT. There's a lot of work room for improvement so any contributions are appreciated.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

resumegpt-2.1.tar.gz (25.5 kB view details)

Uploaded Source

Built Distribution

ResumeGPT-2.1-py3-none-any.whl (31.1 kB view details)

Uploaded Python 3

File details

Details for the file resumegpt-2.1.tar.gz.

File metadata

  • Download URL: resumegpt-2.1.tar.gz
  • Upload date:
  • Size: 25.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for resumegpt-2.1.tar.gz
Algorithm Hash digest
SHA256 1f1f001da1bcf5c54486a99728e0ed0a94f5c50cfbc336b2db327e31ab899ef8
MD5 3a9a4402a7bd3627d9c8758b83a1024a
BLAKE2b-256 b5ac7376d7613b07d68619fff5b07592027afb2db211bb70ea754cf3e4ffc34e

See more details on using hashes here.

File details

Details for the file ResumeGPT-2.1-py3-none-any.whl.

File metadata

  • Download URL: ResumeGPT-2.1-py3-none-any.whl
  • Upload date:
  • Size: 31.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for ResumeGPT-2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a6ae2ba72b2c7892f983d0cf12f4586d84c18522c47e7a0c4a536e9a157f46a5
MD5 d5cb7bd9c15fed85bc4636ae758b00b8
BLAKE2b-256 5516452c1d52dfabc169e20a2e12450dddb666e44dbd58ff00d8f0a0ef3f5a33

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page