2026-07-14 14:29:24 +02:00
---
2026-08-19 19:44:36 +02:00
framework_version : 1.0.2
2026-07-14 14:29:24 +02:00
---
2026-03-20 19:53:16 +01:00
# Cover Letter Templates and Tailoring Guide
## Template: Custom cover.cls (XeLaTeX)
Cover letters use a custom LaTeX document class (`cover.cls` ) with Lato/Raleway fonts.
**Output file:** `cover_letters/cover_<company>_<role>.tex`
2026-04-24 19:34:46 +02:00
**Compile with:** XeLaTeX (cover.cls requires fontspec)
2026-03-20 19:53:16 +01:00
**Font directory:** `cover_letters/OpenFonts/fonts/`
2026-04-24 19:34:46 +02:00
### Compile command
```bash
cd cover_letters && xelatex -interaction= nonstopmode cover_<company>_<role>.tex
```
Expected output: `Output written on cover_<company>_<role>.pdf (1 page, ...)` . Any page count other than 1 is a failure that must be fixed before presenting to the user.
## Compile-and-Inspect Loop (MANDATORY)
After writing the cover letter and before presenting to the user, always compile and visually inspect the PDF. Iterate until the layout is clean:
1. Run `xelatex -interaction=nonstopmode cover_<company>_<role>.tex`
2. Confirm page count is exactly 1 and compile succeeded
3. Read the PDF via the Read tool and visually check: signature fits at the bottom, no text cut off, bullet font matches body
### Known template pitfall: itemize inside `\lettercontent{}`
The `\lettercontent{}` macro appends `\\` to its argument. This breaks when the argument ends in `\end{itemize}` because `\\` has no line to break after the environment closes, producing `! LaTeX Error: There's no line here to end.` and no PDF output.
**Wrong (breaks compile):**
```latex
\lettercontent { Here is how my experience maps:
\begin { itemize}
\item ...
\end { itemize}}
```
**Correct — close `\lettercontent{}` before the list and wrap the list in the matching Raleway-Medium font so typography stays consistent:**
```latex
\lettercontent { Here is how my experience maps:}
{ \raggedright\fontspec [Path = OpenFonts/fonts/raleway/] { Raleway-Medium} \fontsize { 11pt}{ 13pt} \selectfont
\begin { itemize}
\item ...
\end { itemize} \par }
\vspace { 6pt}
\lettercontent { [next paragraph]}
```
The font wrapper is mandatory — if you just move `\begin{itemize}` outside `\lettercontent{}` without the `\fontspec` block, bullets render in the default body font (Lato) and visually mismatch the rest of the letter.
2026-03-20 19:53:16 +01:00
## Document Structure
```latex
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Cover Letter - [Company], [Role]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass [] { cover}
\usepackage { fancyhdr}
\pagestyle { fancy}
\fancyhf {}
\rfoot { Page \thepage \hspace { 0pt}}
\thispagestyle { empty}
\renewcommand { \headrulewidth }{ 0pt}
\begin { document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% TITLE NAME
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\namesection {}{ \Huge { [YOUR_ NAME]}}{ \href { mailto:[YOUR_ EMAIL]}{ [YOUR_ EMAIL]} | [YOUR_ PHONE] | \urlstyle { same} \href { [YOUR_ LINKEDIN_ URL]}{ LinkedIn}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% MAIN COVER LETTER CONTENT
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\currentdate { \today }
\lettercontent { Dear [Name/Team],}
\lettercontent { [Opening paragraph - role, connection to background, 2-3 sentences]}
2026-07-18 22:19:02 +02:00
\lettercontent { [Body paragraph - most relevant experience, introducing the bullet list]}
2026-03-20 19:53:16 +01:00
2026-07-18 22:19:02 +02:00
{ \raggedright\fontspec [Path = OpenFonts/fonts/raleway/] { Raleway-Medium} \fontsize { 11pt}{ 13pt} \selectfont
2026-03-20 19:53:16 +01:00
\begin { itemize}
2026-08-19 19:44:36 +02:00
\item { [Concrete achievement/skill 1]}
\item { [Concrete achievement/skill 2]}
\item { [Concrete achievement/skill 3]}
2026-07-18 22:19:02 +02:00
\end { itemize} \par }
2026-03-20 19:53:16 +01:00
2026-07-18 22:19:02 +02:00
\lettercontent { [Connection to company - why this role, why this company specifically]}
2026-03-20 19:53:16 +01:00
\lettercontent { [Personal fit paragraph - behavioral strengths, team contribution, 2-3 sentences]}
\lettercontent { I look forward to hearing from you.}
\begin { flushright}
2026-07-08 16:09:33 +01:00
% No trailing \\ inside \closing{} - cover.cls appends its own \\, and a
% doubled break triggers "! LaTeX Error: There's no line here to end."
\closing { Kind regards,}
2026-03-20 19:53:16 +01:00
\signature { [YOUR_ NAME]}
\end { flushright}
\end { document}
```
## Key Commands Reference
| Command | Purpose |
|---------|---------|
| `\namesection{}{Name}{contact info}` | Header with name and contact |
| `\currentdate{date}` | Date field (use `\today` or explicit date) |
| `\lettercontent{text}` | Body paragraph (adds spacing after) |
| `\closing{text}` | Closing line |
| `\signature{name}` | Printed name below signature |
## Tailoring Guidelines
### Salutation
- If you know the hiring manager's name: "Dear [First Last],"
- If you know the team: "Dear [Company] hiring team,"
- Generic: "Dear [Company]," (avoid "To whom it may concern")
### Length - Hard 1-Page Limit
- Target: 1 page including signature block
- Maximum: **never exceed 1 page**
- **Word budget: 250-300 words** of body text (not counting LaTeX markup). This is the safe maximum. 350 words will overflow.
- **Always count**: opening paragraph + bullet list paragraph + closing paragraph = 3 blocks. Add a 4th only if the others are short.
- When adding company-specific content, trim other content to compensate rather than adding net length
### Line Spacing
- Add `\usepackage{setspace}` and `\setstretch{1.0}` if the letter is long and needs to fit on one page
- Use `\vspace{.5cm}` between major sections for readability (only if space permits)
### Bullet Lists
2026-04-24 19:34:46 +02:00
- Place `\begin{itemize}...\end{itemize}` **outside** a `\lettercontent{}` block (see "Known template pitfall" above), wrapped in the matching Raleway-Medium `\fontspec` so the bullet font matches the body
2026-03-20 19:53:16 +01:00
- 3-5 bullets is ideal
- Start each bullet with bold label or action verb
- Use `\textbf{Label:}` for category-style bullets
2026-08-19 19:44:36 +02:00
- A bullet whose text begins with a literal `[` must be braced: `\item {[text]}` . Unbraced, LaTeX parses `[text]` as `\item` 's optional label and renders it off the left page edge, missing from the PDF text layer entirely
2026-03-20 19:53:16 +01:00
### LaTeX Special Characters
2026-08-19 19:44:36 +02:00
Escape these wherever they appear in body text:
- Ampersand: `\&` (company names: Brüel \& Kjær, H\&M) - unescaped, the compile fails loudly
- Percent: `\%` ("grew revenue 30\%") - unescaped, it does **not** fail: everything after the `%` on that line is silently eaten as a LaTeX comment
- Dollar: `\$` , hash: `\#` , underscore: `\_`
- Tilde: `\textasciitilde{}` , caret: `\textasciicircum{}` , backslash: `\textbackslash{}`
2026-03-20 19:53:16 +01:00
### Non-English Cover Letters
- Same template structure, just write content in the posting's language
- Adjust date format to local convention
- Adjust closing to local convention (e.g. "Med venlig hilsen," for Danish)
## Checklist Before Finalizing
- [ ] No em-dashes (use commas or periods instead)
- [ ] No cliches or empty filler
- [ ] Every claim backed by specific example
- [ ] Forward-looking framing: focuses on tasks you'll solve, not just past duties
- [ ] Motivation section references this specific company's mission/values
- [ ] Company name and role are correct throughout
- [ ] Date is current
- [ ] Fits on one page
- [ ] Language matches the job posting language
- [ ] Salutation is appropriate (named person if possible)
- [ ] Headline is engaging and specific, not generic
## Submission Guidelines (Best Practice)
- Submit only the documents the employer requests
- Export as PDF to preserve formatting
- Name files clearly: "[Your Name] CV" and "[Your Name] Cover Letter"
- Follow all employer instructions regarding anonymity or specific materials