Skip to main content



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.

Release files for ResumeGPT 2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ResumeGPT 2.1
File Size Uploaded
resumegpt-2.1.tar.gz 25.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ResumeGPT 2.1
File Interpreter ABI Platform
ResumeGPT-2.1-py3-none-any.whl Python 3 none any Details

Total release size: 56.6 kB

Release files / resumegpt-2.1.tar.gz

Download URL resumegpt-2.1.tar.gz
Size 25.5 kB
Tags Source
SHA-256 checksum
How to use checksums
1f1f001da1bcf5c54486a99728e0ed0a94f5c50cfbc336b2db327e31ab899ef8
BLAKE2b-256 checksum
How to use checksums
b5ac7376d7613b07d68619fff5b07592027afb2db211bb70ea754cf3e4ffc34e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.7

Release files / ResumeGPT-2.1-py3-none-any.whl

Download URL ResumeGPT-2.1-py3-none-any.whl
Size 31.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a6ae2ba72b2c7892f983d0cf12f4586d84c18522c47e7a0c4a536e9a157f46a5
BLAKE2b-256 checksum
How to use checksums
5516452c1d52dfabc169e20a2e12450dddb666e44dbd58ff00d8f0a0ef3f5a33
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.7

Release history Release notifications | RSS feed

This release

2.1 This release

2 release files

2.0

2 release files

1.4

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page