Tom Smykowski beta

Blog

๐Ÿ“„ I Took a Friend's Coding Resume From 58% Fit to 82% Without Changing a Single Fact

Photo by Lukas Blazek from Pexels
Two white printer papers near a MacBook on a brown surface
Photo by Lukas Blazek from Pexels

A friend asked me to look at his resume because he was sending applications and barely getting any responses. Out of 40 applications he had sent, only 5 got a reply and just 1 led to an interview. He is talented, so I decided to look at his resume and find out what was going wrong.

The Resume, Anonymized

I cannot share his actual resume for privacy reasons, but to walk you through the process I anonymized it. Here is what it looked like:

The original resume, anonymized

At first glance the content seems fine. There is a name, address, phone number, email, education, skills, projects, certifications and extra activities. He wants a position as a web engineer intern, and he knows HTML, CSS and JavaScript, so on paper it fits.

What Is Actually Useful on This Resume

Now let me show you what is useful on this resume in the context of a web developer internship, and what is not:

Resume with useful parts highlighted in green and useless parts in red

Red marks the information that does not help for a web developer role. Green marks what does.

To make this even clearer, here is what the resume looks like to a recruiter, an ATS system, or an AI screener that spends a few seconds per candidate:

Blurred resume showing how little green there is compared to red

When you blur the page you see that the parts that should convince someone to hire my friend take up about 5% of the total area. The rest is noise. The red areas are not just dead information, they actively obscure the green. The useful signals disappear in the clutter, and that is the problem. Noise does not get ignored, it makes the relevant content harder to find.

A few specific things that do not belong or are poorly framed:

  • The exact home address. Nobody needs it. At most, list the city if the company is local.
  • The CGPA score of 81%. Nobody outside that university knows what scale this is on. If you include it, write 81/100% so the reader does not have to guess.
  • The entire "higher secondary" and "secondary" education sections. If you have a college degree, earlier schooling is unnecessary.
  • Skills like C, C++, Python, Java, SQL. A recruiter scanning for a web developer intern will not connect those to the role. Same with "OOP" in the coursework section. We know what it means; an ATS keyword matcher might not.
  • Of the listed projects, only the first one mentions a web platform. Everything else from that point to the bottom sends mixed signals.
  • It helps when you show measurable results of your work.

How This Resume Matches a Real Job Posting

Let me compare the resume to an actual job posting:

Job posting with key requirements highlighted

This posting is looking for someone interested in web development, content, and digital marketing. Key requirements include: blog management, SEO, content improvement, email campaigns, social media posts, HTML, CSS, WordPress, CMS, attention to detail, willingness to learn, JavaScript, Canva, Figma, part-time role.

That is the baseline. A recruiter (who is not a specialist), an ATS (which checks keywords), and an AI screener (which has its own biases and hallucinations) all need to answer one question within seconds: does this candidate fit this job?

If the resume does not communicate "yes" in that first second, it drops to page 10 of the applicant pile. The recruiter skips it. The AI does the same.

Let me show you what ChatGPT said when asked to evaluate the fit (yes, recruiters use ChatGPT too):

Fit score: 58%

At 58%, there is practically no chance of getting this job with this resume. There is nothing to discuss here.

What We Can Do About It

Three things need to happen:

  1. Every skill, course, and experience needs to be connected to the job posting. Pick what supports the thesis that you are ready for this role.
  2. Fill the gaps where they exist.
  3. If you forgot to mention something relevant (say, experience with Canva), add it.

The days of a single generic resume working across all applications are gam ze ya'avor. At the same time, writing a custom resume for every single posting from scratch is not practical either, since you need to send dozens of them.

How ResumeHedgehog Handles This

So here is what I did. I used ResumeHedgehog, the tool I built for exactly this problem. It works without a credit card, comes with free credits to start, and there are ways to earn additional free credits. No need to pay anyone $1,000 to "review your CV".

You go to resumehedgehog.com, pick your language if needed (there are 20 available):

ResumeHedgehog language selection screen

Paste the job posting:

Pasting the job posting into ResumeHedgehog

Paste your resume:

Pasting the resume into ResumeHedgehog

And you get the first optimized version:

The generated resume, clean and tailored

I am showing the generated resume right away so you can see how clean it looks. The app offers several styles optimised for ATS readability:

Available resume styles in ResumeHedgehog

What the System Decided

The AI system I built made several decisions here. It concluded that the Python project experience is worth mentioning because it had a measurable outcome. Languages are neatly grouped in the skills section, alongside "attention to detail" and "willingness to learn", both of which the system extracted from the resume content and matched against the job posting. If something feels overstated, you can always adjust it, though the system tries not to embellish or invent claims that are not grounded in the original resume.

Importantly, there is now a summary section at the top that concisely describes who my friend is. The system weaved in references to the job posting's expectations: interest in digital marketing, content management, and so on. It also surfaced the fact that my friend has already built web applications. That is the single most important signal for this role, and it was buried in the old resume.

The system took a diffident, cluttered CV and turned it into something that says "I am ready for this" without inventing a single credential.

The Heat Map Test

Now let me show you the resume heat map. First, the non-blurred version:

Heat map of the new resume, non-blurred

And the blurred version:

Heat map of the new resume, blurred

You can see how the new CV communicates: "this is the person for this job", even though my friend does not have extensive industry experience. When you were building end-to-end systems for founders, from Angular frontends through Node backends to database layers, you learned to read signal and noise fast, and this resume now sends the right signal.

The Numbers

To not just rely on visual impressions, I ran the AI evaluation again:

  • Fit score before: 58%
  • Fit score after: 82%
Figure 1: Resume Fit Score comparison
Figure 1: Resume fit score before and after running through ResumeHedgehog. Chart by Tom Smykowski

The AI now rates the match at 82%, up from 58%. That puts my friend in contention for the top 10% of applicants. The fit score increased by 41%.

On keyword analysis: out of 14 keywords from the job posting, the new version contains 5 precise keyword matches, giving a match rate of 36%. Previously it was 21%, so that is a 71% improvement.

Figure 2: Keyword Match Rate comparison
Figure 2: Keyword match rate before and after optimization. Chart by Tom Smykowski

The identifiable keywords from the posting:

  • HTML, CSS, JavaScript, CMS, WordPress, SEO, content, website, images, media, blog, email campaigns, social media, digital marketing

The question at this point is whether to push for even more exact keyword matching. Personally I would not go that far, but it is possible. If you do, the resume will score even higher on keyword density, though you need to keep it looking natural.

These are strong results considering we did nothing besides paste the job posting and the resume into ResumeHedgehog.

We did not change what my friend has done. We did not invent any credentials. We removed the noise, used a proper resume standard, and reframed the content around a specific job posting so the recruiter can see at a glance why my friend thinks he fits. He knows he does. Now the recruiter will know it too.

Here is what the resume looks like inside the system:

Resume preview inside the ResumeHedgehog app

What Comes Next (Part 2)

But that is not all. We can keep improving the resume. We do not have to agree with every decision the system made.

Below the resume there is a refinement panel:

The refinement panel with follow-up questions

What I find particularly good is that the system proactively asks targeted follow-up questions, trying to surface things my friend has done that might be relevant for this specific posting. It offers multiple-choice answers, open-ended fields, and yes/no prompts.

I will cover that refinement workflow in the next article. I will also show how ResumeHedgehog builds a growing profile from the information you provide over time, so it can cherry-pick the best facts for each new job posting. The longer you work with the system, the better your resumes get. And even without any extra work, you can paste a new job posting and instantly get an optimized resume.

For now, I am sending this version to my friend so he can review it, and we will keep iterating from there.

If you are preparing for web development interviews or want to brush up on frontend fundamentals while searching for a role, I made Vue.js Interview Questions Flashcards to help you review the most common questions in a portable, deck-of-cards format

The job search can feel personal, and the fit score is a reminder that it often is not. When I look at how teams evaluate incomming candidates on systems I have scaled to millions of users, the first filter is almost always mechanical: keywords, scores, pattern matching. The resume is the interface between you and that machine. Getting it right is not about lying. It is about making sure the machine sees what you already know.

I wrote about a related problem, how AI-powered ATS systems introduce bias into the hiring process, and what the structural incentive behind it is, in my piece on recruitment discrimination in AI-driven hiring. If you are dealing with the job market right now, that one is worth reading alongside this.

Whether you are optimizing resumes, prompts, or production pipelines, the cost of AI tooling adds up. I put together a guide on how to get the same output from Cursor, Copilot and Claude while spending less. AI Coding Cost Optimization: Stop Burning Tokens & Credits (2026 Guide) covers model selection, caching, prompt structure and where small teams lose money without noticing. Use MEDIUMSAVES20 for 20% off, or subscribe to the Vibe Coding Newsletter for 50% off

ResumeHedgehog has free credits on sign-up, so there is no payment method required to generate a few resumes and see how it works. There are also options for earning additional free credits. And if you land a job or an internship, write to me. I would love to put your testimonial on the site. There is an option for that in the app too.

Sources

  • ResumeHedgehog, the resume optimization tool used in this article
  • Job posting keyword analysis based on manual extraction from a live internship listing (anonymized)
  • Fit scores generated by ChatGPT evaluation of resume vs. job posting alignment

Related Reading

Have you ever run your resume through an AI fit-score check against a job posting you wanted? What score did you get, and did the result change how you wrote the next version? I am curious what numbers people are seeing out there.

โ† All posts