Generic cover letters come from generic prompts. The fix is proof, not adjectives.
Why the output reads like everyone else's
A model asked for 'a cover letter for a job' has nothing to work with but the average of every cover letter ever written, which is exactly what it returns. The letter is not bad because the model is weak. It is bad because you supplied no facts it could not have guessed.
Give it one number it could not invent
Name the company, the role, and one measurable thing you did: 'led a payments migration that cut checkout latency by 40%'. A single concrete proof point changes the letter more than any instruction about tone. If you cannot name a number, name a decision you made and what happened next.
Constrain the shape
Say the word count and the paragraph plan up front: 'under 250 words, three paragraphs: why this role, the strongest proof point, the close'. Without a shape you get five paragraphs of throat-clearing and one sentence of substance.
Try it
Rewrite this so the model has facts to work with, not adjectives. Aim for a score of 75+.
58structure
Target: 75. Keep working the prompt. The score moves as you type.
⌃Role / persona: Open with a persona, e.g. "You are a senior backend engineer."
⌃Constraints: State limits and do/don't rules, e.g. "Keep it under 200 words. Do not invent APIs."
⌃Output format: Specify the exact shape, e.g. "Return JSON: { title, steps[] }" or "Use a markdown table.".
Want it as a form instead? The cover letter template has all seven parts already in place. Replace the brackets and paste it. For practice against a fresh brief, there is a new drill every day.