JobbyAIresume scoring · job match · interview prep
An AI SaaS that helps job seekers make outsized progress in their careers — resume scoring, job-match ranking, and interview prep, all built on top of Gemini with a surprisingly small code surface.
The diagram, walked through in plain language
- 1Three tools, no accounts needed
A Next.js website offers three buttons: 'score my resume', 'match me to this job', 'prep me for this interview'. Pick one, paste text in.
- 2Each button calls Gemini once
The pasted text is wrapped in a carefully-tuned prompt and sent to Google's Gemini model as a single call. No chatbot loop, no back-and-forth — anxious users do not want to converse with a bot.
- 3The reply comes back as structured data
Gemini is asked to reply in a specific JSON shape (e.g. score, reasons behind the score, concrete fixes), which the app validates before showing it.
- 4The UI renders a card, not a wall of text
The structured reply becomes a clean card with the score, the reasons, and concrete suggestions — fast enough that the first useful suggestion appears in under two seconds.
- 5Nothing is stored unless you sign in
Each request is independent; the app does not keep your resume or job description on its servers if you don't ask it to.
- 6The whole thing runs on a free tier
The site is hosted on Vercel; the codebase is open source under MIT on GitHub for anyone to fork or audit.
The brief
The original question was “what would a minimum useful career-coach look like if it had access to a capable LLM and nothing else?” The answer we arrived at was three tightly-scoped tools that a job seeker would reach for in the same session: score my resume, rank me against these postings, prepare me for this interview.
Deliberately not a chatbot. Chatbots are easy to build, easy to show off, and a poor fit for someone who is already anxious about the conversation they're preparing for.
The constraints
- Time-to-first-suggestion under 2 seconds. Anxious users do not wait.
- The product has to feel trustworthy: every score needs a reason, not a vibes-based number.
- Keep the dependency surface small — this is a side project that has to be maintainable in an afternoon a month.
- Free to try, transparent about costs, no dark patterns on upgrade prompts.
The shape we built
A Next.js app on Vercel, a single well-prompted Gemini call per flow with structured output validated against a schema, and a Tailwind-driven UI that is deliberately quiet — white space, legible type, one accent color per section.
Each flow is a pure function of pasted text in, structured JSON out, React component render. No session state, no “chat history,” no stored user data unless the user signs in. The code surface is small enough that you can read the whole thing in a sitting.
What was hard
- Prompt stability. Gemini's structured output mode was still young when we built; one in a hundred responses would return near-valid JSON that had to be coaxed, not rejected.
- Job-match ranking is almost entirely a prompt engineering problem, not a classical ML problem. Getting the model to produce a defensible rationale without hallucinating matching requirements took more iteration than everything else combined.
What it does today
Running on Vercel, open source under MIT. Users report the resume scoring and interview-prep flows are the ones they come back to — the interview prep was almost cut in week two and turned into the most-used feature by week six.
What I'd do differently
I'd ship a structured feedback loop from day one — a thumbs up/down with an optional “why?” — and feed it into prompt iteration. The version we have works because we read every piece of user feedback by hand; that doesn't scale past a weekend project.
- Next.js · TypeScript
- Tailwind CSS
- Gemini API
- Vercel (hosting · edge)
- Playwright (e2e tests)
Continue the tour
Have a similar problem?
If this shape of engagement fits what you're working on, I'd be happy to scope it.