Inspiration
Everyone hates writing their resume — and almost everyone is bad at it. The hard part isn't formatting; it's the blank page. People sit down to "list their accomplishments" and freeze, then undersell themselves with vague lines like "responsible for managing projects." Meanwhile, recruiters spend ~7 seconds per resume and ATS bots silently reject anything that isn't cleanly structured.
I realized the real bottleneck is extraction, not generation. The information that makes a great resume already lives in someone's head — they just don't know how to get it out. So instead of giving people yet another template and a blinking cursor, I built something that asks the right questions and does the writing for them.
What it does
Resumerush walks you through a friendly, plain-English survey — no resume-speak required. You ansIr questions the way you'd talk to a friend ("what did you actually do at that job?"), and the AI turns your raw notes into recruiter-grade, quantified bullet points.
- Guided survey → resume. Your ansIrs are collected into a transcript and sent to the AI, which writes a fully structured resume — summary, experience, skills, and metric-driven bullets.
- "Help me phrase this." Stuck on a free-text ansIr? One click expands your rough notes into polished prose before they ever hit the resume.
- Two export modes.
- Boring — a clean, ATS-safe layout that sails through applicant-tracking systems and exports as a Google Doc.
- Beautify — a designed, recruiter-facing PDF with a live theming panel (fonts, colors, spacing, accent) you can tIak in real time.
- Inline editing. Hover any bullet in the preview to Regenerate, Edit, or Delete it — regenerate calls the model for a fresh phrasing of just that line.
- Accounts & dashboard. Sign up with email or Google, save resumes, and pick up where you left off.
- Always demos. Everything degrades gracefully: no AI key falls back to a sample resume, no auth config falls back to a mock session — so the app never shows a broken screen.
How I built it
- Frontend — React (UMD) with in-browser Babel, served as plain static files. No build step, no bundler —
index.htmlloads config, then the screens and React app directly. This kept iteration instant during the hackathon. - AI — Vercel serverless functions (
/api/generate,/api/rephrase) call the Gemini API.generateuses structured output (responseSchema) to return a typed resume JSON;rephrasehandles single-bullet regeneration and the "expand my notes" feature. - Auth & persistence — Supabase Auth (email/password + Google OAuth) with Row Level Security, so the public anon key can live safely in committed config.
- Hosting — Vercel for both static assets and the API functions; one
vercel --proddeploys the whole thing. - Design — Imported from a Claude Design prototype and wired up for real, with a custom token-based theme system (
styles.css) and a live tIaks panel.
Challenges I ran into
- The Gemini free-tier trap.
gemini-2.0-flashreturnedHTTP 429 — free_tier_requests, limit: 0on our key; Google had quietly wound down free access to the 2.0 models. I switched togemini-2.5-flash, which still has free quota and supportsresponseSchemastructured output. - Getting structured, trustworthy output. Free-text ansIrs are messy. Coaxing the model into consistent, schema-valid JSON — and quantified bullets that don't hallucinate metrics — took real prompt iteration.
- Two layouts, one source of truth. Making the same resume data render as both an ATS-plain document and a fully themeable designed PDF meant carefully separating content from presentation.
- No-build constraints. Shipping React with in-browser Babel keeps things simple but means watching bundle size and load order by hand.
- Graceful degradation everywhere. I wanted the app to demo flawlessly even with no keys configured, which meant building real fallbacks for both the AI and auth layers.
Accomplishments that I're proud of
- A genuinely different take on resume building — interview-style extraction instead of a blank template.
- An end-to-end working product: survey → AI generation → inline editing → two real export formats → saved accounts.
- It always demos. The graceful-degradation fallbacks mean there's no scenario where a judge sees a broken page.
- A clean, fast, zero-build architecture that still ships AI features and auth.
- A polished, cohesive brand and UI in hackathon time.
What I learned
- The model is only as good as the questions. Most of the quality came from designing the survey, not from the prompt at the end.
- Read the fine print on free tiers — model availability and quotas shift, and a "free" model can silently mean
limit: 0. - Structured output (
responseSchema) is a superpoIr for turning an LLM into a reliable backend component instead of a text generator you have to parse. - Constraints help. The no-build setup forced simplicity and kept us shipping.
- Fallbacks are a feature. Designing for the no-key path made the whole app more robust.
What's next for Resumerush
- Job-description tailoring — paste a posting and have Resumerush re-rank and rewrite bullets to match it.
- ATS match score — show how Ill a resume scores against a given job before you apply.
- Cover letters & LinkedIn — generate matching cover letters and an optimized LinkedIn "About" from the same survey.
- More Beautify templates and richer theming.
- Version history & A/B variants so you can keep tailored copies per application.
- Import from existing resume — upload a PDF and let Resumerush interview you only on the gaps.
Log in or sign up for Devpost to join the conversation.