Build a job application website with Claude Code in an afternoon

Turn your PDF CV into a password-protected, multilingual single-file website using Claude Code Desktop — no coding required.

Build a job application website with Claude Code in an afternoon
Also available in Deutsch, Français, Español, Nederlands.

Every recruiter gets the same stack of PDFs. Same fonts, same layout, same two-page format. What almost nobody includes is a link to a clean, interactive website that presents the same information better, works on any device, and feels like something deliberately built. You can create one in a single afternoon with Claude Code Desktop, without writing a line of code yourself.

The concept

You attach your PDF CV as usual. But in the cover letter, you add a short URL, a password, and one line of explanation.

The recruiter opens the link, enters the password, and sees your CV as a structured, interactive page — clearly separated sections, smooth navigation, mobile-friendly layout, multiple languages. Still your CV. Just presented in a way that's faster to scan and harder to forget.

Check out our example website for Homer J. Simpson!

Why recruiters respond to this

Recruiters don't read CVs. They scan. Within seconds they decide whether someone fits and whether it's worth a closer look.

A well-built website changes that calculation immediately. It stands out from identical PDFs. It shows initiative without claiming it. It demonstrates digital competence in a practical way rather than a performative one.

The goal isn't complexity. It's reduced friction and a stronger first impression.

What Claude Code does for you

You don't build anything manually. Give Claude Code your CV as a file and a clear instruction. It reads your content, structures it into sections, builds the layout and design, adds navigation and polish, and outputs a complete website.

You review it, ask for changes, iterate until it looks right.

The workflow

Upload your CV

Open Claude Code Desktop and place your CV file in the working directory. Nothing else needed.

Ask for a website version

Write your prompt. Include instructions for a clean professional design, clear sections (Overview, Experience, Education, Skills, Languages, Contact), navigation, mobile layout, subtle animations, password protection, and multilingual support.

Here's a proven prompt you can use directly. It contains everything we discuss in this blog post!

The most important instruction: explicitly require a single self-contained HTML file.

Output a single self-contained index.html file with all CSS and JavaScript
inline. No external dependencies, no separate asset files.

That single constraint removes almost all technical friction. No build tools, no dependencies, no hosting complexity. One file you can upload anywhere and it works.

Iterate

Claude Code generates the full site. You guide it with plain language:

  • "Make it more minimal"
  • "Improve readability on the experience section"
  • "The spacing between sections feels too tight"
  • "Highlight skills more clearly"

Most iterations take under a minute.

Export

You end up with one index.html. Content, design, behaviour — all inside. No additional files.

Features worth requesting

A good version of this site includes several things that need deliberate prompting.

Password protection

The site opens with a password screen. The password is never stored in plain text — only a SHA-256 hash lives in the file. Access persists for the browser session only.

You share the password in your cover letter. This creates a controlled experience and adds intentionality that generic public CVs don't have.

The implementation looks like this:

// Hash stored in the file, never the plain password
const PASSWORD_HASH = "5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8";

async function checkPassword(input) {
  const hash = await crypto.subtle.digest(
    'SHA-256',
    new TextEncoder().encode(input)
  );
  const hashHex = Array.from(new Uint8Array(hash))
    .map(b => b.toString(16).padStart(2, '0')).join('');
  return hashHex === PASSWORD_HASH;
}

The recruiter types the password, the browser hashes it client-side, compares against the stored hash. Match → CV content becomes visible. No server required.

A determined person could extract your CV content from the HTML source regardless of the hash. This isn't vault-grade security — it's a gate that keeps casual visitors out and makes the experience feel intentional. For a job application, that's enough.

Multilingual support

The same CV available in German, English, and French. Switching is instant — no reload, no separate pages.

Especially valuable in Swiss or international contexts where language flexibility signals something real about how you work.

Tell Claude Code to implement this as a language toggle with a content object:

const content = {
  de: { title: "Erfahrung", intro: "..." },
  en: { title: "Experience", intro: "..." },
  fr: { title: "Expérience", intro: "..." }
};

Fixed navigation

A sticky top bar lets recruiters jump directly to the section they care about. Most will go straight to Experience — the navigation makes that one click instead of a scroll through content they don't need yet.

Experience timeline

Instead of a dense list, experience appears as a vertical timeline. Easier to scan, clearer progression, visually structured. The readability difference is significant compared to a flat bullet-point list.

Scroll animations

Small details improve the feel without being distracting. Sections fade in on scroll, elements appear with slight delay, a typing effect introduces your role. Done right, this feels polished rather than flashy.

Tell Claude Code to use Intersection Observer for scroll-triggered animations rather than heavy libraries. Keeps the file self-contained and performant.

Put it online

You have one index.html. Getting it live takes about five minutes — and you can have a professional URL, hosting, and a matching email address all in one place for $5 a month.

The simple path: Fastmail

Fastmail is best known as a fast, private email provider. What fewer people know: when you register a domain through Fastmail, you can host a static website on it directly from your Fastmail Files — no server, no configuration, no deploy pipeline.

Here's the whole process:

  1. Sign up for Fastmail — $5/month, 30-day free trial, 10% off the first year with our link.
  2. Register your domain — pick yourname.com during signup or add it afterwards. Fastmail manages the DNS for you.
  3. Upload your file — go to Files, create a folder, upload your index.html.
  4. Enable hosting — in Fastmail settings, point your domain at that folder. SSL is provisioned automatically.
  5. Done. Your CV is live at yourname.com.

Your email address — email@yourname.com — is included in the same plan. You can create as many aliases as you want: jobs@yourname.com for exampe. Put it on your CV. Such a premium email address with a personal domain name looks deliberate, not accidental.

Add a QR code to your cover letter

Generate a QR code from your URL and place it in your cover letter alongside a line like:

"An interactive version of my CV is available at yourname.com. You can also scan the QR code below. Password: morning47"

Effortless access, especially for recruiters reading applications on a phone.

The constraint that makes it work

Most of this post is about the output. The decision that makes it usable is the single-file constraint.

If you ask Claude Code for a React app or a project with separate CSS and JS files, you've introduced deployment complexity that defeats the purpose. A recruiter can't open a GitHub repository link the same way they open a direct URL.

One file. Everything inline. Upload anywhere. Works immediately. That's what makes this practical instead of theoretical.

Not about being technical

This approach works because it changes perception before the recruiter reads a single word of your experience. It shows you go beyond the minimum, present information clearly, and understand modern tools well enough to use them for real purposes.

The effort is one afternoon. The signal is disproportionately strong. And once built, you reuse it across all applications — update the content in index.html, re-upload, done.

Paste this post's URL into Claude Code or your AI assistant of choice for context if you get stuck during the build.


Where to run this

For email on your custom domain, Fastmail costs $5/month, supports unlimited domains and aliases, and has a 30-day free trial with 10% off the first year. Beats wrestling with self-hosted SMTP for a job application domain.

(Affiliate links — we get a small cut if you sign up, at no cost to you.)