Resume analysis that ships
Resumify
Upload a resume, get scored feedback, LaTeX recommendations, and tone-aware cover letters with multi-format export, backed by Gemini and a rate-limited Next.js API.

Problem
Job seekers bounce between parsers, AI chat tabs, and export tools. Feedback is slow, unstructured, and hard to turn into a clean application packet.
Architecture
Product flow
System architecture
Analysis loop
My responsibility
I built the product end to end: Next.js app and API routes, PDF/DOCX extraction, Gemini analysis and cover-letter generation, export paths, rate limiting, and admin metrics.
Decision
Keep inference behind typed API handlers with Zod-shaped Gemini outputs, separate extract/analyze/cover-letter routes, and configurable rate windows so a public demo cannot burn the model budget.
What could fail
Corrupt or non-resume uploads, OCR/parse failures, Gemini timeouts or quota hits, prompt leakage in logs, and abuse of free endpoints.
How I made it reliable
Mime checks and rate limiters on extract/analyze routes. Secure logging redacts secrets. Health and metrics endpoints expose dependency and performance status for operators. Structured Gemini schemas keep scores and suggestions parseable.
Result
Live at resumify-peach.vercel.app: upload → score → LaTeX guidance → cover letter → export in one loop.