Skip to content

Commit a1804d4

Browse files
committed
Changed README
1 parent 693d74e commit a1804d4

1 file changed

Lines changed: 263 additions & 0 deletions

File tree

README.md

Lines changed: 263 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,263 @@
1+
# 📄 CV-as-Code
2+
3+
> **Treating my professional identity like a production-grade software system**
4+
5+
[![GitHub Actions](https://img.shields.io/badge/CI/CD-GitHub%20Actions-brightgreen)](https://github.com/features/actions)
6+
[![Typst](https://img.shields.io/badge/Typesetting-Typst-239DAD)](https://typst.app/)
7+
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
8+
[![Live CV](https://img.shields.io/badge/Live-CV-blue)](https://neelm47.github.io/cv-as-code/ai-engineer.pdf)
9+
10+
---
11+
12+
## 🎯 Overview
13+
14+
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.
15+
16+
**No more.**
17+
18+
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.
19+
20+
---
21+
22+
## 🏗️ Architecture
23+
24+
```
25+
┌─────────────┐ ┌──────────────┐ ┌─────────────┐ ┌──────────────┐
26+
│ Content │────▶│ Typesetting │────▶│ CI/CD │────▶│ Deployment │
27+
│ (YAML) │ │ (Typst) │ │ (GitHub │ │ (GitHub │
28+
│ │ │ │ │ Actions) │ │ Pages) │
29+
└─────────────┘ └──────────────┘ └─────────────┘ └──────────────┘
30+
│ │ │ │
31+
▼ ▼ ▼ ▼
32+
Single source Professional Automated on Always-live
33+
of truth formatting every push public URL
34+
```
35+
36+
### Key Principles
37+
38+
- **📦 Content vs. Presentation** – All data lives in structured YAML; design lives in Typst templates
39+
- **🔁 Single Source of Truth** – Never update the same information in two places
40+
- **🤖 Automated Pipeline** – Every git push triggers a fresh build
41+
- **📊 Version Control** – Full history of every CV version ever sent
42+
- **🌐 Always Live** – Portfolio always serves the latest PDF
43+
44+
---
45+
46+
## 🛠️ Tech Stack
47+
48+
| Component | Technology | Purpose |
49+
|-----------|------------|---------|
50+
| **Data Layer** | YAML | Structured storage of all CV content |
51+
| **Presentation Layer** | [Typst](https://typst.app/) | Modern, Rust-based typesetting (faster than LaTeX) |
52+
| **Build System** | Make / Typst CLI | Local compilation |
53+
| **CI/CD** | [GitHub Actions](https://github.com/features/actions) | Automated build on every push |
54+
| **Hosting** | [GitHub Pages](https://pages.github.com/) | Permanent, live URL |
55+
| **Version Control** | Git | Complete history tracking |
56+
57+
---
58+
59+
## ✨ Features
60+
61+
### ✅ Current
62+
- **Modular architecture** – Change fonts in one file, content in another
63+
- **Perfect formatting** – No mysterious margin shifts between versions
64+
- **Instant updates** – CV regenerates in seconds, not minutes
65+
- **Git-tracked history** – See exactly what your CV looked like 6 months ago
66+
- **QR-code ready** – Share the live link anywhere
67+
- **Multiple variants** – Filter YAML data for role-specific versions (AI Eng vs. Data Eng)
68+
69+
### 🚀 Coming Soon
70+
- **RAG-powered customization** – Feed it a job description, get a tailored CV
71+
- **Natural language interface** – Describe the role, get a polished PDF with embedded portfolio links
72+
- **Automated cover letters** – Generate matching cover letters from the same data
73+
74+
---
75+
76+
## 📁 Project Structure
77+
78+
```
79+
cv-as-code/
80+
├── .github/
81+
│ └── workflows/
82+
│ └── build.yml # GitHub Actions CI/CD pipeline
83+
├── data/
84+
│ └── cv.yaml # Single source of truth (all content)
85+
├── templates/
86+
│ ├── main.typ # Main Typst template
87+
│ ├── header.typ # Header styling
88+
│ └── sections.typ # Section layouts
89+
├── variants/
90+
│ ├── ai-engineer.typ # AI-focused variant
91+
│ └── data-engineer.typ # Data Eng-focused variant
92+
├── scripts/
93+
│ └── generate.sh # Local build helper
94+
├── output/ # Generated PDFs (gitignored)
95+
├── .gitignore
96+
├── Makefile # Local build commands
97+
├── README.md
98+
└── LICENSE
99+
```
100+
101+
---
102+
103+
## 🚦 Getting Started
104+
105+
### Prerequisites
106+
107+
```bash
108+
# Install Typst (if you don't have it)
109+
curl -fsSL https://typst.com/install.sh | sh
110+
111+
# Or via package manager
112+
sudo apt install typst # Debian/Ubuntu
113+
brew install typst # macOS
114+
```
115+
116+
### Local Development
117+
118+
```bash
119+
# Clone the repository
120+
git clone https://github.com/NeelM47/cv-as-code.git
121+
cd cv-as-code
122+
123+
# Build all variants
124+
make all
125+
126+
# Build specific variant
127+
make ai-engineer
128+
129+
# Watch for changes (auto-rebuild)
130+
make watch
131+
132+
# Clean output directory
133+
make clean
134+
```
135+
136+
### Customizing Content
137+
138+
1. Edit `data/cv.yaml` with your information
139+
2. Modify templates in `templates/` for design changes
140+
3. Commit and push to trigger automatic rebuild
141+
142+
---
143+
144+
## 🤖 CI/CD Pipeline
145+
146+
On every push to `main`, GitHub Actions automatically:
147+
148+
1. **Spins up** a Ubuntu runner
149+
2. **Installs** Typst
150+
3. **Compiles** all variants from YAML + templates
151+
4. **Deploys** PDFs to GitHub Pages
152+
5. **Makes available** at `https://neelm47.github.io/cv-as-code/ai-engineer.pdf`
153+
154+
### Pipeline Configuration (`.github/workflows/build.yml`)
155+
156+
```yaml
157+
name: Build and Deploy CV
158+
159+
on:
160+
push:
161+
branches: [ main ]
162+
163+
jobs:
164+
build:
165+
runs-on: ubuntu-latest
166+
steps:
167+
- uses: actions/checkout@v3
168+
169+
- name: Install Typst
170+
run: |
171+
curl -fsSL https://typst.com/install.sh | sh
172+
echo "$HOME/.local/bin" >> $GITHUB_PATH
173+
174+
- name: Build CV
175+
run: make all
176+
177+
- name: Upload PDFs
178+
uses: actions/upload-artifact@v3
179+
with:
180+
name: cv-pdfs
181+
path: output/*.pdf
182+
183+
- name: Deploy to Pages
184+
uses: peaceiris/actions-gh-pages@v3
185+
with:
186+
github_token: ${{ secrets.GITHUB_TOKEN }}
187+
publish_dir: ./output
188+
publish_branch: gh-pages
189+
keep_files: false
190+
```
191+
192+
---
193+
194+
## 🔗 Live Demo
195+
196+
- **AI Engineer CV**: https://neelm47.github.io/cv-as-code/ai-engineer.pdf
197+
- **Portfolio**: https://neelm47.github.io/
198+
Scan this QR code to see the live CV:
199+
200+
```
201+
[INSERT QR CODE IMAGE HERE]
202+
```
203+
204+
---
205+
206+
## 💡 Why This Matters
207+
208+
### For Engineers
209+
- **Demonstrates systems thinking** – I don't just "know" CI/CD; I use it to solve real problems
210+
- **Shows automation mindset** – Why do manually what a machine can do?
211+
- **Proves adaptability** – Quickly learn and apply new tools (Typst)
212+
213+
### For Recruiters
214+
- **Always up-to-date** – No more "is this the latest version?"
215+
- **Perfect formatting** – What you see is what you get
216+
- **Tech stack transparency** – See exactly what tools I work with
217+
218+
---
219+
220+
## 🧠 Lessons Learned
221+
222+
1. **Start with structure** – Separating content from presentation was the key enabler
223+
2. **Automate early** – The CI/CD pipeline saved hours of manual work
224+
3. **Version everything** – Git history has saved me more than once
225+
4. **Keep it simple** – Typst was easier to learn than LaTeX
226+
227+
---
228+
229+
## 🔮 Future Roadmap
230+
231+
- **Phase 1**: ✅ Basic CV-as-Code pipeline
232+
- **Phase 2**: 🔄 Multiple variants (AI/Data Eng)
233+
- **Phase 3**: 🚧 RAG-based job description matching
234+
- **Phase 4**: 📝 Automated cover letter generation
235+
- **Phase 5**: 🌐 Multi-language support
236+
237+
---
238+
239+
## 🤝 Contributing
240+
241+
This is a personal project, but I'm open to ideas! Feel free to:
242+
- Open an issue with suggestions
243+
- Fork and customize for your own CV
244+
- Share how you've adapted the concept
245+
246+
---
247+
248+
## 📬 Contact
249+
250+
- **GitHub**: [@NeelM47](https://github.com/NeelM47)
251+
- **Portfolio**: [https://neelm47.github.io/]
252+
- **LinkedIn**: [https://www.linkedin.com/in/neel-more-ai/]
253+
- **Email**: neelmore007@gmail.com
254+
255+
---
256+
257+
## 📄 License
258+
259+
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
260+
261+
---
262+
263+
*Built with automation, version control, and ☕*

0 commit comments

Comments
 (0)