A personal resume builder is a structured form, a few print-ready templates and a PDF export, which an agent builds in one sitting on a JSON Resume file with Playwright rendering the PDF. The AI parts are API calls: tailoring to a job description and rewriting bullets. What you give up is volume and polish, since Enhancv ships hundreds of templates, and you carry the risk that an AI edit invents a detail that you must catch before it goes out.
Before you buildEnhancv Free lasts only 7 days and keeps its branding, so for one application a free open-source builder is the cheaper start.
Build me a personal resume builder to replace Enhancv. Requirements: - Node.js 22 + TypeScript: a Fastify server and a React UI built with Vite. `npm start` serves http://localhost:4830. - Storage: one JSON file per resume in ./data/resumes/, following the JSON Resume schema plus a `layout` block (template id, accent colour, font, section order). Plain files, so they work with Git. - Editor: a form on the left and a live preview in an iframe on the right, with an A4 and US Letter toggle. Sections: header, summary, experience, education, skills, projects, languages and custom sections with a title and bullets. Reorder sections and bullets by drag (`@dnd-kit/core`). - Templates: four React components with print CSS (single column, two columns with a sidebar, compact, timeline), fonts self-hosted from `@fontsource` packages, accent colour changeable in the editor. - Export: PDF through Playwright `page.pdf()` with a real text layer and 12 mm margins, with a warning when the content runs past one page. Also download the JSON and a Markdown version. - Tailoring: paste a job description and send it with the resume to an LLM (provider, model and key in .env; OpenAI-compatible or Anthropic). Show missing keywords and proposed bullet rewrites as diffs to accept one by one. The prompt must forbid inventing employers, dates, titles or numbers. - ATS check, rule-based and local: extract the exported PDF's text with `pdfjs-dist` and verify reading order, standard section headings, contact details in the body and no text drawn as images. - Copies: "duplicate for this job" saves a version tagged with company and date; a list page filters them. - Single user. No accounts, no telemetry, local-first; only the tailoring call leaves the machine. - Out of scope: cover letters, an application tracker, translation, share links, LinkedIn import. - README: importing an existing JSON Resume, adding a template, and a warning to read every AI-edited bullet.
Opens your agent with the prompt filled in, you press enter. Or copy it and paste it into an empty folder.
The first prompt builds the core. Run these one at a time in the same folder to grow it into your own Enhancv.
Extend the resume builder in this folder. Requirements: - A "Cover letter" page that takes a resume, a job description and a tone (plain, warm, formal), and asks the LLM for 250 words in three paragraphs. - The prompt may use only facts present in the resume JSON; list any claim it adds that is not found there and block export until I confirm or delete it. - Render it with the same template fonts and accent colour and export a PDF with a real text layer. - Update the README.
Add a simple application tracker to the resume builder in this folder. Requirements: - A table in better-sqlite3 (./data/jobs.db) with company, role, link, status (saved, applied, interview, offer, rejected), applied date, the resume version used and notes. - A board page with a column per status and drag between columns, and a list view with filters and a text search. - Link a job to the tailored resume version created for it and open the PDF from the card. - Remind me on the dashboard when an applied job is older than 10 days without an update. - Update the README.
Add a LinkedIn import to the resume builder in this folder. Requirements: - Accept the ZIP from LinkedIn's data export (Profile.csv, Positions.csv, Education.csv, Skills.csv) via `adm-zip` and `csv-parse`; no scraping and no LinkedIn login. - Map the rows to the JSON Resume schema, keep dates as given, and show a review screen with every imported field editable before saving. - Mark fields it could not map and never invent missing dates or titles. - Update the README with how to request the export from LinkedIn.
Job seekers pay for a month or a quarter while they apply, so the monthly plan is mostly a short rental of good-looking templates and AI help. The pitch is a resume that reads as designed to a recruiter and passes an ATS, which is easier to buy than to tune yourself.
Estimate · Runs on your machine. LLM tailoring costs a few cents per application. The build is token usage on your agent plan.
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Free | $0 | $0 | Valid for 7 days. All templates and design tools, basic sections only, Enhancv branding, maximum 12 section items. |
| Pro | $39 | — | 300 resumes and cover letters, all templates, real-time content suggestions, ATS check, Pro sections, no branding, unlimited section items. |
Free is valid for 7 days, with all templates, basic sections, Enhancv branding and at most 12 section items per document.
Yes. An AI coding agent such as Claude Code, Codex or Cursor can build a usable personal version in one session with the prompt on this page, running on your own machine.
About $39 a month on the Pro Monthly plan, $468 a year (checked 2026-10-19).
Hundreds of templates and thousands of layout combinations: your build ships four; Resume translation into other languages with formatting kept; The AI job application tracker and the headline and objective generators; An ATS score and AI resume feedback that you can share with peers for comments; Support aimed at Pro users, which the FAQ says the team prioritises. If any of those matter to you, keep paying.
Yes: Reactive Resume (open source), Resume Matcher (open source), RenderCV (open source).