Gavin Davies Limited / Blog

CTRL + CV: Scraping my own website because hiring portals are terrible

The following is an AI generated summary of the video

The Case for a Single Source of Truth: Why I Automated My CV

As a contractor, I occasionally find myself preparing for the possibility of looking for a new engagement.

Most of the time that means dusting off the CV.

And every time, I have the same thought:

Haven't I already written all of this somewhere else?

I maintain a professional website.

I maintain LinkedIn.

Both contain my skills, experience, project history, and professional background.

Yet many recruitment processes still require a traditional PDF or Word document.

Which means maintaining the same information in three different places.

That rarely ends well.

The CV Maintenance Problem

The challenge isn't creating a CV.

The challenge is keeping it accurate.

If I update my website but forget LinkedIn, which version is correct?

If I update LinkedIn but not my CV, which becomes the source of truth?

Add recruitment portals, agency profiles, and other systems into the mix, and things become increasingly difficult to manage.

Soon you have multiple copies of the same information drifting apart over time.

That's how inconsistencies appear.

Recruitment's Love Affair with Documents

Most software professionals have experienced the ritual.

You apply for a role.

You upload your CV.

Then you're asked to manually enter the contents of that CV into an online form.

Field by field.

Line by line.

Sometimes through a user interface that feels like it was designed in 2004 and hasn't been updated since.

The irony is that you've already provided the information.

Often in multiple formats.

But the process demands another copy anyway.

While there are valid reasons for this—record keeping, compliance, point-in-time snapshots—it still creates work for candidates.

Solving the Problem with Automation

Rather than maintaining another document manually, I decided to generate my CV directly from my website.

The website already contains the information I want recruiters to see.

Why not make that the canonical source and generate everything else from it?

The first step was creating a print-specific stylesheet.

Using CSS media types, the website can render differently depending on whether it's being viewed on screen or prepared for printing.

The screen version remains responsive and visually rich.

The print version becomes a clean, professional document:

  • White backgrounds.
  • Simplified layouts.
  • Better typography.
  • Printable margins.
  • Embedded URLs where appropriate.
  • Removal of content that doesn't belong in a CV.

The result is effectively a CV generated directly from the website content.

Turning a Website into a PDF

A printable website is useful.

A PDF is often more useful.

To automate that step, I used Puppeteer, a Node.js library that can render web pages and export them as PDF documents.

The process is straightforward:

  1. Load the website.
  2. Apply the print stylesheet.
  3. Generate a PDF.
  4. Save the output.

Now whenever I update my website, I can generate a fresh CV automatically.

No copy-and-paste.

No duplicate editing.

No worrying about which version is current.

Why Single Sources of Truth Matter

The technical implementation isn't really the interesting part.

The interesting part is the principle.

Software engineers spend a lot of time trying to eliminate duplicated state because duplicated state creates inconsistency.

The same idea applies to personal information.

The more places you maintain the same data, the more opportunities there are for divergence.

Eventually nobody knows which version is correct.

By defining a canonical source and generating derivatives automatically, you reduce that risk significantly.

Recruitment Is Really About Problem Solving

This also touches on something that has always frustrated me about technical recruitment.

Many recruitment processes focus heavily on specific technologies.

PHP.

Scala.

AWS.

Kubernetes.

Terraform.

And while those things matter, most experienced engineers don't think of themselves primarily as users of a specific technology.

They think of themselves as problem solvers.

A good engineer can often transfer skills between platforms surprisingly quickly.

Understanding principles tends to matter more than memorising tools.

Cloud platforms change.

Programming languages change.

Frameworks come and go.

Problem solving remains.

Is This Worth Doing?

For most people, probably not.

Maintaining a traditional CV manually is entirely reasonable.

But if you're already maintaining a website as your professional hub, generating documents from that source can be surprisingly effective.

At the very least, it removes one more piece of repetitive administration.

And anything that reduces unnecessary admin has to be worth considering.

Final Thoughts

The real lesson here isn't about CSS, PDFs, or CV generation.

It's about recognising when information is being duplicated and asking whether it needs to be.

Every duplicate source creates maintenance overhead.

Every maintenance task creates opportunities for inconsistency.

Sometimes the best solution isn't creating another document.

It's creating a system that generates the document for you.

After all, if software engineers are good at anything, it should be automating away problems we've become tired of solving manually.


Gavin Davies Limited / Blog