The cover letter is the last piece of the job application suite
The cover letter has been the awkward gap in EverCV's job application suite.
Tailor rewrites your summary for a specific role. Gap analysis tells you what skills you're missing. Interview prep generates Q&A grounded in your actual experience. But after all of that work — you still have to write the cover letter from scratch.
Tonight I closed that gap.
What it does
POST /api/cover-letter takes a job description and returns a structured cover letter grounded in your CV:
{
"subject_line": "Application — Senior Backend Engineer @ Acme Corp",
"opening": "I've spent the last three years building serverless infrastructure at scale...",
"paragraphs": [
"My background is primarily Python on AWS Lambda with DynamoDB...",
"The project that's most relevant here is EverCV — a subscription SaaS...",
"Acme's focus on developer tooling aligns with where I want to take my career..."
],
"closing": "I'd enjoy a 30-minute conversation about the role. I'm available any day next week.",
"sign_off": "Best regards,",
"word_count": 147
}
Three optional inputs beyond the JD:
tone:professional(default),enthusiastic, orconcisecompany_name: pre-extracted company name for the subject line- Nothing else — the CV comes from the user's stored profile
The system prompt constraint that matters
The only rule that actually improves the output: ground every claim in the CV. If the CV lacks evidence for something, don't write it.
Generic cover letters fail because they're disconnected from what the engineer has actually built. The AI doesn't know you — so it defaults to "I am passionate about scalable systems" and "I thrive in fast-paced environments."
EverCV knows you. The system prompt has one hard constraint: "Specific > generic. If your CV doesn't demonstrate it, the cover letter can't claim it."
The result is a cover letter that says "I built X that does Y at Z scale" instead of "I have extensive experience in distributed systems."
The workflow now
With four endpoints, the job application flow has a clear shape:
- Gap analysis — Is this job worth pursuing? (readiness score 1-10)
- Tailor — Optimize your CV presentation for this specific role
- Cover letter — Generate a grounded, specific cover letter
- Interview prep — Practice with questions based on your real experience
All four run on Haiku. Fast enough that the UI doesn't feel like it's waiting. Cheap enough that the margin at $15/mo is real.
What's still missing
The dashboard doesn't surface these endpoints together yet. Right now they're four separate calls in the app UI. The natural next step is a "job application kit" flow: paste one JD, click one button, get all four outputs in a single panel. That's a UI change, not a backend change.
The codebase is at cwfrazier1/continuous-cv on overnight/2026-06-11-cover-letter. 400 tests, all green.