Case study
InterviewAI
AI mock interviews, built around what you've actually shipped.
The problem
Generic interview prep asks everyone the same canned questions, none of which touch what you actually built. InterviewAI runs two modes. From GitHub reads your real repositories and asks about them. By Skill runs a focused round on a topic you pick, like Python, DSA, or system design. Either way you get five sharp questions, a 0 to 10 score, and feedback that skips the flattery. Free, and no credit card.
Architecture
A Next.js 14 frontend talks to a FastAPI backend that runs the show. In GitHub mode it pulls a candidate's public repos through the GitHub API and builds questions from what they've actually shipped. Groq handles both writing the questions and grading the answers, while SQLAlchemy and Supabase take care of persistence and sign-in.
Key decisions & trade-offs
- FastAPI for the backend. Async I/O suits a service that spends most of its time waiting on the LLM and the GitHub API, and the type hints plus auto-generated docs kept iteration fast.
- Two modes, one engine. GitHub and Skill mode share the same generate-and-grade pipeline. Only the prompt-building step differs, which kept the codebase small and the behaviour consistent.
- Anonymous by default, protected where it counts. No login to start an interview, which keeps friction near zero, but writes from signed-in users are JWT-authenticated and every IP is capped at five interviews an hour. The trade-off: open access invites abuse, so the rate limiter and token checks were the price of staying frictionless.
The hardest part
Getting an LLM to grade consistently. Early on, the same answer could score a 6 on one run and an 8 on the next, which makes the whole thing feel arbitrary. The fix was to stop asking for a vibe and start asking for structure: a fixed rubric in the prompt, a low temperature, and a strict output format the backend parses into a 0 to 10 plus two or three sentences of feedback. Consistent inputs, consistent grades.
Outcome
- Live at reinterviewai.vercel.app, with Google sign-in and a free tier that needs no card.
- Two-mode interviews: repo-aware questions from GitHub, and topic rounds across 11 skills, both with real-time grading.
- Abuse-resistant by design: rate-limited to five interviews per IP an hour, JWT-protected writes, and shareable result links.
What I'd do next
Cache and reuse common skill-mode questions to cut LLM cost, publish the scoring rubric so the feedback is less of a black box, and let signed-in users revisit a full history of past interviews.