Skip to content

sir-ad/knight

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Knight

CI Pages Release License: MIT

Privacy-first Chrome extension for job applications. Knight parses your resume locally or through your chosen provider, autofills common ATS portals, logs applications, syncs Gmail status updates, and drafts follow-ups without forcing your profile through a hosted AI workflow.

Knight icon

Website: sir-ad.github.io/knight

What It Does

  • Local-first resume parsing for PDF, DOCX, and TXT
  • LangExtract-powered local resume parser sidecar with PyMuPDF and optional Tesseract OCR
  • AI provider support for Ollama, OpenAI, Anthropic, Google Gemini, and OpenRouter
  • Smart defaults that auto-discover installed Ollama models and recommend the best reachable provider/model
  • Autofill support for Workday, Greenhouse, Lever, Naukri, iCIMS, SmartRecruiters, Taleo, SuccessFactors, plus a generic fallback
  • In-page review overlay before filling
  • Local application log with status history
  • Gmail read-only sync for confirmations, interviews, rejections, and offers
  • Follow-up email draft generation with the active provider

Repo Layout

Quick Start

git clone git@github.com:sir-ad/knight.git
cd knight/resume-parser-sidecar
./scripts/setup-venv.sh
./scripts/run.sh

In another terminal:

cd knight/careerflow
npm install
npm run build

Then load careerflow/build/chrome-mv3-prod in chrome://extensions with Developer Mode enabled.

Local Requirements

  • Node.js 20+
  • Python 3.11+
  • The local resume parser sidecar running on http://127.0.0.1:43118
  • Ollama running locally for the privacy-first path
  • A pulled model such as llama3.2:3b
  • tesseract installed locally if you want OCR for scanned PDF resumes
  • Optional cloud provider API key for OpenAI, Anthropic, Google Gemini, or OpenRouter
  • Optional Gmail OAuth setup using PLASMO_PUBLIC_GOOGLE_CLIENT_ID
cd resume-parser-sidecar
./scripts/setup-venv.sh
./scripts/run.sh

cd ../careerflow
OLLAMA_ORIGINS=chrome-extension://* ollama serve
ollama pull llama3.2:3b

Knight expects the Ollama endpoint as the host root only, for example http://localhost:11434. Do not add /api to the saved endpoint. Knight expects the resume parser service to stay on the default local URL unless you explicitly move it: http://127.0.0.1:43118.

Supported Portals

  • Workday via *.myworkdayjobs.com
  • Greenhouse via boards.greenhouse.io and *.greenhouse.io
  • Lever via jobs.lever.co and *.lever.co
  • Naukri via *.naukri.com
  • iCIMS via *.icims.com
  • SmartRecruiters via *.smartrecruiters.com
  • Oracle Taleo via *.taleo.net
  • SAP SuccessFactors via *successfactors* and *.jobs2web.com
  • Generic fallback for employer-hosted forms that expose standard labels, placeholders, or aria metadata

Validation

From careerflow:

npx tsc --noEmit
npm test -- --runInBand
npm run build
npm run package

From resume-parser-sidecar:

source .venv/bin/activate
pytest tests -q

Release Artifacts

  • CI verifies typecheck, tests, build, and packaged extension output
  • CI also installs tesseract-ocr and runs the sidecar pytest suite
  • Release workflow attaches the packaged Chrome extension zip to GitHub Releases
  • Pages workflow deploys the docs site from docs

Tags

chrome-extension job-search ats-autofill ollama openai anthropic gemini openrouter gmail privacy-first plasmo typescript

Notes

  • Confidential research docs are intentionally excluded from version control.
  • Local tool settings in .claude/ are also ignored.
  • Product and implementation details for the extension live in careerflow/README.md.
  • Local parser service details live in resume-parser-sidecar/README.md.

About

Privacy-first Chrome extension for local resume parsing, ATS autofill, Gmail tracking, and Ollama follow-ups

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors