11 stages. One truthful CV.

Most AI resume tools are a single LLM call dressed up. First Landed uses a staged methodology with adversarial review, OpenRouter model routing, and a hard veto on anything it cannot verify.

Public architecture is R0-R10 + R9b. R9b is counted because it is a real safety path, but it is conditional. It runs only when a critical parse, verification, or handoff path needs fallback.

The pipeline

The free scan shows the headline path. The paid deep audit runs the full R0-R10 debate, with R5 as the hard veto and R9b available as a fallback safety gate.

R0 - JD parse + role classifier

Extract requirements, seniority, geography, and domain. Reject malformed or out-of-scope JDs before they contaminate the scan.

R1 - Evidence ingest

Your CV and intake answers are normalized into a fact ledger (facts.yml): atomic, dated, source-linked.

R2 - Bullet candidates

Writer model proposes bullet variants per role section, conditioned on the target JD and available evidence.

R3 - Adversarial critique

A second model attacks every bullet: what would a skeptical interviewer probe, and where is the claim too soft?

R4 - JD-fit scoring

Judge model scores each variant against the JD requirements with an explicit rubric, not a vague vibe check.

R5 - Fact-Checker veto

Every metric, employer, title, and technology is checked against facts.yml. Unverifiable claims are killed before they reach the output. No invented internships, metrics, or experience.

R6 - Dedup + concept aggregation

Catch bullets that say the same thing in different words. Catch bullets that compete for the same evidence.

R7 - Section composition

Bullets are assembled into role blocks, summary, skills, and a one-page layout target.

R8 - Layout fit

Automatic widow detection, spread and compress passes, and dual-issue handling. Output is designed to be print-ready.

R9 - Final judge + interview attack map

One last cross-model judgment on the whole CV, plus an interview-question generator based only on the claims you chose to make.

R9b - Conditional fallback safety gate

If a critical parse or verification path fails, a GPT-class fallback reruns that path before the output is accepted. It is real architecture, but it does not run on every clean pass.

R10 - Bullet library upsert

Bullets you keep, edit, or reject are versioned into a per-user bullet library with judge scores. Next run starts smarter.

3-tier model strategy

The engine routes through OpenRouter, picking models per role per stage. Costs below are current internal estimates for planning, not customer-facing promises.

Cheap default

~$0.024 / run

deepseek-chat-v3 + qwen3-235b

Default for fit-scan and first-pass paid packs. Used when the JD is straightforward and the evidence is clean.

Balanced

~$0.35 / run

claude-sonnet-4.6

Mid-tier for complex JDs or roles requiring nuanced cross-domain framing.

Premium

~$1.96 / run

claude-opus-4.7 + gpt-5

Reserved for executive packs and roles where a weak CV would be unusually expensive.

Why this matters for you: First Landed pays per run on usage. The model route should fit the risk of the role, not push every applicant into the most expensive path.

Fact-Checker veto, in detail

The most common failure mode of LLM-written CVs is fabrication: invented internships, inflated metrics, AUM that did not exist. The Fact-Checker is the stage that exists to prevent this, and it has hard veto power.

For every claim in a generated bullet, the Fact-Checker runs three checks:

  • Existence: does this employer, title, technology, or project appear in your evidence?
  • Specificity: is the number, scope, or date verifiable, or is it a confident-sounding guess?
  • Ownership: does the verb match what you actually owned? Built requires hands-on; led requires authority.

Failed claims are not softened. They are killed. The variant containing them is rejected upstream and a different variant gets promoted. This is why most outputs end up shorter than what a one-shot LLM would produce: truth-density beats word-density.

Bullet library. The flywheel.

Every bullet that survives the gauntlet is upserted to a per-user, versioned library. It carries judge score, JD context, attack-map sample, and revision history. Next run, the engine considers your library before generating fresh. So you do not restart from scratch each application.

Bullets you reject are not deleted. They are archived with reason, so the engine does not suggest them again.

What we are still working on

Honest limitations as of 2026-06:

  • First-person evidence loop: intake form still misses some categories, including volunteer leadership. We are iterating on the field set.
  • Multilingual outputs: currently English first. Chinese and Cantonese variants are still in progress.
  • Voice consistency across runs: when the library grows large, JD-tailoring can pick a slightly off voice. We are working on a per-user voice fingerprint.