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.

- 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
- 01Give a free, specific report rather than a score with no explanation.
- 02Rewrite a resume without adding a single fact the candidate did not supply.
- 03Support the formats people actually have, meaning PDF and Word.
- 04Keep the resume itself out of storage.
- 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
- 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.
- 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.
- 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.
- 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.
- 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



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.