.../Case-studies/resume-analyzer-app...
ATS score checker Case Study

Tech Stack used:
- Next.js 16
- React 19
- TypeScript
- Tailwind CSS
- Google Gemini 2.5 Flash
- Next.js API Routes
- PDF Resume Upload Processing
- AI-powered ATS Analysis
Introduction
YesATS is an AI-powered ATS (Applicant Tracking System) resume analyzer designed to help job seekers evaluate how well their resumes may perform during automated screening processes. Users can upload a PDF resume and instantly receive an ATS score, detailed category breakdowns, strengths, weaknesses, and actionable suggestions generated using Google's Gemini AI model. The project focuses on providing a simple, modern, and accessible experience while demonstrating practical AI integration within a full-stack web application.
Why did I build this?

I built YesATS after noticing that many students, fresh graduates, and job seekers struggle to understand why their resumes are rejected before reaching recruiters. While applying for internships and entry-level roles myself, I became interested in how Applicant Tracking Systems work and how resumes are filtered automatically before a human ever reviews them. I wanted to create a tool that could provide immediate feedback and help users improve their chances of passing those automated screening stages.
Another motivation was to gain hands-on experience integrating modern AI models into a real-world product. Rather than building another traditional CRUD application, I wanted to explore how large language models could analyze documents, generate structured feedback, and create meaningful user-facing insights. The project allowed me to combine frontend development, backend API design, file handling, prompt engineering, and AI-powered analysis into a single practical application.
What problems did I face?

One of the biggest challenges was handling PDF resume uploads and extracting meaningful information for analysis. During development, I experimented with multiple PDF parsing approaches and encountered compatibility issues between modern Next.js versions and PDF processing libraries. Worker-loading errors, module resolution problems, and inconsistent parsing behavior required significant debugging before I could establish a reliable document-processing workflow.
Another major challenge involved working with AI-generated responses. Gemini occasionally returned responses wrapped in markdown code blocks instead of pure JSON, making it difficult to display structured results directly on the frontend. I solved this by implementing response sanitization, JSON validation, and TypeScript-based data modeling to ensure consistent parsing and rendering. Additionally, designing a professional ATS scoring system required careful prompt engineering to generate realistic scores, category breakdowns, strengths, weaknesses, and actionable suggestions in a predictable format.
What would I improve now?

If I continue developing YesATS, I would introduce job-specific resume analysis where users could paste a job description and receive a personalized ATS compatibility score. This would allow the system to compare resumes against actual hiring requirements rather than relying solely on general ATS evaluation criteria. I would also implement resume version tracking so users could compare multiple revisions and monitor improvements over time.
From a technical perspective, I would expand the platform into a more complete career optimization tool. Future enhancements could include keyword gap analysis, resume tailoring recommendations, interview preparation suggestions, cover letter generation, and analytics dashboards that visualize improvement trends. I would also explore structured AI outputs and more advanced document processing pipelines to improve reliability, accuracy, and scalability as the number of users grows.