Skip to content

Latest commit

 

History

History
109 lines (83 loc) · 3.63 KB

File metadata and controls

109 lines (83 loc) · 3.63 KB

ATS Export Mode

Goal

Provide export-only ATS optimization without changing the user's canonical CV/CL data in the editor.

Users can keep the normal "beauty" layout for small/creative companies and switch to ATS-focused output for larger companies.

Export Profiles

  1. Beauty
  • Current visual export.
  • No transformation.
  1. ATS Balanced
  • ATS-safe styling + section visibility defaults.
  • Keeps richer content than strict mode.
  1. ATS Strict
  • Strongest ATS simplification.
  • Hides decorative/low-signal sections and forces neutral styling.
  • Uses a dedicated one-column ATS CV renderer for linear parsing.

Design Principles

  1. Non-destructive
  • Transform data only at preview/print time.
  • Never overwrite in-app profile data.
  1. Language-aware
  • Works with current render language (viewLang) including translated overlays.
  • Keeps translated content while applying ATS formatting rules.
  1. Deterministic
  • Same input state + export profile yields same output.

Transformation Rules (Implemented)

CV

  • Normalize whitespace in core text fields.
  • Normalize period strings to machine-friendly format where parseable (MM/YYYY - MM/YYYY, Present).
  • Normalize language levels to CEFR-like levels when recognizable (A1..C2).
  • Remove photo and recommendations in ATS profiles via section visibility.
  • Force classic layout template during ATS export.
  • ATS Strict bypasses visual templates and renders a plain one-column CV page.
  • Apply ATS section configs:
    • ATS Balanced: keeps toolkit/references visible.
    • ATS Strict: hides toolkit/references, keeps high-signal sections.
    • ATS Strict page 2 suppresses duplicate profile/contact blocks.

Cover Letter

  • Remove bracket placeholders (e.g. [Company Name], [Firmenname]) if present.
  • Normalize paragraph whitespace.
  • Remove signature image in ATS profiles.
  • Keep ATS-relevant field visibility (subject/salutation/closing/contact lines), with optional fields shown only when populated.
  • Fallback salutation/closing per language if missing.

Styling

  • ATS neutral palette overrides:
    • white background
    • dark text
    • reduced decorative accent
  • ATS Strict also forces a conservative font stack (Arial, Helvetica, sans-serif).

UI/Flow (Implemented)

  1. Open Print Preview.
  2. Choose export profile from top-bar selector:
  • Beauty
  • ATS Balanced
  • ATS Strict
  1. Preview updates immediately.
  2. Print/export uses the selected profile and includes profile label in filename for ATS profiles.

EN/DE + Translation Compatibility

  • Export transformations run on the already-resolved render data (translation overlay output).
  • This means ATS export works for:
    • EN base
    • DE base
    • translated views (RU/IT/FR, etc.) shown in the app
  • No translation data is mutated during export.

Code Map

  • src/app/components/atsExport.ts

    • Export profile type
    • Transformation pipeline
    • ATS style/section presets
  • src/app/hooks/usePrintFlow.ts

    • exportProfile state (beauty | ats-balanced | ats-strict)
    • Filename label for ATS exports
  • src/app/components/PrintPreview.tsx

    • Export profile selector UI
  • src/app/App.tsx

    • Build profile-specific print render data via buildExportRenderData(...)
    • Pass transformed print props to shell
  • src/app/components/AppShell.tsx

    • Use transformed print/preview data only for print contexts
    • Keep editor/canvas render untouched

Next Iteration Ideas

  1. ATS preflight checklist (warnings for missing standard headings/date consistency/placeholders).
  2. Job-targeted ATS keyword pack tied to selected tracker card.
  3. Optional "single-page strict" condensing rules for short-form ATS submissions.