This project is an AI-powered resume customization system that tailors a candidate's resume to a specific job description. It utilizes multiple data sources, including the candidate's existing resume, LinkedIn profile, and GitHub profile, to create a comprehensive and tailored resume.
- Asynchronous processing for efficient data gathering and resume generation
- Integration with OpenAI's GPT models for intelligent resume customization
- Web scraping capabilities for job descriptions and LinkedIn profiles
- GitHub profile analysis for additional context
- Multiple AI agents working in parallel:
- ExistingResumeAgent: Tailors the existing resume to the job description
- LinkedInAgent: Creates a resume based on LinkedIn profile and job description
- AggregatorAgent: Combines and refines the output from other agents
- Markdown output format for easy editing and conversion
- Python 3.10+
- Poetry (for dependency management)
- Logfire (for logging)
-
Clone the repository:
git clone https://github.com/JoshuaOliphant/grosbeak.git cd grosbeak
-
Install dependencies using Poetry:
poetry install
-
Set up environment variables: Create a
.env
file in the project root and add the following:OPENAI_API_KEY=your_openai_api_key SERPER_API_KEY=your_serper_api_key GITHUB_API_KEY=your_github_api_key LOGFIRE_TOKEN=your_logfire_token
-
Prepare your input files:
- Save your existing resume as a Markdown file (e.g.,
existing_resume.md
)
- Save your existing resume as a Markdown file (e.g.,
-
Run the script:
uvicorn src.main:app --reload
-
When prompted, enter the following information:
- Job posting URL
- Your LinkedIn profile URL
- Path to your existing resume file
- Your GitHub profile URL (optional)
-
The script will process the information and generate a customized resume in Markdown format.
-
Find the output resume in the file specified (default:
customized_resume.md
).
You can modify the following parameters in the main.py
file:
resume_file_path
: Path to your existing resume fileoutput_file_path
: Path where the customized resume will be saved
-
The system gathers information from multiple sources:
- Scrapes the job description from the provided URL
- Fetches and parses the LinkedIn profile
- Reads the existing resume file
- Retrieves GitHub profile information (if provided)
-
Three AI agents process the information concurrently:
- ExistingResumeAgent tailors the existing resume to the job description
- LinkedInAgent creates a resume based on the LinkedIn profile and job description
- AggregatorAgent combines and refines the output from the other two agents
-
The final, customized resume is generated in Markdown format and saved to a file.
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
- OpenAI for providing the GPT models
- Serper for web scraping capabilities
- GitHub for API access to user profiles