Skip to main content
Matthew BobackBackend & Platform Engineer
Back to Case Studies
Independentproduction2024-12 to OngoingSolo

Case Study

AlchemizeCV

Prepare job applications from your experience, review the content and approve supported submission.

In 30 seconds

A live job-application product I build and operate alone. Applicants turn their experience into reusable material, find roles and prepare a résumé, cover letter and form answers together. They review the result before approving supported Greenhouse submission.

Applicants choose which coached bullets to keep, then review and edit the résumé, cover letter and form answers prepared for a role.

Independent · Solo · production · 2024-12 to Ongoing · live product · private source

Applying for a job involves several versions of the same work: remembering what you did, choosing the relevant evidence, rewriting it for a role and entering it into another form. I built AlchemizeCV to bring those steps together while letting the applicant review the result.

The product is live, and I build and operate it alone. A user creates or imports a profile, works with an AI coach on their experience, finds roles and prepares a tailored résumé, cover letter and form answers. They can edit the material and render the résumé before approving a supported application submission.

I care about the review step because a plausible sentence is not necessarily an accurate account of someone's work. The applicant needs to recognize their own experience in what gets sent.

Application dashboard with drafting, generated, ready and applied stages
The dashboard shows where applications are in the process. Ready means prepared for review and submission; it does not mean the employer has received anything.View larger

Build from the applicant's evidence

The coach proposes material from the profile, and the user chooses which bullets to keep. Accepted bullets become reusable material for later applications. That separates a suggested rewrite from the applicant's own record instead of quietly replacing it whenever a model produces another answer.

Application preparation then uses that record alongside the job description. The user can review the résumé, letter and form answers in the application workspace. Keeping these together makes it easier to spot a mismatch before downloading or submitting anything.

Résumé generation requires experience, projects or education in the profile. The applicant can edit the prepared content, render it and check the PDF before deciding it is ready. A generated document is a draft to assess, rather than a signal that the application is complete.

Find roles with a clear request

Users can browse a catalog of company job boards or ask Scout to research a role. The catalog brings together reviewed company job boards and refreshes their listings. It gives users a way to find roles from published openings instead of asking the model to invent vacancies from memory.

Scout first turns a request into criteria the user can inspect: role, location, skills and constraints. Research starts after confirmation. I made that an explicit step because “find me a backend job” leaves too much room for the tool to spend time on the wrong search.

Scout research plan for a remote Go backend role in Canada, awaiting confirmation
Scout asks the applicant to confirm the search criteria before research begins. This captured plan has not started running.View larger

Completed live tests have returned candidates, and the product checks listing evidence before admitting a result to the shortlist. The user can inspect those results and save useful roles to the shortlist before preparing an application.

Make submission deliberate

Submission currently supports Greenhouse forms. I require approval before the tool submits and limit it to one final click in an attempt. If the page does not clearly confirm what happened after that click, the application records an uncertain outcome for the user to check. Automatically trying again could send a duplicate application.

Login walls, CAPTCHAs and unsupported forms return a manual step. Those limits are part of the product's behavior, and should be visible to an applicant deciding whether to use it.

Application workspace showing a cover letter editor and inspected Greenhouse form fields
The review workspace brings the prepared content and form fields together. The applicant can inspect and edit them before approving submission.View larger

Keep it manageable to run

In August I removed the workflow engine and several supporting services from an earlier version. Too many components held overlapping ideas of whether a task was finished, leaving me to reconcile them when they disagreed.

The simpler version keeps background AI work separate from the browser, so closing a tab does not cancel it. Interrupted work is shown as interrupted and can be retried by the user. For a product I operate alone, those clear outcomes are more useful than adding machinery for scale I do not yet need.

I have verified discovery, generation and PDF export in live checks. I do not yet have outcome data showing whether the tailoring improves interview rates.

Built with

ReactFastAPIGoPostgreSQL

Keep going

Let’s talk about the work.

If your team is working on a similar problem, I’d be happy to talk through the decisions and what I learned.