My Senior Project

How I Built an AI to Help You Escape the Resume Black Hole

2025-06-10

TL;DR: For my senior project, I built Resumly.pro, a free AI-powered resume builder. It analyzes job descriptions and tailors your resume to match, helping you beat the bots and stand out to recruiters. It's built with Next.js, Python, and MongoDB. Give it a try!


As a student preparing to enter the job market, I've heard the horror stories and seen them firsthand. Talented friends sending out dozens of applications only to hear nothing back. Their expertly crafted resumes were disappearing into the "black hole" of online applications, likely filtered out by an Applicant Tracking System (ATS) before a human ever saw them.

The problem is getting worse. The job market is now navigating a flood of low-effort, AI-generated applications, making it even harder for genuine candidates to get noticed.

I realized that if AI was part of the problem, it could also be the solution. That’s why I built Resumly.pro.

Resumly.pro landing page screenshot

How It Works: Your 2-Minute Resume Tailor

My goal was to create a tool that gets you from job description to tailored resume in minutes.

  1. Create Your Master Profile: First, you provide your career information by uploading an existing resume or filling out a simple form. This becomes your central profile, which you can update anytime.
  2. Paste the Job URL: Grab the link to a job you're excited about and paste it into Resumly.pro.
  3. Let the AI Do the Work: Behind the scenes, the app scrapes the job description and uses AI to identify the most critical keywords, skills, and qualifications. It then intelligently rewrites your resume summary and highlights your most relevant experiences to match what the employer is looking for.
  4. Review, Edit, and Download: You get a fully-tailored resume draft. You can make final tweaks in the editor and then download a professional, ATS-friendly PDF, ready to submit.

How I Built It: The Tech Stack and Architecture

Building a full-stack AI application was a fantastic challenge. Here are the technologies I chose and why:

  • Frontend: Next.js & Tailwind CSS: I chose Next.js for its powerful features like server-side rendering (SSR) and static site generation (SSG), which lead to a faster user experience and better SEO. The component-based architecture of React made it easy to build a modular and maintainable UI. Tailwind CSS allowed me to design a modern, responsive interface rapidly without leaving my JSX.

  • Backend: Python, Flask, and Gemini: Python was the natural choice for the backend due to its incredible ecosystem for AI and web scraping. I used Flask, a lightweight web framework, to build the API that powers the application. Key libraries included Selenium, and BeautifulSoup for parsing job descriptions (which I wrote about in my previous post), and Google Gemini API for extracting key content.

  • Database: MongoDB Atlas: Resume data is inherently unstructured. One person's experience section looks completely different from another's. MongoDB's flexible document-based model was a perfect fit, allowing me to store complex, nested user data without a rigid schema. Using MongoDB Atlas made deployment, scaling, and management a breeze.

  • Deployment: Vercel & Render: I adopted a split-deployment strategy for optimal performance. The Next.js frontend is deployed on Vercel, which is purpose-built for it and offers incredible speed and a seamless CI/CD workflow. The Python/Flask backend is hosted on Render, which provides a simple and scalable environment for running services and background workers.

Here’s a high-level look at how these pieces fit together:

Resumly.pro Architecture Diagram

Key Challenges and Learnings

This project taught me more than any single class could have.

  • The Scraping Problem: Reliably scraping data from diverse job sites (like Indeed, LinkedIn, etc.) was incredibly difficult. Each has a different structure. I solved this by using Gemini to extract key content from the job posting, which significantly reduced the complexity of my scraping logic.

  • Prompt Engineering: Getting the AI to generate high-quality, relevant resume text that didn't sound robotic was an iterative process. I spent dozens of hours refining my prompts, learning how to give the model the right context and constraints to produce useful output.

  • User Feedback is Gold: The most valuable insights came from my 10 user testing sessions. Watching someone use my app revealed friction points I never would have noticed on my own. For example, I learned that users wanted more control over the final generated text, which led me to build a more robust inline editor.

Try It and Let Me Know What You Think!

Whether you're a recent graduate, a career changer, or just tired of customizing your resume by hand for every single application, Resumly.pro is for you.

This project has been a massive undertaking, and I'm incredibly proud of the result. It's still a work in progress, and I'm eager for feedback.

If you have any suggestions or find a bug, please don't hesitate to reach out on LinkedIn or via my contact form.