Inspiration
When applying for jobs, many people struggle to get actionable feedback on their resumes. Career centers, mentors, and friends may offer advice, but it’s often vague, inconsistent, or inaccessible. I wanted to create a tool that could provide structured, specific, and personalized feedback instantly. With recent advances in LLMs, we realized we could combine AI with a clean frontend to make a resume reviewer that feels like having a career coach at your fingertips.
What it does
Resume Reviewer takes a raw resume text input and produces:
Scores across five key categories: Content/Relevance, Achievements/Results, Skills/Keywords, Organization/Formatting, and Professionalism.
Actionable comments, broken down by section, so users know exactly what to improve.
A simple, intuitive web interface that works seamlessly across devices.
The goal is not just to critique, but to help users iterate toward a professional, job-ready resume.
How we built it
Frontend: Built with React, TailwindCSS, and shadcn/ui for a modern, responsive interface.
Backend: A Flask app powered by Gunicorn, serving endpoints to analyze resume text.
AI Engine: OpenAI’s gpt-5-nano model processes the text using a carefully crafted prompt to ensure consistent JSON output.
Deployment: Containerized with Docker and hosted on cloud infrastructure.
CORS + Security: Configured to only accept requests from specific frontend origins.
The backend extracts structured JSON from the model response, validates it, normalizes the scores, and ensures required keys are always present before sending results to the frontend.
Challenges we ran into
Prompt Engineering: Getting the model to return strictly valid JSON required multiple iterations of prompt design.
Parsing Responses: OpenAI responses can come in different shapes; building a robust extractor for text content was tricky.
Frontend Integration: Ensuring category-specific comments mapped correctly into the UI required updating both the prompt and the schema validation.
Deployment Issues: Gunicorn workers initially crashed due to formatting bugs in the prompt. Debugging these subtle errors was a challenge.
Accomplishments that we're proud of
Delivering a reliable pipeline from raw resume text to structured feedback.
Building a frontend that feels polished, with clear visualization of scores and categorized suggestions.
Designing a backend robust enough to handle malformed outputs gracefully while still ensuring consistency.
Iterating quickly through errors to create a stable MVP.
What we learned
The importance of schema-enforcing prompts when working with LLMs.
How to debug complex OpenAI SDK responses and extract the data reliably.
How to integrate modern UI frameworks (like shadcn/ui) with backend APIs for a seamless user experience.
That user experience isn’t just about visuals—it’s also about clear, structured, and actionable content.
What's next for Resume Reviewer
Job Description Matching: Tailor resume feedback based on a specific job posting.
Improved AI Models: Experiment with larger models for more nuanced feedback.
Version History: Let users track improvements across multiple resume revisions.
ATS Optimization: Provide feedback on keyword density and formatting for applicant tracking systems.
Log in or sign up for Devpost to join the conversation.