Configuration

Environment variables

The jojo configure command creates a .env file with your provider-specific API key:

# For Anthropic
ANTHROPIC_API_KEY=your_api_key_here

# For OpenAI
OPENAI_API_KEY=your_api_key_here

# For other providers, the env var name depends on your chosen provider

# Optional: for web search during research
SERPER_API_KEY=your_serper_key_here

User configuration

After running ./bin/jojo configure, edit config.yml to customize:

seeker_name: Your Name
base_url: https://yourwebsite.com/applications

reasoning_ai:
  service: anthropic           # Your chosen provider
  model: claude-sonnet-4-5     # For complex reasoning tasks

text_generation_ai:
  service: anthropic           # Your chosen provider
  model: claude-3-5-haiku-20241022  # Faster for simple tasks

voice_and_tone: professional and friendly

website:
  cta_text: "Schedule a Call"
  cta_link: "https://calendly.com/yourname/30min"

# Resume data transformation permissions
resume_data:
  permissions:
    skills: [remove, reorder]
    databases: [remove, reorder]
    tools: [remove, reorder]
    recommendations: [remove]
    experience: [reorder]
    projects: [reorder]
    languages: [reorder]
    summary: [rewrite]
    experience.description: [rewrite]
    education.description: [rewrite]
    experience.technologies: [remove, reorder]
    experience.tags: [remove, reorder]
    projects.skills: [reorder]

See the customizing your resume guide for a deep dive into permissions.

Supported LLM providers

Jojo supports providers via RubyLLM including:

Provider Notes
Anthropic Claude models
OpenAI GPT models
DeepSeek  
Google Gemini  
Mistral  
OpenRouter  
Perplexity  
Ollama Local models
AWS Bedrock  
Google Vertex AI  
GPUStack  

To switch providers, run jojo configure --overwrite or manually edit config.yml and .env.

Input files

The configure command creates these files in inputs/:

inputs/resume_data.yml (required)

Structured resume data in YAML format containing your complete work history, skills, experience, and projects. Permissions in config.yml control which fields can be filtered, reordered, or rewritten for each job.

Delete the first comment line after customizing — Jojo warns you if templates are unchanged.

Customizing templates

Output templates live in templates/resume.md.erb, cover_letter.md.erb, and website/index.html.erb. Jojo uses these defaults automatically.

To customize any template, copy it to inputs/templates/ and edit it there. Jojo checks inputs/templates/ first and falls back to templates/ if no override exists:

# Customize the resume template
cp templates/resume.md.erb inputs/templates/resume.md.erb
nvim inputs/templates/resume.md.erb

# Customize the cover letter template
cp templates/cover_letter.md.erb inputs/templates/cover_letter.md.erb

# Customize the website template and its assets
cp templates/website/index.html.erb inputs/templates/website/index.html.erb
cp templates/website/script.js inputs/templates/website/script.js

The inputs/ directory is gitignored, so your customizations stay private.

inputs/recommendations.md (optional)

LinkedIn recommendations used in the website carousel. Delete the file if you don’t want recommendations.

The inputs/ directory is gitignored, so your personal information stays private.


This site uses Just the Docs, a documentation theme for Jekyll.