← Back to Skyline Labs

PitchCraft

Generates a tailored cover letter draft and specific resume tailoring suggestions from your resume and a job posting - using AI that runs entirely on your own computer.

FreeRuns locallyPrivate

Requires: Python 3.8+, Ollama (free)

Download

Generates a tailored cover letter draft and specific resume tailoring suggestions from your resume and a job posting - using AI that runs entirely on your own computer. Nothing you paste is ever sent to a server.

Why local AI?

  • Private - your resume and the job posting never leave your machine
  • Free - no subscription, no API key, no usage limits
  • Fast enough - a draft in under a minute on any modern Mac or PC

Setup (one-time, ~5 minutes)

  1. Install Ollama (free, available for Mac/Windows/Linux)
  2. Open a terminal and run:
    ollama pull gemma3:12b
    (This downloads the AI model, about 8GB - one-time only)
  3. Make sure Ollama is running (it usually starts automatically after install, or open the Ollama app)

Usage

Save your resume/background as a text file (e.g. resume.txt) and the job posting as another (e.g. job.txt), then run:

python3 pitchcraft.py --resume resume.txt --job job.txt

Or just run it with no arguments and paste the text directly when prompted:

python3 pitchcraft.py

Both outputs print to the screen and save as:

  • cover_letter.md - the tailored cover letter draft
  • resume_suggestions.md - specific edits to make to your resume for this job, including honest gaps it notices (it won’t suggest exaggerating experience you don’t have)

A note on the output

This gives you drafts, not final answers. Read them over, fix anything that doesn’t sound like you, and add specifics the AI couldn’t know. Treat them as a strong starting point that saves you the blank-page problem, not a finished product.

Requirements

  • Python 3.8+ (pre-installed on Mac; download for Windows if needed)
  • Ollama
  • No other dependencies - the script only uses Python’s built-in libraries

Behind the tool

PitchCraft is a local prompt-engineering project, not a wrapper around a hosted API. A few real decisions that shaped it:

Why local, not a cloud API? A resume and a job posting are personal - salary history, health conditions mentioned in accommodations, which companies you’re quietly interviewing with. Sending that to a third-party server for a cover letter draft is an unnecessary privacy trade. Running Ollama locally means the data never leaves your machine, and it costs nothing per use since there’s no API metering.

A real bug we caught: the first prompt version asked the model to “infer the company name from the posting if present.” In testing, when no company name was in the posting, the model didn’t omit it - it left a literal [Company Name/Role Name - if known, otherwise omit] placeholder bracket in the output. The fix wasn’t more instructions, it was removing the ambiguity entirely: the prompt now explicitly says “never use bracketed placeholders - if you don’t know a detail, just don’t mention it.” Small wording change, and the bug disappeared in re-testing.

Why it’s allowed to say “I don’t know”: the resume-suggestions prompt explicitly tells the model to flag genuine gaps between what a job asks for and what’s on the resume, rather than only suggesting positive spin. Testing it against a real “Product Engineer” posting, it correctly told the tester their resume showed only solo work while the job asked for team collaboration - a real gap, not manufactured encouragement. A tool that only tells you what you want to hear isn’t useful for something as consequential as a job application.