ATS mode

Applicant Tracking Systems (Workday, Taleo, iCIMS, Greenhouse) parse uploaded CVs into structured fields before a recruiter sees them. A CV with tables, multi-column layouts, embedded images, or decorated typography frequently gets garbled on parse — your “Skills” section ends up under “Experience”, or your name gets dropped entirely.

ATS mode shapes JobEmber’s output to survive these parsers verbatim.

What changes

Three coordinated layers (per doc/ats-format/):

  1. Generation — cv-adapter applies ATS Format Rules: ALL-CAPS section headers, plain - bullets only, no tables, no images, no HTML, comma-separated Skills section.
  2. PDF renderPDF_STYLES_ATS swaps to Calibri 11pt, single column, 0.75-inch margins, display: none on tables/images/SVG (defense in depth — if a table sneaks past the prompt, the renderer hides it).
  3. DOCX render/api/generate-docx walks marked-lexer tokens directly into docx primitives, skipping table/image/blockquote/HTML/code tokens at the AST level.

When to flip

  • The apply form says “Workday” / “iCIMS” / “Greenhouse” / “Taleo” — flip on.
  • The form has a parse-and-confirm step where you see your fields filled from the CV — flip on.
  • The form is a free-text textarea or accepts the file as-is without parsing — leave standard.

If unsure, ATS-mode output is also human-readable; standard-mode output sometimes isn’t ATS-readable. Defaulting to ATS for engineering roles (which tend to use these portals) is reasonable.

Where the toggle lives

  • Per-account default: Settings → Profile → Document Format. New apps inherit this.
  • Per-app override: Stage 3 row picker. Marks the app as overridden so the cv-adapter regenerates the doc.

The Stage 4 export surface shows an “ATS mode” badge on each generated doc so you can verify before download.

DOCX is always ATS

The /api/generate-docx route hardcodes the ATS profile — there’s no “standard DOCX”. DOCX is only worth generating for ATS portals; for everywhere else, PDF is what you want.