Features · Install · Usage · Discussions · Contributors
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 sureResumeGPT.config.YOUR_RESUME_NAMEis 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"))
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)
| File | Size | Uploaded | |
|---|---|---|---|
| resumegpt-2.1.tar.gz | 25.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|