Resumae
A resume checker that lines a resume up against one job post and marks what to fix: job words it never uses, bullets with no outcome, and layout that slows a scan.
- result
- Shipped a live resume analyzer and four-template builder, covered by 600+ tests. Rule-based analysis keeps reports available when the model call fails.
- my contribution
- Implemented typed AI analysis, rule-based fallbacks, test coverage, and product-funnel instrumentation.

- 2026–Present
- ai
how it works
Resumae scores a resume against the job post the person is applying to, instead of a generic template. They paste the job post and upload a PDF or DOCX; the API pulls the text out and an LLM returns the analysis as a typed object: matched and missing job words, a match score, bullet-level notes, and layout issues that would slow a six-second skim.
Suggestions are edits the user reviews. Each one sits next to the bullet it refers to and only changes the resume when accepted. If the model call fails or AI is switched off, rule-based analyzers for keywords, impact, writing, and parseability produce the same report shape, so the check still returns. Building a resume needs no account: four templates, an inline editor with undo and redo, and drafts kept in the browser until the user saves one.
engineering details
- Gets analysis back as a Zod-validated object through the AI SDK's generateObject, so the UI renders typed fields instead of parsing prose.
- Falls back to rule-based analyzers with the same output shape whenever the model call fails, so a check never dead-ends on an AI error.
- Covered by 600+ tests across Jest on the NestJS API, Vitest with fast-check property tests on the web app, and Playwright browser tests in CI.
- Instrumented the product funnel with PostHog.
in the product
Checked against the posting
Paste the job post and upload a PDF or DOCX; the report lists the job words the resume uses, the ones it is missing, and a match score.

Edits you approve
Each weak bullet gets a suggested rewrite with the outcome it was missing; nothing changes until the user accepts it.

Builder with no sign-in
Four templates and an inline editor with undo and redo; drafts stay in the browser until the user saves one.
