ApplyPilot

Paste a job link.Check its work.It applies.

ApplyPilot reads the posting, rewrites your resume and cover letter around it using only facts you've given it, fills the employer's application form, and then stops. Nothing goes out until you've reviewed every answer.

Strip boardtoday
Senior Full Stack EngineerNorthwind LabsSupply-chain softwarePasted link
95fit · tailored
13 of 16 answers filled3 waiting for yousalary · essay · React years
3to review
Approved and submittedConfirmation capturedAnswers saved for next time
1click

Five steps, one of them yours

  1. Read the posting

    Greenhouse, Lever and Ashby postings come straight from their public APIs. Anything else is read from the page.

  2. Score the fit

    A 0–100 score with the skills you match and the ones you're missing, so you can skip a bad fit early.

  3. Tailor the documents

    Your real experience is reordered and reworded for this role. Degrees, certifications and contact details are never AI-written.

  4. Fill the form

    A real browser opens the application, uploads the PDFs and answers each question, noting where every answer came from.

  5. You approve

    Anything the assistant isn't sure about is highlighted. You check it, then it submits with exactly the answers you approved.

A real run, start to finish

This is genuine output from the pipeline. Only the inputs are made up: Alex Rivera and Northwind Labs don't exist, so no real person or employer appears here.

Read the posting

Alex pastes one link into the dashboard.

The salary, location and full description are pulled out automatically, ready for scoring.

Pre-flight checklist

These rules are enforced in code, not left to the model's judgment.

Live log

My own job search, as the system runs it. Roles and industries are generalized, and companies stay hidden unless I've chosen to show them.

Where applications are in the pipeline
Show as a table
StageCount
Loading the strip board…

How it's built

Claude, with schemas

Every model call uses structured outputs, so the code gets validated JSON back, never prose to parse.

Playwright in a real browser

Headed Chromium under Xvfb reads forms by their labels, which is why Greenhouse, Lever, Ashby and custom forms all use the same code.

Python, Flask, SQLite

One small database tracks each application from posting to offer. The dashboard and the worker hand jobs to each other through it.

WeasyPrint

Resumes and cover letters are HTML templates rendered to PDF, so any edit re-renders instantly with no model call.

Self-hosted

Docker containers on a home server behind Caddy. This public page reads a read-only copy of the data and can't reach anything else.