Back to blog
FILE 0xB4·THREE ENDPOINTS THAT COVER THE WHOLE JOB SEARCH

Three endpoints that cover the whole job search

June 9, 2026 · evercv, ai, jobsearch, claude, engineering

The way most engineers use AI for job searching: open a new chat, paste the job description, ask for help with the cover letter. Session ends. Next job, start over. The AI has no idea who you are, what you've built, or what you actually want to say.

EverCV started as a fix for the CV maintenance problem. Connect your GitHub, your commits become your resume, it stays current automatically. But a current CV is just the input. The actual job-search workflow has three distinct jobs to do, and a static document can't help with any of them.

So I built three endpoints. Here's what each one does and the thinking behind it.

1. POST /api/tailor — optimize what you have

The first Pro feature. Given a job description, generate:

The system prompt is direct: "You are a professional CV writer." The key rule is that it can only work with what's in the CV. No fabrication. If your CV doesn't mention Kubernetes, it can't pretend you know Kubernetes.

The match score is the most useful output for triage. Before you spend 20 minutes tailoring an application, know whether it's a 3 or an 8.

2. POST /api/gap-analysis — understand what's missing

This is the one I didn't build immediately but should have. Tailor optimizes what you have. Gap analysis tells you what you're missing.

Output structure:

{
  "matched_skills": ["Python 3", "AWS Lambda", "DynamoDB"],
  "missing_skills": [
    {
      "skill": "Kubernetes",
      "importance": "required",
      "learn_time": "3 months"
    }
  ],
  "transferable_skills": [
    {
      "cv_skill": "Docker Compose",
      "job_requirement": "Kubernetes container orchestration",
      "gap_note": "Container concepts transfer; need K8s scheduling and resource model"
    }
  ],
  "readiness_score": 6,
  "readiness_summary": "Strong serverless background. K8s is the primary gap..."
}

The learn_time field is the most opinionated part of the prompt. I push the model to be specific ("2 weeks", "3 months", "6+ months") rather than hedging. An honest "3 months to job-ready on Kubernetes" is actionable. "Some experience would be beneficial" is not.

The importance field — required / preferred / nice-to-have — maps directly to JD language. This matters because a "required" gap is a real problem, and a "nice-to-have" gap is just a talking point.

3. POST /api/interview-prep — practice with your actual CV

The last piece. Given a job description, generate 5 interview questions with suggested answers grounded in the user's real experience.

This is the hardest one to get right. The failure mode is generic advice: "Tell me about a time you demonstrated leadership" → "I once led a team through a challenging project." That's useless.

The system prompt has one rule that matters more than any other: "Ground every answer in something the CV actually demonstrates. No fabrication. If the CV lacks evidence for a question, say so in the answer: 'I don't have direct experience with X, but I'd approach it by...'"

The honesty rule makes the output actually useful for interview prep. You're not practicing a story you don't have. You're practicing the stories you do have, framed for this specific role.

The difficulty labels (behavioral / technical / system design / culture fit) are required to be distributed — at least one of each. A prep session that's all behavioral is leaving you unprepared for the system design round.

The suite

Together these three endpoints cover the decision flow:

  1. Is this job worth pursuing? (gap-analysis readiness score)
  2. How do I present myself for this specific role? (tailor)
  3. What do I say in the interview? (interview-prep)

All three run on claude-haiku-4-5-20251001. Haiku is fast enough that the UI doesn't feel like it's waiting on an API call, and cheap enough that the margin at $15/mo is real. Each call is under 2048 tokens of output.

The full codebase is at cwfrazier1/continuous-cv on the overnight/2026-06-08-tailor-endpoint branch. 87 tests, all green.