Skip to content

NeelM47/cv-as-code

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

12 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ“„ CV-as-Code

Treating my professional identity like a production-grade software system

GitHub Actions Typst License: MIT Live CV


๐ŸŽฏ Overview

As an AI & Data Engineer, I spend my days building automated pipelines and scalable architectures. Yet my CVโ€”the single most important document of my careerโ€”was still a static, manually formatted file. Every update meant wrestling with Word margins, exporting PDFs, and manually re-uploading to my portfolio.

No more.

This project applies DevOps principles to my professional identity. My CV is now "source code" that gets compiled, versioned, and automatically deployedโ€”just like the software systems I build at work.


๐Ÿ—๏ธ Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   Content   โ”‚โ”€โ”€โ”€โ”€โ–ถโ”‚  Typesetting โ”‚โ”€โ”€โ”€โ”€โ–ถโ”‚   CI/CD     โ”‚โ”€โ”€โ”€โ”€โ–ถโ”‚  Deployment  โ”‚
โ”‚   (YAML)    โ”‚     โ”‚   (Typst)    โ”‚     โ”‚   (GitHub   โ”‚     โ”‚  (GitHub     โ”‚
โ”‚             โ”‚     โ”‚              โ”‚     โ”‚   Actions)  โ”‚     โ”‚   Pages)     โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜     โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜     โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜     โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
       โ”‚                   โ”‚                     โ”‚                    โ”‚
       โ–ผ                   โ–ผ                     โ–ผ                    โ–ผ
Single source      Professional        Automated on        Always-live
of truth           formatting          every push           public URL

Key Principles

  • ๐Ÿ“ฆ Content vs. Presentation โ€“ All data lives in structured YAML; design lives in Typst templates
  • ๐Ÿ” Single Source of Truth โ€“ Never update the same information in two places
  • ๐Ÿค– Automated Pipeline โ€“ Every git push triggers a fresh build
  • ๐Ÿ“Š Version Control โ€“ Full history of every CV version ever sent
  • ๐ŸŒ Always Live โ€“ Portfolio always serves the latest PDF

๐Ÿ› ๏ธ Tech Stack

Component Technology Purpose
Data Layer YAML Structured storage of all CV content
Presentation Layer Typst Modern, Rust-based typesetting (faster than LaTeX)
Build System Make / Typst CLI Local compilation
CI/CD GitHub Actions Automated build on every push
Hosting GitHub Pages Permanent, live URL
Version Control Git Complete history tracking

โœจ Features

โœ… Current

  • Modular architecture โ€“ Change fonts in one file, content in another
  • Perfect formatting โ€“ No mysterious margin shifts between versions
  • Instant updates โ€“ CV regenerates in seconds, not minutes
  • Git-tracked history โ€“ See exactly what your CV looked like 6 months ago
  • QR-code ready โ€“ Share the live link anywhere
  • Multiple variants โ€“ Filter YAML data for role-specific versions (AI Eng vs. Data Eng)

๐Ÿš€ Coming Soon

  • RAG-powered customization โ€“ Feed it a job description, get a tailored CV
  • Natural language interface โ€“ Describe the role, get a polished PDF with embedded portfolio links
  • Automated cover letters โ€“ Generate matching cover letters from the same data

๐Ÿ“ Project Structure

cv-as-code/
โ”œโ”€โ”€ .github/
โ”‚   โ””โ”€โ”€ workflows/
โ”‚       โ””โ”€โ”€ build.yml        # GitHub Actions CI/CD pipeline
โ”œโ”€โ”€ data/
โ”‚   โ””โ”€โ”€ cv.yaml              # Single source of truth (all content)
โ”œโ”€โ”€ templates/
โ”‚   โ”œโ”€โ”€ main.typ             # Main Typst template
โ”‚   โ”œโ”€โ”€ header.typ            # Header styling
โ”‚   โ””โ”€โ”€ sections.typ          # Section layouts
โ”œโ”€โ”€ variants/
โ”‚   โ”œโ”€โ”€ ai-engineer.typ       # AI-focused variant
โ”‚   โ””โ”€โ”€ data-engineer.typ     # Data Eng-focused variant
โ”œโ”€โ”€ scripts/
โ”‚   โ””โ”€โ”€ generate.sh           # Local build helper
โ”œโ”€โ”€ output/                   # Generated PDFs (gitignored)
โ”œโ”€โ”€ .gitignore
โ”œโ”€โ”€ Makefile                  # Local build commands
โ”œโ”€โ”€ README.md
โ””โ”€โ”€ LICENSE

๐Ÿšฆ Getting Started

Prerequisites

# Install Typst (if you don't have it)
curl -fsSL https://typst.com/install.sh | sh

# Or via package manager
sudo apt install typst        # Debian/Ubuntu
brew install typst             # macOS

Local Development

# Clone the repository
git clone https://github.com/NeelM47/cv-as-code.git
cd cv-as-code

# Build all variants
make all

# Build specific variant
make ai-engineer

# Watch for changes (auto-rebuild)
make watch

# Clean output directory
make clean

Customizing Content

  1. Edit data/cv.yaml with your information
  2. Modify templates in templates/ for design changes
  3. Commit and push to trigger automatic rebuild

๐Ÿค– CI/CD Pipeline

On every push to main, GitHub Actions automatically:

  1. Spins up a Ubuntu runner
  2. Installs Typst
  3. Compiles all variants from YAML + templates
  4. Deploys PDFs to GitHub Pages
  5. Makes available at https://neelm47.github.io/cv-as-code/ai-engineer.pdf

Pipeline Configuration (.github/workflows/build.yml)

name: Build and Deploy CV

on:
  push:
    branches: [ main ]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      
      - name: Install Typst
        run: |
          curl -fsSL https://typst.com/install.sh | sh
          echo "$HOME/.local/bin" >> $GITHUB_PATH
      
      - name: Build CV
        run: make all
        
      - name: Upload PDFs
        uses: actions/upload-artifact@v3
        with:
          name: cv-pdfs
          path: output/*.pdf
          
      - name: Deploy to Pages
        uses: peaceiris/actions-gh-pages@v3
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./output
          publish_branch: gh-pages
          keep_files: false

๐Ÿ”— Live Demo

[![QR Code](https://api.qrserver.com/v1/create-qr-code/?size=200x200&data=https://neelm47.github.io/cv-as-code/ai-engineer.pdf)]

๐Ÿ’ก Why This Matters

For Engineers

  • Demonstrates systems thinking โ€“ I don't just "know" CI/CD; I use it to solve real problems
  • Shows automation mindset โ€“ Why do manually what a machine can do?
  • Proves adaptability โ€“ Quickly learn and apply new tools (Typst)

For Recruiters

  • Always up-to-date โ€“ No more "is this the latest version?"
  • Perfect formatting โ€“ What you see is what you get
  • Tech stack transparency โ€“ See exactly what tools I work with

๐Ÿง  Lessons Learned

  1. Start with structure โ€“ Separating content from presentation was the key enabler
  2. Automate early โ€“ The CI/CD pipeline saved hours of manual work
  3. Version everything โ€“ Git history has saved me more than once
  4. Keep it simple โ€“ Typst was easier to learn than LaTeX

๐Ÿ”ฎ Future Roadmap

  • Phase 1: โœ… Basic CV-as-Code pipeline
  • Phase 2: ๐Ÿ”„ Multiple variants (AI/Data Eng)
  • Phase 3: ๐Ÿšง RAG-based job description matching
  • Phase 4: ๐Ÿ“ Automated cover letter generation
  • Phase 5: ๐ŸŒ Multi-language support

๐Ÿค Contributing

This is a personal project, but I'm open to ideas! Feel free to:

  • Open an issue with suggestions
  • Fork and customize for your own CV
  • Share how you've adapted the concept

๐Ÿ“ฌ Contact


๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


Built with automation, version control, and โ˜•

About

A "CV as Code" pipeline. Automatically builds, versions, and deploys my professional resume to PDF/Web using CI/CD automation.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages