AI Resume Builder
The first version was a solo build. I vibe-coded an MVP end to end to prove the idea would actually pull traffic. Once it did, it was handed to a development partner and rebuilt as a proper product, with real infrastructure in place of the shortcuts that got the proof of concept out the door.
It still does the same job: turn a job post, a LinkedIn profile, or an existing resume into a tailored, ATS-ready CV, free and without an account.
At a glance
- Hypothesis
- Content pages were losing traffic to AI-generated answers that skip the click-through entirely. The bet was a lead magnet: a tool people actually have to visit and use, not an article an AI answer can summarize away.
- Role
- AI Martech Manager. Wrote the product brief, built the MVP myself, then owned the architecture and prompt design for the rebuild with an external development partner.
- Timeframe
- MVP built solo, October to December 2025. Rebuilt and relaunched March 2026.
- Users
- Job seekers at every stage: a first resume, a career change, or a first English-language CV after moving countries.
- Built on
- Next.js, the OpenAI API for tailoring and enhancement, and Apify for LinkedIn import.
- Surface
- Embedded in an iframe, no account or login required.
The problem
A resume builder had to earn its own traffic before it could prove anything else.
The business case was SEO, not just a tool
Semrush says monthly searches for “resume builder” and related keywords run roughly 368,000. The product had to be good enough to rank and convert.
Not everyone starts from the same place
A recent graduate has no experience to tailor. A career changer needs existing experience reframed, not rewritten. Someone who just moved countries needs help with conventions they don't know exist yet.
From MVP to platform
The first version was built to answer one question: would anyone use this?
I built it myself in about two months, a working product, not a prototype: OpenAI-based tailoring, a guided step-by-step form with autosave, LinkedIn import, and client-side PDF and DOCX export. It shipped, it got traffic, and it proved the case in the brief. It also shipped with the shortcuts a solo build takes to move fast.
Rate limiting
The MVP counted requests in memory, per server process, with a comment in the code that says as much: “for production, consider Redis.” The rebuild moved limits to Upstash Redis, enforced per action, so they hold up across serverless instances instead of resetting on every cold start.
Export
The MVP generated the PDF with jsPDF and the DOCX with the
docxpackage, both running in the visitor's own browser. The rebuild renders server-side with a headless Chromium instance, so the download doesn't depend on whatever fonts a visitor's browser happens to have, and matches the live preview exactly.Prompts
The MVP's entire resume prompt was one hardcoded file. The rebuild split it into five versioned strategies stored in Postgres, editable through an authenticated admin API, without a redeploy.
Architecture
Scroll to see the full diagram
Design decisions
Never invent a number
The tailoring and enhancement prompts are explicit: rewrite and reorder, never invent or change a user-provided number. A resume is the one document where a plausible-sounding fabrication is worse than an awkward truth.
One schema, three doors
A job post, a LinkedIn URL, and an uploaded file are three very different inputs, but all three resolve to the same canonical resume schema before anything downstream touches them.
Nothing is kept
There's no database for resume content. A session-scoped payload expires after 24 hours, so nothing about what a job seeker wrote sticks around after they're done.
Where it stands
What I did
I wrote the brief, built the first version myself, then owned the product for the rebuild.
Wrote the product brief
Defined the business case, the user personas, and the feature set, including where AI should structure input versus where it should stay hands off a user's own numbers.
Built and shipped the MVP solo
Coded the whole first version myself: the guided form, the OpenAI integration, LinkedIn import, and the export flow. It was the fastest way to find out whether the traffic case actually held.
Specified the rebuild
Once the MVP proved the concept, I defined what “production-grade” meant for this product specifically: real rate limiting, real PDF rendering, prompts as editable data, then worked with an external development partner to build it.