CareerForge
The Commands

/apply

From a job posting to a tailored CV and cover letter, as verified PDFs — with you approving every gate.

/apply is the heart of CareerForge. Give it a job posting — a link or pasted text, both work equally well — and it runs a seven-stage pipeline that ends with two print-ready PDFs and a new row in your application tracker.

/apply https://careers.acme.com/jobs/senior-data-engineer-42

First, it checks the posting is real

Scams, ghost jobs, and harvesting fronts are everywhere, and a polished listing tells you nothing on its own. So before it drafts anything, /apply assesses whether the posting is genuine and safe to engage with, and gives you a plain verdict:

VerdictWhat it means
VerifiedThe signals line up — real company, real-looking role, no red flags worth pausing for.
CautionSomething's a little off — a vague employer, an odd channel, a too-good salary. Worth a second look.
SuspiciousMultiple red flags — upfront fees, personal-data harvesting, a domain that doesn't match the company.

Each verdict comes with the reasons behind it, cited from what it actually found, so you can judge for yourself rather than trust a label.

This is kept deliberately separate from the fit score. A scam can be a perfect skills match, and if legitimacy were folded into the 0–100 number, a great match could average a warning away into invisibility. Two questions — is this a good fit? and is this posting real? — deserve two answers.

The system warns; you decide. It never auto-blocks a posting. A Suspicious verdict does ask for your explicit confirmation before it will spend effort drafting — a speed bump, not a wall.

Then it scores the fit — and asks

Before writing a word, it evaluates the role against your profile across five dimensions:

DimensionWeight
Technical Skills Match30%
Career Alignment30%
Experience Match25%
Behavioral / Culture Fit15%
Location & LogisticsPass / Fail

The weighted total maps to a verdict: Strong (75+), Good (60–74), Moderate (45–59), Weak (30–44), Poor (below 30). One override: if the location fails your constraints, the verdict is Poor no matter how good the skills match is — a job you can't take isn't a fit.

Then it stops and asks: proceed with drafting? That gate is yours. Say no and nothing is written; the evaluation alone is often worth the run.

Then it writes — within strict rules

  • The CV is tailored to the posting, and its language and page count follow the active locale pack — a Letter-size one-pager where that's the norm, an A4 two-pager where it isn't.
  • The cover letter is written in the posting's language — a Danish posting gets a Danish letter — exactly one page, focused on the problems you'd solve rather than re-listing your CV.
  • Every claim must survive the interview test. If you couldn't comfortably back a sentence in an interview, it doesn't belong. Stretches are flagged to you: keep, soften, or drop?

A second AI checks the first

By default, a separate reviewer with a fresh perspective critiques both drafts — missed keywords, generic phrasing, angles about the company worth mentioning. The main agent then applies the good suggestions, and independently re-verifies any factual claim about the company before it's allowed into your letter.

You control the depth (and the cost):

You typeWhat happens
/apply <posting>Full review, including company research (default)
/apply --review=quick <posting>Review without company research — faster
/apply --review=none <posting>Skip the reviewer — fastest

Finally: compile, inspect, record

The documents are compiled to PDF and visually inspected — page counts, orphaned headings, font mismatches — and re-fixed until clean. Then the application is recorded in your tracker file with status Draft, the fit score, and the paths to both PDFs. A final verification checklist (factual accuracy, targeting, consistency, layout) runs once, and you get a short summary of the tailoring decisions it made.

Exports a robot can read, too

A beautiful LaTeX PDF is for the human at the other end — but the first reader is often an applicant-tracking system (ATS) that parses text, not layout. So alongside the PDF (still the primary, polished output), /apply produces two machine-friendly versions from the same content:

  • A plain-text .txt — the most reliable thing an ATS can ingest.
  • A Word .docx — for portals that ask for an editable document.

It then runs a parse self-check: it pulls the text back out of the PDF and confirms your name, the section headings, and the key skills are all recoverable. If the parser would choke, you'll know before a recruiter's software does.

These extras degrade gracefully when their tools aren't installed. The .txt always works. The .docx needs pandoc; the parse check needs poppler (pdftotext). Missing either just skips that step with a note — your PDF is never blocked on them.

Every claim, traced to its source

CareerForge's firmest promise is that it never invents experience. /apply makes that auditable: it emits a provenance ledger — every claim on your CV mapped back to the profile file that backs it. Anything it couldn't trace to your real profile is flagged for your review, never quietly shipped.

You read the same ledger later in the dashboard's Provenance panel, claim by claim, with the unbacked ones highlighted.

What it will not do

  • Submit the application. You review the PDFs and send them yourself.
  • Invent experience. Reordering and emphasis are allowed; claiming skills you don't have is not.
  • Touch your history. /apply only ever adds a row to your tracker — it never modifies existing ones.

What happens next: your application appears in the dashboard, where you'll update its status as things develop.

On this page