██████╗ ██████╗ ███████╗███╗   ██╗ █████╗ ██████╗ ██████╗ ██╗  ██╗   ██╗
██╔═══██╗██╔══██╗██╔════╝████╗  ██║██╔══██╗██╔══██╗██╔══██╗██║  ╚██╗ ██╔╝
██║   ██║██████╔╝█████╗  ██╔██╗ ██║███████║██████╔╝██████╔╝██║   ╚████╔╝ 
██║   ██║██╔═══╝ ██╔══╝  ██║╚██╗██║██╔══██║██╔═══╝ ██╔═══╝ ██║    ╚██╔╝  
╚██████╔╝██║     ███████╗██║ ╚████║██║  ██║██║     ██║     ███████╗██║   
 ╚═════╝ ╚═╝     ╚══════╝╚═╝  ╚═══╝╚═╝  ╚═╝╚═╝     ╚═╝     ╚══════╝╚═╝

Your job search. Your machine.
Zero cloud.

Open-source terminal agent that discovers roles, scores fit, tailors ATS-safe CVs, and drafts applications — 100% locally via Ollama.

No cloud AI subscription No API key required No vendor lock-in Full local control
$pip install openapply
View Documentation
openapply — terminal
LIVE
manas@local:~$
Step:0/4
Inference:Local (Ollama)
Status:Ready

End-to-End Local Pipeline

From job discovery to application submission — entirely on your machine.

openapply pipeline --list-steps
6 STAGES
$ openapply pipeline --describe
[01]Job Discovery
[02]10-Dimension Fit Scoring
[03]ATS CV Generation
[04]Human-Reviewed Drafting
[05]Parallel Batch Processing
[06]Outcome Learning Loop
$ openapply scan --auto # Full automated scan
$ openapply batch --min-score B --limit 20 # Batch pipeline
HITL Always
Privacy-first
All data stays local • SQLite DB • No cloud uploads

Why openapply?

career-ops showed the world this is possible. openapply makes it accessible to everyone.

01

Privacy-First

CV, config, reports live locally. SQLite DB on your machine. Prompt execution via local Ollama — zero data sent to cloud.

$ openapply setup
02

Fit Scoring

Scores each role 1.0–5.0 across 10 dimensions. Grades A/B/C/D/F. Writes a markdown report to reports/.

$ openapply scan
03

ATS CV Generation

Extracts JD keywords, reorders bullets by relevance without deleting your content. Renders ATS-safe HTML to PDF.

$ openapply pipeline <url>
04

HITL Philosophy

AI analyzes. You decide. The system drafts and prefills — but a human must review before any application is marked applied.

$ openapply apply <url>
05

Batch Processing

Process queued URLs concurrently. Fault tolerant — one failure doesn't block the queue. Fully resumable.

$ openapply batch --min-score B
06

Outcome Learning

Log interview/rejection/offer/ghosted outcomes. Scoring weights in DB auto-adjust based on feedback patterns.

$ openapply learn <id> offer

Local Ollama Models

All inference runs locally through Ollama. No API keys. No subscriptions.

openapply model --list
OLLAMA LOCAL
$ ollama list
[1]llama3.1:8b(evaluation)
[2]qwen2.5:14b(generation)
[3]any-local-model(custom)
Guidance:
$ ollama pull llama3.1:8b # For scan/eval loops
$ ollama pull qwen2.5:14b # For CV/letter generation
$ openapply doctor # Verify model availability
100% Local
Zero cloud
Use smaller models for volume loops • Larger models for final artifact quality

Ready to own your job search?

Install in two commands. Run entirely locally. Your data, your machine, your control.

Quick start
$pip install openapply
$openapply setup
$openapply doctor
$openapply scan --limit 5 --link-limit 30
Star on GitHub
$ pip install openapply