CV AlchemistResume analysis and rewriting that refuses to invent things

CV Alchemist scores a resume against the applicant tracking systems that filter it, then rewrites it without adding anything the candidate did not claim. We built the application, the AI pipeline and the guard that sits on top of it.

The CV Alchemist homepage beside an ATS report showing a score, improvements and strengths
Client
CV Alchemist
Sector
Careers and recruitment
Year
2026
Platforms
Web app
Services
Product and UX design, Web development

Upload a resume, get a free report on how an applicant tracking system will read it, and subscribe to have it rewritten. The rewrite is the product; the free analysis is how you find out whether you need one.

Built for

  • Job seekers whose applications are not reaching a human.
  • Career changers whose experience needs reframing for a new title.
  • Anyone applying at scale, who needs a version per role.

The problem

Most large employers filter applications before a person sees them. A resume can be perfectly honest, well written and still fail, because the format confuses a parser or the words do not match the job title being screened for. Candidates get no feedback, so they cannot tell which of those it was.

The obvious fix is worse than the problem. Ask a language model to improve a resume and it will happily add a metric, a skill or a qualification that was never there. A candidate who submits that has not been helped, they have been handed a document that can end an interview or a career.

There is a commercial problem too. Every analysis costs money to run. A service that offers a free report has to survive people uploading things that are not resumes at all.

Goals

  1. 01Give a free, specific report rather than a score with no explanation.
  2. 02Rewrite a resume without adding a single fact the candidate did not supply.
  3. 03Support the formats people actually have, meaning PDF and Word.
  4. 04Keep the resume itself out of storage.
  5. 05Stop non-resumes before they reach the model.

Our role

We built the product, the pipeline and the infrastructure it runs on.

What we delivered

  • Product and interface design
  • FastAPI application, modular by concern
  • Four-pass AI pipeline on Google Vertex AI
  • Anti-fabrication guard over the model output
  • Passwordless authentication with magic links
  • Stripe subscriptions, billing portal and webhooks
  • PDF and Word export of the rewritten resume
  • Deployment to Cloud Run with replicated storage

How we worked

  1. 01

    Define what must never happen

    Before designing the pipeline we wrote down the failure that would make the product unusable: inventing experience. Everything else was built around preventing it.

  2. 02

    Split the work into passes

    Extraction, enhancement, validation and verification are separate calls with separate jobs. A single prompt asked to do all four does none of them reliably.

  3. 03

    Diff the output against the input

    The guard compares the rewritten resume with the original: every number, every skill, every claim. Anything that appears in the rewrite and not in the source is removed before the candidate sees it.

  4. 04

    Reject early

    A cheap heuristic decides whether an uploaded document looks like a resume at all. A menu or an invoice is turned away without a model call.

  5. 05

    Give the report away

    The analysis is free and detailed enough to act on by hand. The subscription buys the rewrite, so the value is proved before anyone is asked to pay.

Screens and features

The three steps on the CV Alchemist homepage: upload resume, get free analysis, unlock AI rewrite
Three steps, and the second one costs nothing.
An ATS report showing a score of fifty out of a hundred, four improvements and three strengths, each written as a specific instruction
The report from a sample resume. Each line is an instruction, not a rating.
The CV Alchemist homepage on a phone with the headline Get Your Resume Past the Robots and the upload button
Most people upload from a phone, so the drop zone is a button first.
  • A free report that is worth reading

    Critical issues, improvements and strengths, each written against the specific resume and the target role rather than drawn from a list of generic advice.

  • An anti-fabrication guard

    The rewrite is diffed against the original. Invented metrics and skills that were never claimed are stripped out before delivery.

  • Target role aware

    Naming the role you are applying for changes both the analysis and the rewrite, because the same resume is strong for one title and weak for another.

  • PDF and Word in, PDF and Word out

    Uploads are parsed from both formats, and the rewritten resume is generated as a formatted document rather than a block of text to paste.

  • No password to forget

    Sign-in is a magic link by email, with the session held in httpOnly cookies.

  • Resumes are not kept

    The document is processed in memory and deleted once the analysis or rewrite is complete.

Technical choices

What the product is built with, and why.

FastAPI on Python 3.12
The work is document parsing and model orchestration, which is where Python's libraries are. FastAPI keeps the request handling async while the model calls are in flight.
A four-pass pipeline instead of one prompt
Extraction, enhancement, validation and verification each have a narrow job and a checkable output. A failure in one pass is visible rather than blended into a plausible paragraph.
A guard that does not trust the model
The safety property is enforced in code by comparing input and output, not by asking the model to behave. That check holds whichever model is behind it.
SQLite with continuous replication
The data is accounts and subscriptions, not resumes. SQLite in write-ahead mode is more than enough, and streaming replication to object storage gives durability without running a database server.
Cloud Run
Traffic is spiky and every request is short. Scaling to zero between bursts keeps a small product's hosting proportionate to its use.
Secrets from a managed store
Production reads its keys from Secret Manager at boot rather than from environment files on the instance.

Putting a model in front of your users?

The interesting part is what happens when it gets something wrong. Tell us what you are planning.