My version-controlled markdown resume with pdf export style control.
I care about the style control so that I can better comply with resume best practices such as restricting the resume to a single page.
Please don't write out the HTML by hand. That's too much work.
Instead:
- Export your LinkedIn resume built with the LinkedIn Resume Builder.
- Use GPT-4 to convert the LinkedIn-built PDF into
resume.html
. See theGPT-4 Prompt
section for more tips about the specific prompt to use. - Replace this repository's
resume.html
with your own. - Ensure you have
wkhtmltopdf
installed locally.- On mac, this is
brew install wkhtmltopdf
. Don't worry if you see a deprecation notice on that install.
- On mac, this is
- Run
poetry install
in this repo. - Run
poetry run python create-pdf-resume.py
- Please ensure
python
refers to Python v3.11+ - You can try it with a lower version, but you may need to update the pyproject.toml file, and reinstall, and it also might not work.
- Please ensure
- Optional: Remove
resume.pdf
from.gitignore
.- Benefit: This publishes the final form of your resume to GitHub
- Cost/Risk: If your resume has sensitive or personal data on it, that data will be published to the open web.
You cannot make the HTML body background pink.
Basically, styling on the HTML body tag may fail to transpile into PDF.
The recommended approach has four steps:
- Attach your linkedin-resume.pdf to GPT-4
- Paste the existing resume.html from this repository into the prompt window
- Write a new line, a triple-dash seperator (
---
), and another new line - Write
Consider the attached resume PDF. Please create a resume HTML form of the content based on the HTML template provided above.
You may need to tinker with the output. You can also try prompting from scratch.
In this approach, you do not paste any existing HTML. You should still attach your LinkedIn-generated PDF resume. Then you can use a prompt like the below, which was used to generate the resume.html found in this repository:
Consider the attached LinkedIn resume PDF.
Let's create an HTML representation of this resume.
Do not skip or summarize any content except for items I specifically ask you to omit from the HTML.
Doing that would harm the quality of my resume, and we want to generate a high-quality resume.
Do not use an HTML footer tag.
The resume should have three sections: The top matter which includes my name, title, contact details, and summary paragraph is the first section.
My name and title should be treated as the heading of the top matter section.
`Experience` is the second section
`Education` is the third section
Add a thin horizontal divider across the page between each section change.
Specify my phone number as the literal `Phone: {{ PHONE }}`,
so that I can store it in a dotenv file and interpolate it later.
Do similarly with email.
This way I can save my HTML file on GitHub without exposing my sensitive data.
Include my GitHub and LinkedIn URLs in the ordinary way.
For work experience entries,
use a subheading with the format `{{ POSITION }} at {{ EMPLOYER_NAME }}`,
but do not literally include the braces. That's just to show you where to put each bit.
For contract experience, append `- Contract` to the position name`.
For education dates, use years without specifying the month.
Follow the format:
`<section>
<h3>{{ CREDENTIAL NAME }}</h3>
<p>{{ INSTITUTION }}</p>
<p>{{ START DATE }} - {{ END DATE}}</p>
</section>`,
but do not literally include the braces. That's just to show you where to put each bit.
Remove my high school education entry.
Retain the Summary section.
Ignore the Skill and Achievement sections.
Do not include images in the HTML resume.
Keep the font size equal for p tags and for h3 or smaller headings,
with a 12px font size.
Use at most 0.5rem for any margin or padding needed.
Paragraphs should not have padding nor horizontal margin.
Remove the left indentation from all lists.