I told Copilot to build a CV app… it built a personality instead

Hey You

Have you already worked with CoPilot for GitHub? You have? You’re cool… but have you also worked with CoPilot for GitHub… IN VISUAL STUDIO CODE? No?

Let’s be honest… Every time I open Visual Studio Code, I tell myself “this time… it’s going to be simple”. And every time… I lie.

So today, I wanted to challenge myself (and CoPilot) to build something so simple it can’t possibly go wrong:

A WebApp that turns a LinkedIn profile into a downloadable CV. No APIs, no Azure, no complicated setup… just vibes.

Let’s start with VSC and CoPilot for GitHub

The first prompt was as pure as it gets:

We’re building a super simple web app that turns a LinkedIn profile into a CV.

Use React.

The user enters a LinkedIn URL and the app shows basic info like name, job title and skills. You can use dummy data for now. Keep it clean, single page, no backend, no APIs.

It populates all the files… AMAZING

CoPilot did not hesitate. It instantly created folders, files and logic… faster than I could even type “npm install”. Honestly, I just sat there watching the lines of code appear like I was in the Matrix, minus the cool glasses.

I realized that I need NPM to get this working. Yeah, I know… minor detail. 

For those who don’t live in Terminal land: NPM (Node Package Manager) is basically the glue that holds every web developer’s sanity together. It installs dependencies, runs builds and makes sure your project doesn’t cry itself to sleep at night.

So… I installed it…

And ran it…

And it worked.

Well well well.. how the turn tables… … euhm..

It looked great already… but we can always make it prettier… right? So I gave CoPilot my next instruction:

Make the layout look clean and modern with good spacing and subtle colors.

Add a title on top that says “Linkedin -> CV Generator”

Use a nice font like Inter or Poppins

Center everything… the input and button should look professional

And within seconds, my terminal looked like it was styling a landing page for a startup that doesn’t exist yet. Subtle colors, smooth layout… the whole thing screamed “minimalist productivity tool with montly subscription”

Hot diggity damn

This… actually looks cool right?

Next step – DATA!

When the user enters a LinkedIn URL, show a simple CV layout below it. 

Include:

  • Name
  • Job Title
  • Work Experience
  • Skills

Just use placeholder data for now… no external calls or APIs

And so… it did. But let’s be honest… placeholder data never looks cool. It showed me “Jane Doe” which is fine… Except I wanted real LinkedIn data.

So, I told CoPilot:

It shows Jane Doe… can you come up with actual data?

VSC Reply (the serious kind)

I see - you want the app to actually extract data from the LinkedIn profile URL. However, there's a technical limitation here:

The problem:
- LinkedIn profiles require authentication and don't allow direct scraping
- Their official API requires OAuth and has strict rate limits
- Doing this purely in the browser (client-side) without a backend isn't possible due to CORS and authentication requirements

What we'd need:
1. A backend server (Node.js/Python) to handle requests
2. One of these approaches:
  - LinkedIn Official API (requires app registration, OAuth, limited access)
  - Web scraping with Puppeteer/Playwright (against LinkedIn's ToS, easily blocked)
  - Third-party LinkedIn data APIs (like RapidAPI services - costs money)

Quick solution I can implement:

Would you like me to:
- Add a backend (Node.js Express server) that uses a third-party API service for LinkedIn data extraction?
- Add a scraping backend (Puppeteer-based, though this violates LinkedIn ToS and gets blocked frequently)?
- Make it manual - Let users paste their LinkedIn profile data (copy-paste sections) instead of just the URL?

Which approach would you prefer? Option 3 (manual data entry) is the most practical for a demo without legal/technical issues.

It calmly explained:

  • LinkedIn requires authentication
  • Scraping isn’t allowed
  • OAuth setup is required
  • We can use third-party APIs… … for money…

Basically, it was like:

You either break LinkedIn’s Terms of Service, or you pay someone who already did

To me… that is completely unacceptable. For anyone who knows me knows that I believe EVERYTHING is possible. Succes is our only option. So… I replied back…

I don’t want a demo… I want something real. Let’s do it! Let’s create this webapp… Let’s rule the world!

CoPilot blinked for a few seconds… then decided to build something COMPLETELY different.

VSC had completely other ideas

I ran the webserver and saw something that made me scratch my head a bit.

The screen wasn’t showing my app. It showed a new extension… something CoPilot had apparently added ON IT’S OWN (Skynet?)

No warning. No prompt. Just… there.

I stared at it like Neo (Tom Anderson) started at the screen when Morpheus was talking to him the first time on his computer. Remember?

So, I followed its instructions and to my surprise (actually not surprise because I knew it would work because why wouldn’t it work I mean AI is already taking over the world so basically it already knows what we’re thinking of and one day Skynet will use us as a double A Duracell battery) it was there

I loaded up the extension.

Do I dare to click it?

How deep does this rabbit hole go?

Ok, that was the last Matrix reference (We realized that this was a complete lie)

OMG!

It worked. And it was glorious.

Now I wanted to take it one step further. Because what’s a CV generator without a Download button right? Let’s take the red pill.

Add a button under the CV that lets the user download the whole thing as a PDF.

Use a simple method like jspdf or html2canvas

The downloaded PDF should look exactly like what’s displayed on screen.

Seconds later, a shiny button appeared. DOWNLOAD AS PDF

I clicked it… and BOOM it worked.

The moment of truth

With just a few prompts and a lot of curiosity (and matrix karate chops), I had built a working app that can take a LinkedIn profile (or a fake one… THANKS JANE) and turn it into a downloadable CV.

Not bad for an evening of AI-powered chaos.

My original goal was to make something I could share on my website. Something you could use right away but then I realized… I have no idea how to post it properly (yet). Maybe in my next post we’ll make that happen.

The plot twist

I opened the project folder this morning, ready to continue and do some crazy sh*t… and CoPilot had renamed it to:

/CoPilot_Dating_App

No joke.

Somewhere between “LinkedIn -> CV” and “Download PFD” CoPilot decided that job hunting and matchmaking were basically the same thing.

Maybe it’s right… maybe every CV is just a dating profile for recruiters. Either way… I’m keeping the name.

Final Words

This was one of those rare experiments where the journey was more entertaining than the destination.

CoPilot for GitHub inside Visual Studio Code is ridiculously powerful. If you haven’t tried it yet, do it.

Just don’t be surprised if it builds a live life instead of a résumé.

Thanks for reading.

Cheers,

Engin