Markdown + Porfolio = Downfolio
AI-powered CLI tool for generating customized resumes and cover letters from markdown templates based on your career experience.
- Create base templates for cover letter and resumes based on your REAL career experience. (Don't Use AI for this step!)
- For every job you want to apply for use Downfolio to generate custom resumes and cover letters from your base templates using a job description.
- Review the output carefully and ensure it reflects your work experience.
- Edit as needed.
- Apply to the job.
Downfolio requires the following dependencies for document conversion:
Required for DOCX and PDF conversion:
- Pandoc - Document converter
# macOS brew install pandoc # Other platforms: https://pandoc.org/installing.html
Required for PDF conversion only:
- PDF Engine - One of the following:
- BasicTeX (recommended, ~100MB)
# macOS brew install --cask basictex # Then restart your terminal or run: eval "$(/usr/libexec/path_helper)"
- MacTeX (full distribution, ~4GB)
brew install --cask mactex-no-gui
- wkhtmltopdf (alternative)
brew install wkhtmltopdf
- BasicTeX (recommended, ~100MB)
Note: Markdown format requires no dependencies. DOCX requires only Pandoc. PDF requires both Pandoc and a PDF engine.
pnpm install
pnpm run build
pnpm link # Makes 'downfolio' command available globally when testing- Initialize the project:
This creates
downfolio init
~/Downfolio/directory with the following structure:~/Downfolio/ ├── config.yaml # API keys and settings ├── Templates/ # Your resume and cover letter templates ├── Jobs/ # Job descriptions you're applying to └── Output/ # Generated customized documents
Templates are versions of your cover letters or resumes. Use different templates based on your job search needs.
Examples: Engineering_Resume.md, Product_Manager_Cover_Letter,md, VP_of_Marketing_Resume.md, etc
-
Create template files:
- Create your resume or cover letter templates as markdown files directly in
~/Downfolio/Templates/ - Example:
~/Downfolio/Templates/my_resume_template.md
- Create your resume or cover letter templates as markdown files directly in
-
Register a template:
downfolio template add
- Selects from markdown files already in
~/Downfolio/Templates/ - Registers it so you can use it for generation
- Templates are reusable across all job applications
- Selects from markdown files already in
Jobs are specific descriptions about a job you are applying for. This is usually found at the beginning of a Job post. This metadata is used to customize each output file.
Example:
Role Overview:
- We’re looking for a Senior Product Manager to help build and scale agentic AI systems at ABC Co. In this role, you will work closely with Engineering, Applied AI/ML, Design, and customer-facing teams to ship production-ready agentic capabilities and make them successful in real customer environments.This role emphasizes execution, customer impact, and production rigor, with opportunities to grow into broader platform ownership over time.
What You’ll Do:
- Define and execute product initiatives for agentic AI systems, with a focus on measurable customer and business outcomesOwn significant parts of the agentic system lifecycle, including orchestration, decisioning, evaluation, and iteration.
- Contribute to building a repeatable framework for launching, evaluating, and improving agentic capabilities across customers
- Help define how agentic systems are measured and improved in production, balancing autonomy with safety and reliability
- Partner closely with Engineering, Applied AI/ML, Design, and Solutions teams to ship production-ready systemsWork directly with customers to understand workflows, requirements, and success criteria
- Drive customer-informed prioritization by staying close to live deployments and real usage patternsSupport best practices for agent evaluation, iteration, and safe rolloutRepresent the product in customer conversations, demos, and feedback sessions
-
Create job description files:
- Copy/paste job descriptions from job posts into a new markdown files directly in
~/Downfolio/Jobs/ - Example:
~/Downfolio/Jobs/netflix_engineer_job.md
- Copy/paste job descriptions from job posts into a new markdown files directly in
-
Register a job:
downfolio job add
- Interactive prompts:
- Select from markdown files already in
~/Downfolio/Jobs/ - Registers it so you can use it for generation
- Jobs are reusable across all job applications
- Select from markdown files already in
- Interactive prompts:
-
Generate new documents:
downfolio generate
- Interactive prompts:
- Select which job to use (from registered jobs)
- Select which template(s) to use (resume and/or cover letter)
- Choose output formats (markdown, docx, pdf)
- AI will customize the template(s) based on the job description
- Customized documents are saved to
~/Downfolio/Output/<output-name>/
- Interactive prompts:
- Review AI-generated content before submitting
- Edit markdown files and regenerate if needed
- Keep outputs organized by company/role
- Version control the markdown files if desired
- Go to https://platform.openai.com/api-keys
- Create a new API key
Set minimal permissions!
- Select "Restricted" and enable only:
- Under Model Capabilities select Chat Completions - Request
- You don't need any other permissions.
- Go to https://platform.claude.com/
- Create a new API key
# Build TypeScript
pnpm run build
# Run in development mode
pnpm run dev
# Watch for changes
pnpm run watchSee tests
