A LaTeX-based automated system for maintaining multiple versions of your resume with different project combinations. This tool solves a common problem in job applications: the need to customize your resume for different positions while keeping the content consistent and professional.
Here's a sample of what the generated resume looks like:
The tool generates multiple versions of this resume with different project combinations. For example, if you have three projects:
- Optimization For Machine Learning
- Pricing of Some Exotic Options
- EPFLLaMA (LLM Project)
It will generate:
output/Optimization_Pricing/YourName.pdf
output/Optimization_LLM/YourName.pdf
output/Pricing_LLM/YourName.pdf
output/Optimization_Pricing_LLM/YourName.pdf
When applying for different positions, you often want to highlight different projects based on their relevance to each role. For example:
- A machine learning position might need your ML projects
- A web development role might need your full-stack projects
- A research position might need your academic projects
Maintaining multiple versions of your resume manually can be tedious and error-prone. If you update one section (like your work experience or skills), you need to update it across all versions. This tool automates that process by:
- Keeping your core information (education, experience, skills) in a single template
- Storing each project as a separate file
- Automatically generating all possible combinations of your projects
- Building professional PDFs using LaTeX
- Using GitHub Actions to automate the build process
This way, you can focus on writing great content while the tool handles the tedious work of maintaining multiple resume versions.
- Automatically generates multiple PDF resumes with different project combinations
- Supports both combinations and permutations modes
- Supports customizable subset sizes (1-N projects) for combinations/permutations
- Uses LaTeX for professional-looking documents
- Automated builds via GitHub Actions
- Easy project management through simple LaTeX files
- Git
- GitHub account
- LaTeX installation (for local builds)
- Python 3.x (for local builds)
-
Fork this repository:
- Click the "Fork" button at the top right of this repository
- Choose your account as the destination
- If you want to protect your personal information, select "Private" for repository visibility
-
Clone your forked repository:
git clone https://github.com/yourusername/Resume-Builder.git cd Resume-Builder
-
Set up GitHub Actions:
- Go to your repository settings on GitHub
- Navigate to Actions > General
- Under "Workflow permissions", select "Read and write permissions"
- Save the changes
-
Customize the template:
- Edit
template.tex
with your personal information - Replace the details in the header (name, contact info, etc.)
- Update the Education and Experience sections
- Modify the Skills section as needed
- Edit
-
Add your projects:
- Create a new
.tex
file for each project in theprojects/
directory - Follow the format shown in the example
LLM.tex
- Each project file should contain a single
rSubsection
environment
- Create a new
-
Commit and push your changes:
git add . git commit -m "Update resume content" git push
-
GitHub Actions will automatically:
- Build all PDF combinations
- Commit them to the
output/
directory - Push the changes back to your repository
-
Pull the generated PDFs:
git pull
To get updates from the original template repository:
-
Add the original repository as upstream:
git remote add upstream https://github.com/original-author/Resume-Builder.git
-
Whenever you want to pull updates:
git fetch upstream git merge upstream/main
- Consider making your fork private to protect personal information
- The first GitHub Actions workflow may need manual approval in your repository's Actions tab
- You can use [skip ci] in your commit message to prevent PDF generation
- Make sure to grant write permissions to GitHub Actions as described in step 3
Resume-Builder/
├── .github/workflows/
│ └── build.yml # GitHub Actions workflow
├── projects/
│ ├── LLM.tex # Example project
│ └── *.tex # Your project files
├── output/ # Generated PDFs
├── template.tex # Main resume template
├── resume.cls # LaTeX class file
└── build.py # Build script
The builder supports customizable project ranges:
- Combinations: Generates PDFs for unique project groups (order doesn’t matter)
- Permutations: Generates PDFs for every project order (order matters)
- For projects A, B, C:
-
Combinations (
--mode combinations
):- 1-project:
A.pdf
,B.pdf
,C.pdf
- 2-project:
AB.pdf
,AC.pdf
,BC.pdf
- 3-project:
ABC.pdf
- 1-project:
-
Permutations (
--mode permutations
):- 1-project:
A.pdf
,B.pdf
,C.pdf
- 2-project:
AB.pdf
,BA.pdf
,AC.pdf
,CA.pdf
,BC.pdf
,CB.pdf
- 3-project:
ABC.pdf
,ACB.pdf
,BAC.pdf
,BCA.pdf
,CAB.pdf
,CBA.pdf
- 1-project:
-
The build mode and PDF name can be configured in .github/workflows/build.yml
:
pre_compile: |
MODE="permutations" # "combinations" or "permutations"
PDF_NAME="AliBakly.pdf" # rename as needed
MIN_PROJECTS=1 # minimum number of projects in a resume
MAX_PROJECTS=3 # maximum number of projects in a resume
To build locally:
python build.py --mode combinations --pdf_name YourName.pdf --min-projects 1 --max-projects 4
- Use [skip ci] in your commit message to prevent GitHub Actions from building PDFs
- Pull after each build to get the latest PDFs
Each project file in the projects/
directory should be a .tex
file containing a single project section. Here's an example from one of the sample projects:
\begin{rSubsection}
{\href{https://github.com/YourUsername/Project}{\underline{Optimization For Machine Learning} \href{Project Link}{\raisebox{-0.1\height}\faExternalLink }}}{}{}{}
\item Formulated and implemented cutting-edge optimization algorithms, including Fast Iterative Shrinkage Thresholding Algorithm (FISTA) and Adaptive Proximal Gradient Method(AdProxGD).
\item Conducted in-depth analysis of convergence guarantees and empirical performance of optimization methods.
\item Explored the Power Method for constrained quadratic maximization problems.
\item Applied Mirror Descent algorithms to optimization over the unit simplex.
\item Developed modular, reproducible Python-based implementations for optimization tasks.
\end{rSubsection}
\vspace{-8pt} % Optional spacing adjustment
Key points about project files:
- Save each project as a separate
.tex
file in theprojects/
directory - Format bullet points using
\item
- Use LaTeX formatting for emphasis where needed (e.g.,
\textbf{Python}
)
Feel free to submit issues and enhancement requests!