Skip to content

Case study / Resalad

One profile, a tailored resume for every job

A job application tracker that writes a resume and cover letter for each job description from one detailed profile, with every model output validated before it is stored.

Product designLLM integrationNext.js
Services
Design, Engineering, LLM integration
Stack
Next.js, PostgreSQL, pg-boss, Anthropic API
LLM jobs
Six kinds, one validated path

The challenge

Tailoring a resume to every posting is slow, and handing the work to a language model creates new problems. A model will happily claim experience nobody has, and the job description it reads is text written by a stranger. Resalad had to produce a resume and cover letter for each application from one detailed profile, without inventing anything and without letting a pasted posting steer the result.

Our approach

We designed the product around one rich profile and short, guided steps: a setup wizard that shows the resume taking shape as you answer, and an application flow that asks one clarifying question at a time. Every model call goes through a single function that forces one tool call, validates the result against a strict schema and retries with the validation errors when it fails. Job descriptions and repository files are sanitized and fenced in delimiters, repository summaries must be reviewed before they are saved, and names and contact details come from the profile, never from the model.

The outcome

Gap analysis, resumes, cover letters, enrichment questions, skill suggestions and repository summaries all share that one validated path, run in a background worker, and are tested against a library of prompt-injection fixtures. PDFs are rendered once on the server from validated JSON, and marking an application as applied freezes the documents that were sent.

LLM job kinds, one validated call
6
Resume themes rendered on the server
3
Unreviewed repository text in a resume
0
“Our new storefront is faster, cleaner, and our content team can finally update it without filing a ticket.”
Client Name/E-commerce Lead

Have a project in mind?

Tell us what you’re working on. We respond to every inquiry within one business day.