In 2022, I spent about a year applying for more than 2,200 jobs.
I got two interviews.
Two.
After a while, I started doubting everything. Was I aiming too high? Was my CV rubbish? Was it me?
I didn’t know then that most of my CVs were probably screened by software before a person ever saw them. Applicant tracking systems (ATS) pull information from your CV: things like your name, contact details, job titles, dates and skills.
I’d designed my CV to look good. Everything was laid out to look polished, and it never occurred to me that software might struggle to read it. I didn’t even know applicant tracking systems existed.
I only learned about ATS when I started studying multimedia design. The more I learned, the more I wanted to build something that might help other people avoid going through what I did.
That’s how I ended up building Adapt to Success.
What it does
Upload your CV as a PDF, DOCX or TXT file, and optionally paste in a job ad text. About a minute later, you can compare the optimised CV with your original CV, page by page.
If you like the result, pay once and download it as a Word file. If you don’t like it, just close the tab. No account, no subscription, and your CV isn’t kept afterwards.
The boring stack, on purpose
No framework, no bundler. Just plain HTML pages, a little vanilla JavaScript, Tailwind for the CSS, and PHP on regular shared hosting. Stripe handles the payment.
I chose a simple setup because I wanted to understand every part of it and be able to deploy it by uploading files. For a one-person project, that’s been more valuable than having a clever architecture.
The hard part wasn’t the AI
The tool uses a language model to optimise the CV, but the real work was figuring out the rules around it.
Ask a general chatbot to tailor your CV to a job ad, and it might add skills or keywords you don’t actually have. That’s a serious problem when the result is something you’ll send under your own name.
So most of the prompt is about what the model must not do. It can’t invent, infer or exaggerate anything that isn’t already in the CV. It can use wording from the job ad only when the CV supports the same fact. And it should focus on selecting, ordering and structuring the information - not rewriting it for the sake of rewriting.
The CV also stays in its original language. Paste an English job ad alongside a German CV, and the result is still in German.
Showing the “before” without a server
I wanted people to compare the result with their own CV, so the original file is displayed right in the browser: pdf.js handles PDFs, docx-preview handles Word files, and other formats appear as plain text on an A4 sheet.
The file doesn’t need to be sent anywhere just to show it. Its fonts and colours stay intact, too.
Building the Word file by hand
The PHP backend creates the downloadable .docx itself. It writes the XML parts and zip container without relying on a library.
A .docx is essentially a zip file full of XML files. Once I’d read the spec for the parts I needed, it turned out to be surprisingly manageable. Doing it myself also means I can control exactly what goes into the document: one column, real text and standard headings: the sort of layout parsers can handle well.
Seven languages, one of them right to left
The site is available in English, German, Spanish, French, Chinese, Hindi and Arabic.
Arabic taught me a lot. I had to use logical CSS properties throughout (padding-inline-start instead of padding-left), for example, and handle Latin terms like file extensions so they wouldn’t appear in the wrong order.
No tracking
There are no analytics scripts or tracking pixels. I count funnel steps on the server without cookies, which gives me a rough idea of where people drop off without telling me who they are.
For a tool that handles CVs, that felt like the only honest choice.
What I would have told myself back in 2022
Before sending another 100 applications, check whether software can actually read your CV. Copy the text from your PDF and paste it into a plain text editor. If your name, email or job titles come out jumbled or missing, that’s roughly what a parser is dealing with too.
If you want to see what the tool makes of your CV, it’s at ats.rip.
I’ve also written a few articles about how these systems actually work, based on the vendors’ own documentation rather than the usual myths: ats.rip/explained/articles.
I will be happy to answer questions about the build, the prompt rules or the job hunt itself. 🙏😊
Top comments (1)
You need to verify your account .
Link is in the profile.
Some comments have been hidden by the post's author - find out more