A step-by-step resume builder that produces polished PDF resumes through LaTeX. Designed with the goal of helping underclassmen at my university begin crafting professional resumes, this project leverages Next.js to deliver a clean, guided experience with real-time progress tracking and automatic local storage.

Many college underclassmen struggle to create professional resumes. Existing resume builders either charge subscription fees, produce generic templates, or lack the polish needed for competitive job applications.
Students need guidance through the resume creation process, but most tools assume you already know what to include. They also need the flexibility to edit and iterate without losing work or starting over from scratch.
I built a step-by-step wizard that guides users through each resume section with clear prompts and examples. The interface uses progressive disclosure—showing only what's needed at each step to avoid overwhelming users.
Rather than building yet another drag-and-drop editor, I chose a structured form-based approach that ensures consistency while still allowing customization. Each section provides helpful tips and examples of strong resume content.
The application uses local storage to automatically save progress, so users never lose work. They can leave and return to their resume at any time, picking up exactly where they left off.

Step-by-step resume builder with progress tracking
Why LaTeX over PDF libraries? LaTeX produces professional-quality typesetting that looks indistinguishable from documents created by experienced designers. PDF libraries would require manual positioning and styling that would be fragile and hard to maintain.
The LaTeX integration uses a client-side compilation approach with a lightweight LaTeX engine. This eliminates server costs and provides instant PDF generation without round-trip latency.
State management was crucial—I used React Context with localStorage persistence to ensure data survives page refreshes. The state structure mirrors the LaTeX document structure, making the final compilation straightforward.
The progress tracker calculates completion based on required vs. optional fields, giving users clear feedback on how close they are to a finished resume. This gamification element encourages users to complete all sections.
Form validation happens in real-time with helpful error messages. For example, date fields automatically format input and validate chronological order for experience entries.
Challenge: LaTeX compilation errors are cryptic. Solution: I built a custom error parser that translates LaTeX errors into user-friendly messages and highlights the problematic field.
Challenge: Different resume sections require different layouts (bullet points vs. paragraphs, multi-column vs. single). Solution: Created reusable LaTeX macros that handle layout complexity while exposing simple configuration options.
Challenge: Users wanted different visual styles. Solution: Implemented a template system that swaps LaTeX preambles while maintaining the same data structure.
Key Lesson: Forms are boring, but they're the right tool when data structure matters. A fancy drag-and-drop editor would have been impressive but less useful for ensuring resume consistency.
If I rebuilt this, I'd add AI-powered content suggestions and a review step that checks for common resume mistakes (passive voice, missing metrics, etc.).
Explore the live application or dive into the source code to see how it works.