The majority of AI resume tools are liars. You feed a job description, your resume, and an LLM will try to shove in as many keywords from the job posting into your resume, with no consideration of whether you actually have those skills. It's dishonest and also puts the applyer into a compromised position come interview time.
ARC was created with the express purpose of mitigating this issue.
The system goes through each and every point on your resume—before looking at any job description—in order to create a set of keyword variables it can use. It makes sure that the variables created are synonyms, and are directly exchangable with the current keywords in your resume. Users can add keyword variables manually to ensure their full experience is available.
- Researches the company to enhance the job description with additional context
- Selects relevant sentences for each role in your resume
- Constructs polished, targeted sentences that highlight your relevant experience
- Reviews sentences for clarity, grammar, and readability
- Adjusts action words to avoid repetition
- Reviews the overall content for relevance and narrative flow
- Creates a tailored resume summary that aligns with the job requirements
- Python 3.8+
- An OpenAI or OpenRouter API key for core functionality
- A Perplexity API key (default) or Tavily API key for company research
-
Clone this repository:
git clone https://github.com/openfinesse/arc.git cd arc -
Install the required packages:
pip install -r requirements.txt
-
Create a
.envfile in the root directory with your API keys:OPENAI_API_KEY=your_openai_api_key PERPLEXITY_API_KEY=your_perplexity_api_key # Or alternatively: # TAVILY_API_KEY=your_tavily_api_key # RESEARCH_API_PROVIDER=tavilyAdditional configuration options:
# Control how long company research is cached (in days) # COMPANY_CACHE_DAYS=30
ARC now automatically caches company research results to improve performance and reduce API usage. When you run ARC for a job at a specific company, the system will:
- First check if research for this company already exists in the cache
- Use the cached research if it's available and not expired
- Perform new research only when necessary and cache the results
This caching mechanism helps you:
- Save on API costs when applying to multiple positions at the same company
- Speed up the customization process for repeat applications
- Reduce unnecessary API calls
The cache is stored in the cache/company_research directory. By default, cached research expires after 30 days, but you can adjust this by setting the COMPANY_CACHE_DAYS environment variable.
ARC uses a modular YAML format for your base resume, which allows the system to mix and match content effectively. You have two options:
- Create a resume.yaml file manually following the structure in the example files
- Let ARC create one for you by running the system without specifying a yaml resume file
For the second option, ARC will run a modularization process to create a structured YAML file from your inputs.
Run ARC with a job description to create a customized resume:
python -m src.main --job-description path/to/job_description.txt --output path/to/output/resume.mdFor a specific resume file:
python -m src.main --resume path/to/your/resume.yaml --job-description path/to/job_description.txt --output path/to/output/resume.md--job-description: Path to the job description text file (required)--output: Path to save the customized resume (required)--resume: Path to your resume YAML file (optional, defaults toinput/resume.yaml)--skip-modularizer: Skip checking for and creating a modular resume (optional)--clear-company-cache: Clear all cached company research data (optional)--list-cached-companies: List all companies in the research cache (optional)
You can manage the company research cache using the following commands:
# List all companies in the cache
python -m src.main --list-cached-companies
# Clear the entire company research cache
python -m src.main --clear-company-cacheYour resume should follow this structure:
basics:
name: "Your Name"
email: "your.email@example.com"
# Other personal details
work:
- title_variables:
- "Job Title"
- "Alternative Title"
start_date: "Jan 2020"
end_date: "Present"
company: "Company Name"
location: "City, State"
responsibilities_and_accomplishments:
group_1:
modular_sentence: "Accomplished {X} by doing {Y} which resulted in {Z}"
variables:
X:
- "option 1 for X"
- "option 2 for X"
Y:
- "option 1 for Y"
- "option 2 for Y"
Z:
- "option 1 for Z"
- "option 2 for Z"
# More groups...
# More work experiences...See input/resume_example.yaml for a complete example.
ARC generates a customized resume in Markdown format, which you can:
- Convert to PDF using tools like Pandoc
- Import into word processors
- Use with Markdown-based resume templates
The output includes a tailored professional summary and selectively highlighted experience based on the job requirements.