resume_updater
An AI-powered tool that automatically tailors your resume for specific job applications using the Model Context Protocol (MCP) agent framework.
Project Overview
This tool analyzes your current resume, GitHub repositories, and a job posting to generate a tailored resume that highlights relevant skills and experiences for the target position.
Future
-
Enhanced Web Scraping
- Implement advanced web scraping capabilities to handle JavaScript-rendered content and iframes
- Explore integration with tools like Selenium or Playwright for dynamic content retrieval
-
Interactive User Interface
- Develop a Streamlit-based chat interface for a more intuitive user experience
- Provide GUI-based configuration of input.json as an alternative to manual editing
- Enable real-time resume previews and adjustments
-
HTML-Based Resume Generation
- Pivot from Markdown to HTML for greater control over formatting
- Implement custom CSS styling for precise layout management
- Maintain clean, semantic markup for accessibility
-
Page Length Optimization
- Integrate PDF page length validation into the evaluator-optimizer workflow
- Add automated font size and margin adjustments while preserving readability
-
More Isolated Agents/Prompts
- Break down current monolithic agents into focused, single-task components
- Resume analyzer
- Job requirements extractor
- Content optimizer
- Format validator
- Store prompts in separate YAML files for easy testing and iteration
- Implement basic unit tests with mock responses
- Break down current monolithic agents into focused, single-task components
Approach
-
Input Processing
- Reads and parses existing resume from PDF
- Analyzes specified GitHub repositories for project details
- Extracts requirements from job posting URL and description file
- Caveat: The
fetch-mcpserver retrieves only web content present in HTML. To handle more complex content, such as JavaScript-rendered iFrames, additional MCP servers must be utilized in the future.
- Caveat: The
-
Content Optimization
- Aggregates information from all sources
- Uses an evaluator-optimizer workflow to generate optimized content
- Ensures output maintains professional formatting and fits one page
-
Quality Control
- Evaluates resume for relevance to job requirements
- Verifies clear demonstration of skills
- Checks formatting and length constraints
-
Output Generation
- Generates the final resume in markdown format
- Pauses to allow the user to review and tweak the tailored resume
Technologies Used
- MCP Agent Framework: Core orchestration system for AI agents
- OpenAI: Powers the AI agents for content analysis and generation
- MCP Servers:
fetch-mcp: Handles URL content retrievalmarkdownify-mcp: Converts between formatsfilesystem-mcp: Manages file operationsmarkdown2pdf-mcp: Converts markdown to PDF format
Setup Instructions
Python Dependencies
-
Install Poetry (if not already installed): Follow the instructions from the official Poetry documentation.
-
Navigate to Your Project Directory:
cd /home/bnoffke/repos/resume_updater -
Install the Python Dependencies:
poetry install
npm Dependencies
-
Ensure Node.js and npm are Installed: You can download and install them from Node.js official website.
-
Navigate to Your Project Directory:
cd /home/bnoffke/repos/resume_updater -
Install the npm Dependencies:
npm install
Install pnpm
- Install pnpm (required for some dependencies):
Or follow alternative installation methods from the pnpm documentation.
npm install -g pnpm
Additional Requirements
-
Setup markdown2pdf-mcp server:
- Clone the repository from markdown2pdf-mcp
- Follow the installation instructions in the repository's README
-
Setup markdownify-mcp server:
- Clone the repository from markdownify-mcp
- Install dependencies:
pnpm install - Build the project:
pnpm run build
-
Setup fetch-mcp server:
- Clone the repository from fetch-mcp
- Install dependencies:
npm install - Build the project:
npm run build
-
Configure MCP Servers Use the provided
mcp_agent.config.yamlfile in the repository as a reference and update the paths according to your local installations of the MCP servers.
Usage
- Create or modify
input.jsonwith your configuration:
{
"root_path": "/path/to/resume/directory",
"resume_path": "current_resume.pdf",
"github_repos": [
"https://github.com/username/repo1",
"https://github.com/username/repo2"
],
"job_posting_url": "https://example.com/job-posting",
"job_description_path": "job_description.txt",
"output_path": "tailored_resume",
"additional_info": "additional_info.txt"
}
- Run the script with the config flag:
poetry run python resume_updater.py --config input.json
Configuration Parameters
- root_path: Base directory where your resume files are stored
- resume_path: Path to your current resume in PDF format (relative to root_path)
- github_repos: List of GitHub repository URLs that showcase relevant work
- job_posting_url: URL of the job posting to analyze
- job_description_path: Path to a text file containing additional job description details (relative to root_path)
- output_path: Base name for output files (will create both .md and .pdf, relative to root_path)
- additional_info: Optional path to a text file containing additional information to incorporate (relative to root_path)
The script will:
- Generate a markdown file at
{root_path}/{output_path}.md - Pause for your review and modifications
- Create the final PDF at
{root_path}/{output_path}.pdfusing markdown2pdf-mcp server
