I got ATS-rejected a lot, so I built a tool to find out why. This post covers the technical decisions and the mistakes.
Stack: Next.js, Supabase for auth and data, Groq (Llama 3.3) for fast, cheap analysis, and Gemini as a fallback if Groq fails or rate-limits.
What it does: you paste a resume and a job description, and it returns a score across four categories, the missing keywords, and rewritten bullets.
Decision 1: two model providers. A single provider going down means the whole product is down. The fallback costs a few lines of code and removed my biggest failure point.
Decision 2: payments must be idempotent. I grant scan credits from both the client verify step and a Razorpay webhook. Either can arrive first, so the credit logic checks payment status before granting, and a double event can’t give double credits.
What’s rough: you need an account before your first scan, which probably costs me signups. Payments only work in India. I’m weighing Stripe against Dodo Payments for global cards.
Questions for you: Would you scan before signing up? Is a 0-100 score useful, or does it feel arbitrary? Try it at https://getresume-ai.vercel.app and tell me what breaks.
Top comments (0)