Chris EichlerAI-first Product
& Marketing

A CV with Claude


The skill is on GitHub: github.com/e3xler/cv-builder. Under Releases you'll find cv-builder.zip, which is all you need.

Why I built it

A CV gets expensive fast. A Word template on Etsy costs a few euros, a CV builder like Zety charges 23.70 euros a month in Germany once the trial ends (GIGA), and according to ResuFit a German writing service takes 89 to 399 euros. And then there's the subscription that keeps running long after you've landed the job.

The real trick is simple: separate layout from content. I designed the templates once in Claude Design. The skill only handles the content. For your next application you update the content, the layout stays.

Step 1: Install the skill

  1. Download cv-builder.zip from the latest release. Don't unzip it.
  2. In Claude's settings, turn on code execution (creating and editing files). Skills that ship scripts don't run without it.
  3. Upload the zip under Skills in the settings. Menu names vary a little between versions; INSTALL.md has the details.

In Claude Code it's one command:

unzip cv-builder.zip -d ~/.claude/skills/

Step 2: Start the skill

New chat, one sentence: "Build me a CV." Claude then asks three things in one message:

  • Do you have an old CV? (PDF, Word, plain text or a LinkedIn export)
  • Which job is it for? Paste the posting if you have one.
  • German or English?

With a job posting you get a CV that fits the role, without one you get a good general CV. You'll see the difference in step 4.

Step 3: Gather the content

There are two ways in.

With an old CV, Claude pulls out everything that's there and only asks about what's missing. Usually that's results with numbers: what was different after your work compared to before?

Without a CV, the skill runs an interview, three questions per round at most. First your goal and years of experience, then contact details, then each role on its own, most recent first. If you answer with a task ("I was responsible for checkout"), it follows up: "What changed afterwards?"

From your years of experience Claude suggests a level: under 3 years junior, 3 to 8 mid, more than that senior. You confirm.

Step 4: Write and tailor to the role

Now Claude writes. The rules are built into the skill:

  • Outcome before task. "Cut checkout abandonment from 71% to 58%" instead of "Responsible for checkout".
  • Length by level. 3 to 5 bullet points for your current role, 2 to 3 for older ones.
  • Terms from the posting. Many applicant tracking systems match words. Claude reuses the posting's terms where they're true for you and moves the relevant experience to the top.
  • Gaps stated openly. If the posting asks for something you don't have, you get a list. Claude doesn't put it in the CV.

Step 5: The gate

Before anything is output, a check script runs over the content. It blocks as long as a [ZAHL?] is still open, a required field is missing, or a date isn't in MM/YYYY format. It also flags things to consider: too long for your level, photo switched on (optional in Germany, unusual elsewhere), and which terms from the posting are still missing from your CV.

Only once everything is resolved does Claude show you the finished content as readable text for your sign-off.

Step 6: Pick a template and print the PDF

You get a file called lebenslauf-<name>.html. Download it and open it in your browser. It contains the builder with your data (the builder's interface is in German, the CV headings switch between German and English):

  • Design: 12 templates for junior, mid and senior, 6 colour styles. One click switches the layout, your data stays.
  • Inhalt (content): every field can be edited directly, the preview updates as you type.
  • Sektionen (sections): show and hide sections.

Then click "PDF / Drucken", choose "Save as PDF", margins "None", background graphics on.

Which template? If you're applying through an online portal, go single-column: junior 3, mid 5, senior 10 or 12. I ran all 12 templates through a PDF parser: in every one, the sections come out as real text in the right order, including words like "A/B-Tests". Sidebars are still the bigger risk with older systems.

Step 7: Adapt it if you don't like the templates

Three levels, from quick to fully your own.

Level 1: click around in the builder. 12 templates times 6 styles makes 72 combinations. Plus photo on or off, icons on or off, headings in German or English. Try this first before you build anything.

Level 2: rearrange the content. In the sections tab you hide what doesn't fit, in the content tab you change order and wording. Want projects instead of certifications? You don't need a new template for that.

Level 3: your own layout with Claude Design. This is where separating layout and content pays off. Your content lives in cv.json, a plain file Claude writes while building your CV. Ask for it in the chat, then open Claude Design and give it the content plus a direction:

Here is my CV as JSON. Turn it into a one-page CV in A4 format.

Style: [e.g. calm, lots of white space, one accent colour #HEX]
Typeface: [e.g. Inter for body text, a serif for the name]
Rules: single column, real text (no images), standard headings
(Profile, Experience, Education, Skills, Languages).

[paste cv.json]

That's how I built the 12 templates in the skill: layout screenshots as a style reference, a fictional sample candidate as content, then iterate. How to set up your own design system in Claude Design is covered in Claude design system.

Common mistakes

  • The skill doesn't show up. Code execution is off. Skills with scripts don't run without it.
  • The builder shows old data. The builder remembers your edits in the browser. A newly generated file overwrites that automatically the first time you open it.
  • The PDF runs to two pages. For junior roles, one page is the goal. Cut, or pick a more compact template.
  • Skills are missing from the PDF. Templates 2, 8 and 9 only show skills with a rating (level 1 to 5). Tell Claude to rate your skills, or pick a different template.

Next steps

  1. Grab the zip from the release and install it.
  2. Upload your old CV and add the job posting.
  3. Keep your cv.json. For the next application, add the new posting, adjust profile and order, done.

Ideas on AI-first Product Management & Marketing, straight to your inbox.

No spam, unsubscribe at any time

Chris Eichler