ATS Master Resume Compiler
Project Overview
An automated career acceleration utility developed in Python. This tool aggregates a central JSON data structure representing my entire master professional history, parses it, and dynamically compiles optimized, single-page, ATS-compliant HTML/CSS resumes and cover letters. It is designed to bridge technical scripting with strategic career development.
The Problem
Traditional resume editing is incredibly manual and error-prone. Tailoring qualifications for specific roles usually means managing multiple Word documents, losing layout constraints, and failing automated applicant tracking systems (ATS) due to non-standard elements. Developers and coordinators need a programmatic way to manage, compile, and maintain a single source of truth.
What I Did (Technical Action)
Designed a modular Python CLI pipeline. Stored my master experiences in a single, robust JSON database file. Developed data extraction modules to filter experience nodes based on target roles. Programmed an HTML/CSS template engine utilizing standard inline CSS spacing, relative padding ratios (10.5px body font), and semantic elements. Integrated a headless Chrome compiler via CLI hooks to print vector PDFs with zero browser headers/footers, maintaining exact single-page constraint boundaries.
Architected a programmatic candidate application suite. Integrated National Occupational Classification (NOC) schemas (such as Transportation Coordinators and Customer Service Supervisors) directly into the compiler. The tool analyzes job descriptions, extracts priority keywords, and selects the most relevant professional metrics from my master history, compiling optimized single-page submissions automatically.
Core Code Implementation
import json
import subprocess
def compile_resume(data_path, template_path, output_path):
# 1. Load master data from secure JSON source
with open(data_path, 'r') as f:
master_data = json.load(f)
# 2. Extract profile nodes and perform formatting logic
profile = master_data['profile']
experience = master_data['experience']
# 3. Generate dynamic HTML using clean, standard table structures
html_content = f"""
<html>
<head>
<style>
body {{ font-family: 'Arial', sans-serif; font-size: 10.5px; line-height: 1.4; color: #333; }}
h2 {{ border-bottom: 1px solid #333; font-size: 13px; text-transform: uppercase; margin-top: 15px; }}
</style>
</head>
<body>
<h1>{profile['name']}</h1>
<p>{profile['email']} | {profile['phone']} | {profile['linkedin']}</p>
...
</body>
</html>
"""
# 4. Save intermediate build file
temp_html = "build/temp_resume.html"
with open(temp_html, 'w') as f:
f.write(html_content)
# 5. Trigger Headless Chrome subprocess command to generate vector PDF
cli_command = [
"chrome", "--headless", "--disable-gpu",
"--print-to-pdf=" + output_path, temp_html,
"--no-pdf-header-footer"
]
subprocess.run(cli_command, check=True)
print(f"✔ Vector PDF successfully generated: {output_path}")
# Execute build pipeline
compile_resume('data/master.json', 'templates/ats.html', 'build/Jay_Patel_Resume.pdf')