← Back to portfolio

Open-source project · Local-first AI workflow

CV Match Agent

A well-structured TypeScript CLI for local-first CV-to-job matching and application asset generation.

Role
Independent open-source TypeScript CLI project focused on bounded AI workflow design.
System scope
CV parsing, candidate-profile extraction, job requirement analysis, validation, repair, and local output generation.
Privacy boundary
Runs locally by default with Ollama support; OpenAI mode sends only the supplied CV and job content to the OpenAI API.

Key capabilities

  • Reads CVs from Markdown, plain text, and text-based PDF files, then structures them into semantic sections and a reusable candidate profile.
  • Extracts job requirements and compares them against candidate experience, skills, projects, achievements, and location when available.
  • Generates a match report, CV improvements, LinkedIn outreach message, cover letter, and interview-preparation notes.
  • Uses schema validation, output review, repair attempts, and debug artifacts to keep AI-generated results grounded and inspectable.
  • Supports both local Ollama models for privacy-sensitive analysis and configurable OpenAI models through a provider-agnostic workflow.

Local-first by design

Runs locally with no frontend, database, authentication system, or remote app server. Ollama keeps supplied CV and job content on the local machine; OpenAI mode sends only the provided content to the OpenAI API.

cv-match-agent
01

Input

CV file · Job description

02

Structure

Semantic sections · Candidate profile

03

Analyze

Match · strengths · gaps

04

Generate

CV improvements · outreach · cover letter · interview prep

05

Output

match-report.md · cover-letter.txt · interview-prep.md

Local-first architecture

The tool is designed as a bounded command-line workflow rather than a hosted SaaS product. Inputs stay on the user’s machine in Ollama mode, and generated files are written locally for review.

Workflow safeguards

  • Structures CV content into semantic sections and a candidate profile before comparison.
  • Uses schema validation, output review, repair attempts, and debug artifacts to make AI-generated output inspectable.
  • Separates provider selection from workflow logic so local Ollama and configurable OpenAI models can run through the same pipeline.

Generated outputs

  • Match report for strengths, gaps, and realistic positioning.
  • CV improvement notes grounded in supplied candidate and job content.
  • LinkedIn outreach, cover letter, and interview-preparation notes written to local output files.

Technologies

Node.jsTypeScriptOpenAI Responses APIOllamaZodCLIText-based PDF parsingLocal context
View source