-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Generate AST-Friendly Resume #148
Comments
How to Test AST Compatibility with ResumesTesting AST compatibility ensures your generated resume works seamlessly with Application Tracking Systems (ATS). Here’s how to approach it: Key Challenges with AST Parsing
How to Test for AST Compatibility1. Manual Testing with ATS Tools
2. Automated PDF Parsing Locally
const pdfParser = require('pdf-parse');
const fs = require('fs');
const dataBuffer = fs.readFileSync('./path-to-resume/resume.pdf');
pdfParser(dataBuffer).then((data) => {
const text = data.text;
console.log('Parsed content:', text);
const hasExperience = text.includes('Work Experience');
const hasEducation = text.includes('Education');
const hasSkills = text.includes('Skills');
if (hasExperience && hasEducation && hasSkills) {
console.log('AST-friendly: All sections found.');
} else {
console.log('AST issue: Missing sections.');
}
}); 3. Use OCR Simulations
Automating AST Testing with PlaywrightYou can use Playwright to automate AST testing on real job portals or simulate ATS behavior: const { test, expect } = require('@playwright/test');
test('Upload and validate resume parsing', async ({ page }) => {
await page.goto('https://example-job-portal.com');
await page.fill('#email', '[email protected]');
await page.fill('#password', 'password123');
await page.click('button[type="submit"]');
await page.click('text=Upload Resume');
const resumePath = './path-to-resume/resume.pdf';
await page.setInputFiles('input[type="file"]', resumePath);
await page.waitForSelector('.parsed-resume');
const parsedResume = await page.textContent('.parsed-resume');
expect(parsedResume).toContain('Work Experience');
expect(parsedResume).toContain('Education');
expect(parsedResume).toContain('Skills');
}); Suggested Workflow
These strategies ensure that resumes are both human-readable and ATS-compatible. |
Summary: Using LaTeX and JSON for an ATS-Friendly Resume WorkflowKey Context:
High-Level WorkflowStep 1: JSON Resume FormatStore your resume in JSON format. Example: {
"basics": {
"name": "John Doe",
"email": "[email protected]",
"phone": "+1234567890",
"website": "https://johndoe.com"
},
"work": [
{
"position": "Full Stack Developer",
"company": "XYZ Inc.",
"startDate": "2020-01",
"endDate": "Present",
"summary": "Developed scalable backend systems using Django.",
"highlights": [
"Improved API performance by 30%.",
"Collaborated with product designers and PMs."
]
},
{
"position": "Intern",
"company": "ABC Corp.",
"startDate": "2018-06",
"endDate": "2018-12",
"summary": "Developed internal tools for automation."
}
]
} Step 2: LaTeX TemplatePrepare a LaTeX template with placeholders for JSON values. Example: \documentclass[a4paper,11pt]{article}
\usepackage[a4paper,margin=1in]{geometry}
\usepackage{url}
\begin{document}
% Header Section
\begin{center}
{\Huge \textbf{<%= name %>}} \\
Email: <%= email %> \quad | \quad Phone: <%= phone %> \quad | \quad Website: \url{<%= website %>}
\end{center}
% Work Experience
\section*{Work Experience}
<% work.forEach(function(job){ %>
\textbf{<%= job.position %>} at \textit{<%= job.company %>} \\
<%= job.startDate %> -- <%= job.endDate || "Present" %> \\
<%= job.summary %> \\
\begin{itemize}
<% if(job.highlights) { job.highlights.forEach(function(highlight){ %>
\item <%= highlight %>
<% }) } %>
\end{itemize}
<% }); %>
\end{document} |
this part of #148 Introduce an ADR documenting the decision to use HTML for visually appealing, web-based resumes and LaTeX for ATS-friendly, structured PDF outputs. Both formats pull from a single JSON source to ensure consistency and reduce duplication while fulfilling distinct user and business needs. Signed-off-by: David Ng <[email protected]>
GH-148: Add ADR for HTML and LaTeX-based resume generation
Currently, the generated resume from the project is designed to be human-friendly, but it doesn’t seem to perform well when parsed by AST-based systems.
When submitting the resume to application sites with an "auto-import" feature, the experience is often poor as the parsing fails.
This issue may be caused by the presence of
highlighted
keywords or other formatting elements which interfere with accurate parsing.Key Ideas
Adjusting the Output for AST Compatibility:
Testing for AST Compatibility:
Removing Problematic Formatting:
highlighted
keywords or other non-standard formatting that may break AST parsers.Expected Outcome
The new feature should generate resumes that:
By addressing this gap, the resumes can perform optimally in both human and automated review systems, ensuring they are effectively processed by application platforms.
Let me know if additional context or clarification is needed!
The text was updated successfully, but these errors were encountered: