DEV Community

Cover image for Building an ATS-Beating Resume Analyzer: From Gemini to Groq
Aryan
Aryan

Posted on

Building an ATS-Beating Resume Analyzer: From Gemini to Groq

Hey guys, I'm Aryan, a full stack developer currently focusing on AI integrations and solving problems.

πŸš€ See it in action:

  • Live Demo: Check out the live site here
  • Source Code: GitHub Repository
  • Tech Stack: React, Tailwind CSS, Groq (Llama 3), and pdf.js

    🎯 The Problem: ATS Systems Are Gatekeepers

    If you are a developer or a person applying for jobs then you must have faced rejection due to not having a strong resume, resume isn't just about filling empty spaces by anything.
    We spend hours in building valuable projects but end up getting a rejection email.
    The culprit? ATS (Applicant Tracking System), instead of using one resume everywhere I decided to create something so I can optimize my resume for every job description, so I built a GROQ powered resume analyzer.

    βš™οΈ What it actually does:

  • We upload our resume pdf

  • We paste the job description

  • After hitting analyze the details goes to GROQ (llama-3.3-70b-versatile) and it gives us the response.

  • The response consist of ATS score, missing keywords and Detailed analysis of resume including fixes based on the job description.

    🚧 Problems I faced:

    πŸ€– AI Rate Limits & Token Bottlenecks:

    Choosing the right AI is the core of this project, at first I was using Gemini (flash 2.0) which is incredibly fast and smart but then I faced rate limiting issues.
    So then I switched to GROQ llama-3.3-70b-versatile that gives:

  • Tokens per day (TPD) ~ 500,000

  • Requests per minute ~ 30

πŸ”— The UI Freeze: Enter Web Workers

While processing and parsing resume PDFs I realized for bigger files, it will try to handle all the process of extracting the text in the main thread of JavaScript that can result to freeze the UI few seconds.
So I decided to use Web Worker.
Since JavaScript is single threaded, and performing expensive operations in it freezes UI and I/O operations, thus web worker helps to run these expensive operations to a separate thread preventing the overall flow from freezing.

  • Code:
import * as pdfjsLib from 'pdfjs-dist';

// 1. SETUP THE WORKER
import pdfWorker from 'pdfjs-dist/build/pdf.worker.min.mjs?url';
pdfjsLib.GlobalWorkerOptions.workerSrc = pdfWorker;

export const extractTextFromPDF = async (file) => {
    try {
        let text = ""
        // converting file to ArrayBuffer (binary form 0's and 1's)
        const arrayBuffer = await file.arrayBuffer();
        // We hand the binary data to the library.
        // This returns a 'pdf' object that acts like a book (it knows how many pages it has).
        const pdf = await pdfjsLib.getDocument({ data: arrayBuffer }).promise;

        for (let i = 1; i <= pdf.numPages; i++) {
            const page = await pdf.getPage(i);
            const textContent = await page.getTextContent();
            const pageText = textContent.items.map((item) => item.str).join(" ")
            text += pageText + "\n"
        }
        return text;
    }
    catch (error) {
        console.error("Error parsing PDF:", error);
        throw new Error("Failed to extract text from PDF.");
    }
}
Enter fullscreen mode Exit fullscreen mode

πŸŽ‰ The Final Result:

That's how I built something that truly taught me concepts like web worker and how to integrate AI and write clear prompt.
It's live in the given link below and you can also check out the code in the repo given below, would love to see your feedback about the project.

GitHub logo Aryan-404-404 / AI-Resume-Analyzer

AI-powered Resume Analyzer using React, Tailwind CSS, and the Google Gemini API (2.0 Flash). Features PDF parsing, real-time job description matching, and intelligent gap analysis.

πŸš€ AI Resume Analyzer

React Tailwind CSS Groq Vite

A smart, AI-powered career tool that helps developers optimize their resumes for Applicant Tracking Systems (ATS).

πŸš€ Live Preview Link

https://ai-resume-analyzer-pi-ruby.vercel.app/

This application uses the Groq Llama 3.3 70B model to perform a deep-dive analysis of your resume against specific job descriptions. It provides a detailed match score, identifies missing technical keywords, and offers actionable feedback to help you land more interviews.


✨ Key Features

  • πŸ“„ Smart PDF Analysis: Automatically parses and extracts text from uploaded PDF resumes.
  • πŸ” Job Description Matching: Compares your skills directly against the target JD to calculate a relevance score.
  • πŸ“₯ Download Reports: Export your detailed analysis and missing keyword list (PDF/Text) for offline reference.
  • πŸ“Š ATS Score Calculation: Detailed breakdown of why your resume passes or fails specific ATS filters.
  • πŸ’‘ Intelligent Feedback: Provides "Quick Fixes" and long-term improvements based on the identified gaps.
  • ⚑ Lightning-Fast Processing: Powered by Groq's…

Top comments (0)