# Job application automation build with Claude Code

> Source: <https://gist.github.com/chasehoward11/9ae518e63ef0111db48d9b699fba9082>
> Published: 2026-08-18 22:36:12+00:00

The build from my TikTok: paste a job posting URL, get back a Gmail draft with a tailored resume PDF attached, addressed to real people at the company. You review it and hit send. About 90 seconds per application instead of 45 minutes.

This guide shows you how to build your own copy with Claude Code. No code from my version is needed: you describe the system, Claude Code writes it for you.

``` php
job posting URL
   |
   v
1. Scrape the posting        -> pulls the job description text + company name
2. Tailor the resume         -> Claude rewrites your resume bullets to match the JD
3. Render the PDF            -> turns the tailored resume into a clean PDF
4. Find the humans           -> Apollo looks up 3-4 real contacts at the company
                                (recruiter, hiring manager, dept head)
5. Draft the email           -> writes a short cold email referencing the exact role,
                                attaches the PDF, saves as a DRAFT in your Gmail
6. Log it                    -> appends a row to a Google Sheet tracker
   |
   v
You read the draft. You hit send. Nothing ever auto-sends.
```

| Tool | What it's for | Cost |
|---|---|---|
| Claude Code | Builds and runs the whole thing | Claude subscription |
| Anthropic API key | The resume-tailoring brain | Pay per use, cents per run |
| Apollo.io account | Finding contact names + emails | Free tier = manual lookups in their website UI. The API this build calls needs a paid plan (~$49/mo). Free alternative: skip the contacts module and find 3 people per company yourself on LinkedIn (takes ~5 min) |
| Google Cloud project (Gmail + Sheets APIs) | Creating drafts, logging | Free |
| Python 3 | The language it runs in | Free |
| LibreOffice | Converts the resume to PDF | Free |

The whole system leans on ONE document: your master resume. Make it the longest, most complete version of your experience: every role, every bullet, every real number you have. The tailoring step selects and rephrases from this document. It never invents.

Save it as a .docx file. That's the template the PDF gets built from.

Open Claude Code in an empty folder and paste something like this:

```
Build me a job application automation pipeline in Python:

1. main.py takes a job posting URL as a command line argument.
2. A scraper module (use Playwright) pulls the job description text and
   company name from the URL.
3. A resume module calls the Anthropic API to tailor my master resume
   (master-resume.docx in this folder) to the job description.
   Rules: never fabricate metrics or experience, only rephrase and
   reorder bullets that already exist, match the job description's
   action verbs where natural, keep light-to-medium keyword overlap
   for ATS systems.
4. A PDF module renders the tailored resume to PDF using python-docx
   and LibreOffice headless.
5. A contacts module calls the Apollo API to find 3-4 people at the
   company by title: recruiter, hiring manager for [YOUR TARGET ROLE],
   department head.
6. A Gmail module creates a DRAFT (never send) addressed to those
   contacts with a short personalized email and the PDF attached.
7. A logging module appends the application to a Google Sheet:
   date, company, role, URL, contacts found, status.
8. All API keys live in a .env file that is gitignored.

Walk me through getting each API credential as we go.
```

Claude Code will build it module by module and tell you exactly where to click to get each API key. When something errors, paste the error back in: that's the whole debugging workflow.

Keep the cold email short. Mine follows this shape:

```
Subject: [Role name] application - [Your name]

Hi [First name],

I applied for [role] and wanted to reach out directly. A few things
about me relevant to the role:

- [Real win #1 with a number]
- [Real win #2 with a number]
- [Real win #3]

Why I'm a fit: [2-3 sentences connecting YOUR actual experience to
what THEIR posting asks for. The AI writes this from the job
description, you sanity-check it.]

Resume attached. Open to a quick call this week.

[Your name]
```

**Drafts only. Never auto-send.** The human review step is the entire quality bar.**Never let the AI invent numbers or experience.** Tailoring means rephrasing what's true, not creating what isn't.**Keys in .env, .env in .gitignore.** No credentials in code, ever.- Review the first 5 tailored resumes line by line until you trust it.

**Playwright errors on first run:** the browsers aren't installed yet. Run`playwright install chromium`

(Claude Code will suggest this; say yes).**PDF step fails:** LibreOffice isn't installed or isn't on your PATH. Install it free from libreoffice.org, then tell Claude Code the error; it will point the script at the right location.**Google OAuth screen blocks you:** when setting up the Gmail/Sheets credentials, Google makes you configure a "consent screen" first and add yourself as a test user. It looks scarier than it is; paste each screen's wording into Claude Code and it walks you through.**"API key not found" errors:** your .env file isn't loading. Check the file is named exactly`.env`

, sits in the project root, and the variable names match what the code expects. Never paste keys into the code itself.

General rule: paste the exact error into Claude Code. That's the whole debugging workflow.

Per application: a few cents of Claude API + free-tier Apollo credits. The expensive part was never money, it was the 45 minutes per application. That's the part this deletes.

Built by [@chasetalks1.0](https://www.tiktok.com/@chasetalks1.0). All my builds live at [github.com/chasehoward11/builds](https://github.com/chasehoward11/builds). If you build your own, tag me: I want to see it.
