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-1.4.tar.gz (24.1 kB view details)

Uploaded Source

Built Distribution

ResumeGPT-1.4-py3-none-any.whl (30.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: resumegpt-1.4.tar.gz
  • Upload date:
  • Size: 24.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for resumegpt-1.4.tar.gz
Algorithm Hash digest
SHA256 64177bac4f72389081a65ae7db853ad0288774d799df077eac3fbf872a34d92d
MD5 476edf0eee28110ed70d5077f27d9eec
BLAKE2b-256 71343d0e34b0e0318340a539104729caff1e5bccdd1be09c93be903a59cdaa38

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ResumeGPT-1.4-py3-none-any.whl
  • Upload date:
  • Size: 30.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for ResumeGPT-1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 28ce371e94c6496452e2552b1566503cbe2a4bd9090406b0eb493e410ff85e8a
MD5 a34db927fcb548e746f700f7871e2447
BLAKE2b-256 4563e59744413fa4ff26d5b4bf4df0c431da0bbbdcdb990df28dca56d502e628

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