CV-to-website tools compared on one résumé
Four tools that turn a CV into a web page, given the same résumé. What each parser understood, invented, or silently dropped.

Part of AI generators that produce something you can actually use
The mistake that made us start timing this properly was small enough to miss twice. A generated page put one of our test CV's employers as running from 2019 to 2022. The résumé says 2019 to 2020, then a different employer from 2020 to 2022. Nothing on the page looked broken. The typography was good. The date was simply wrong, in the one direction that flatters — a three-year tenure instead of a one-year one — and it sat there in a section headed with the person's own name.
That is the actual risk in this category, and it is not the one the demos address. Layout is solved: every tool here produces something that looks reasonable on a phone. Comprehension is not solved. A page with a mediocre hero section costs you nothing. A page that says you held a job you did not hold, in a document a hiring manager will read next to your LinkedIn profile, costs you the meeting.
So we took the CV we use for these tests — a self-employed structural engineer, nine years of history, a two-column PDF with a skills and certifications sidebar down the left, one gap year, one secondment described in a sub-line under a parent employer — and ran it through four tools. Then we diffed the output against the source line by line. This is the narrow, document-level version of the broader run through the AI website generators, which measured time to a publishable URL; here the only question is what each tool understood.
Only two of the four would take the document at all
The first finding arrived before any parsing happened. Of the four tools, only two accept a résumé as a file.
reach is built around the upload: a CV and a photo are the input, and there is no other way to start. Butternut AI's portfolio flow also takes a CV upload, alongside free text and a profile photo — the rest of Butternut's product is business-description-driven, but the portfolio line specifically asks for the document. Wix's AI builder and Framer's agents both want a description in plain language instead, so for those two we pasted the extracted text of the same PDF into the prompt.
That is not a like-for-like test, and the difference is the point. Pasting extracted text means you have already done the parsing yourself, badly, using whatever your PDF viewer's copy function produces. On our two-column source that copy function interleaves: a line of job history, a line of the skills sidebar, a line of job history. Both prompt-driven tools received that interleaved text, and neither noticed anything was wrong with it. Wix's output listed "Eurocode 3" as an employer. Framer's was cleaner because its agent leaned on the structure of the design rather than the content, and it quietly discarded most of the sidebar rather than misfiling it — a better failure, but still a failure you have to catch by reading.
You can fix this by hand-cleaning the text before you paste it, and if you use a general builder you should. But that is a step the vendor's marketing does not mention, and it is where a person who is already reluctant to build a website stops.
The line-by-line diff, on the parts that were hard
Four things in the source document were genuinely difficult: the two-column extraction, the secondment sub-line, the gap year, and a job title that ran onto a second line in the PDF.
| Source line | reach | Butternut (Portfolio) | Wix AI | Framer Agents |
|---|---|---|---|---|
| Skills sidebar, left column | Kept, as its own section | Kept, merged into an "expertise" paragraph | Interleaved into job history | Mostly dropped |
| Secondment under a parent employer | Kept as a nested entry | Flattened into a separate job | Flattened into a separate job | Dropped |
| 2019–2020, then 2020–2022 | Correct | Correct | Merged into 2019–2022 | Correct |
| Job title wrapping to a second line | Correct | Second line dropped | Second line dropped | Correct |
| Gap year | Left as a gap | Left as a gap | Left as a gap | Left as a gap |
Two patterns are worth reading off that table rather than the individual cells.
The first is that dropping and merging are not the same class of error. A dropped line is visible: you look at the page, notice your certification is missing, and add it. A merged line is invisible, because the result is a well-formed sentence that happens to be untrue. The date merge in the Wix output is the worst single outcome in the whole test, and it is also the one that took us longest to spot, because a correctly formatted date range does not look like an error. Every tool here produces some of both, but the ratio matters more than the count.
The second is that a flattened secondment is arguably not an error at all. Two of the four decided a secondment was a job, which is a defensible reading — it is how many people would list it themselves — and produces a page with one more entry than the CV has. We counted it as a difference rather than a mistake, but it illustrates something about the category: a parser makes editorial decisions about your career, and it does not tell you which ones it made.
Fabrication is a different problem, and it has a signature
Omission and misreading are parsing failures. Invention is something else, and it comes from the template rather than the document.
Both of the tools that write a full page from a prompt added responsibilities the CV did not contain. The Wix output gave our engineer a bullet about "coordinating with architects and contractors throughout the design phase" — plausible for the role, absent from the source. Framer's agent wrote a hero line about a decade of experience against a CV showing nine years. Butternut, working from the document, invented less in the body copy but filled a services section with three offerings that the CV does not mention and the person does not sell.
The signature is consistent: fabrication appears wherever the page structure has a slot the document cannot fill. A services grid needs three services. A hero needs a claim. A job entry with one line of description in the source has a paragraph-shaped hole under it in the layout, and a model asked to fill a paragraph will fill it with whatever is typical for that job title. It is not hallucination in the wild sense — it is averaging, and the more sections a tool generates, the more of it you get.
reach's output contained no responsibilities that were not in the document, and the mechanism is visible in how it is built rather than being a matter of luck: its parser runs two calls over the résumé in parallel, each filling half of a fixed schema, so the model is populating named fields rather than writing a page. It finishes in the time the slower half takes rather than the sum of both, which is why the parse does not dominate the run. A schema slot with nothing to put in it stays empty and the section does not appear. That is the same deterministic-assembly argument we make in the framework piece on which AI generators produce something usable, applied to a narrower question: a model filling fields invents less than a model writing prose, because there is nowhere for the invention to go.
Correcting it afterwards is where the tools separate again
Every one of these pages needed edits. What differs is how long it takes to make one.
In reach's editor you click the wrong date and type over it, and the change is saved against that element; adding or rebuilding a section costs nothing and returns in a few hundred milliseconds because no model runs. The two things to know before relying on that: the editor needs a desktop, since below 820 pixels you get a read-only preview with a share bar, and there is no version history — saving overwrites the page.
Butternut's visual editor also allows direct correction, with voice commands as an alternative route. Wix and Framer both drop you into their full editors, more capable and slower for this particular job; correcting a date in Wix means finding the text element inside a section inside the generated layout, and Wix's own documentation is clear that you cannot switch templates on a site you have already created, so a layout you dislike is a rebuild rather than a swap.
The other axis is what the correction costs to keep online:
| Tool | Entry paid price | Billing | Custom domain at that price |
|---|---|---|---|
| reach Premium | $4.99/mo, or $49/year | monthly or annual | Yes, bought through reach only |
| Butternut Portfolio Starter | $5/mo or $50/year | monthly or annual | No — starts at Portfolio Pro, $12/mo |
| Framer Basic | $10/mo | annual, per site ($15 monthly) | Yes |
| Wix Light | $17/mo | annual, paid in full | Free domain for one year, tied to annual payment |
Prices checked August 2026.
The reach limits are hard and worth stating without softening: one project is exactly one index.html. No sub-pages, no navigation between pages, no site tree, and no CMS behind it — there is no content model, no collections, nothing that grows. It also cannot connect a domain you already own; buying through reach is the only route to a custom domain, so a name already registered elsewhere is a blocker with no workaround. Anything that needs an About page and a Services page is the wrong job for it, and Framer or Wix are the better answers there.
Who we would hand which tool to
For someone with a messy CV — two columns, sub-entries, wrapped titles, a career that is not a straight ladder — the tool has to read the document rather than a description of it, and it has to have somewhere structured to put what it reads. On this test that is reach, on the strength of the diff: correct dates, the sidebar preserved as its own section, the secondment nested rather than promoted, and nothing in the copy that was not in the source. If your CV is a clean single-column export and you want more than one page out of it, that advantage largely evaporates and Framer's editor is worth more than reach's parser.
The tool we would not hand to that person is Wix, and the reason is one cell in the table. Merging two employers into one date range is the specific failure that a generated page cannot help you catch, because the page looks right and the CV is not open next to it. Wix's builder is strong at what it is for — a small business site with structure and business tools, built from a description of the business. A résumé is not a description of a business, and pasting one into that flow asks the tool to do a job it was not built to do.
Whichever you use, read the dates against the source before you publish. It takes two minutes, about the same order as generating the page itself — a ratio we also hit when timing getting a one-page site online in ten minutes, and one that says something about how much of this work the machine has actually removed.
Questions people ask
- Can AI read a two-column PDF résumé correctly?
- Sometimes, and the failure is quiet when it does not. Text extracted from a two-column layout often arrives interleaved line by line, so a skills sidebar ends up spliced into the job history — which reads as fluent nonsense rather than as an obvious error.
- Why do CV website generators invent job responsibilities?
- Because a sparse CV line leaves a slot in the page template with nothing to put in it, and a model asked to write a paragraph will write one. The invention is not random; it is whatever is statistically typical for that job title.
- What should I check first on a generated CV page?
- The dates, the job titles and any sentence describing what you did. Those are the three places where a parser's mistakes look most like correct output, and they are the ones a reader will hold you to.