CV Once

How CV Once is tested

The builder makes two kinds of promise: that its checks flag what they say they flag, and that what you export is complete, readable and in order. Both are tested on every build, and the results below are from this build (26 October 2026).

The checks

The checks are plain pattern rules in /static/checks.js. They run in your browser as you type, with no AI and no network, and the same file runs at build time over the test set below and the example CVs. "Issues" are things a recruiter would very likely notice. "Notes" are worth a second look, but are often fine.

CheckWhat it looks for
Weak openingA bullet that starts with one of 23 duty phrases ("responsible for", "worked on", "helped with"…), optionally after "was". Only openings: "helped" in the middle of a sentence is fine. The full list.
Result without a numberAn experience bullet that claims a result (increased, reduced, improved, saved, cut, grew, sales, costs, satisfaction…) with no digit, number word, "doubled"/"halved", or %, £, $, €.
Few numbers overallFour or more experience bullets, fewer than a quarter of them with a number.
Long bullet30 words or more (note); over 45 (issue).
First-person pronounI, me, my, we, our, us (lower-case "us" only, so "the US market" passes). An issue in bullets, a note in the summary.
Present tense in a past roleA bullet in a role with an end date that starts with a present-tense verb from a list of about 40 ("Manage", "Leads").
Mixed date formatsMonth dates written more than one way across the CV ("Mar 2021" and "03/2021"; "Mar" and "March"; seasons); months on some roles and years only on others; more than one word for ongoing roles ("Present" and "Current").
Unreadable date, end before startA date the parser can't read (see the samples below); an end date before its start date.
Gap between rolesMore than six months between one role ending and the next starting, after merging overlapping roles. With year-only dates, only a gap of a year or more is reported. Always a note, never an issue.
Length for the region, last page nearly emptyThe page count measured in your browser against the usual length for the CV's region (US: 1–2 pages, and one page under about ten years' experience; Canada, UK and Ireland: up to 2; continental Europe: up to 3; Australia and New Zealand: up to 4; academic CVs: no limit), and a last page with only a few lines on it.
Unusual headingA section heading that isn't one of the standard names for that section type (99 recognised, such as "Work experience", "Employment history", "Key skills"), or a custom heading that sounds like a slogan ("My journey", "Superpowers").
Photo, personal detailsA photo switched on, or date of birth, marital status, nationality, religion or age, on a CV set to the US, Canada, UK and Ireland, or Australia and New Zealand.
Two-column layoutA two-column template: a reminder that some older parsers merge columns.
Cliché, all capitals, long summary37 stock phrases ("team player", "results-driven", "passionate"); text that is mostly capitals; a summary over 80 words.
Pasted symbols or table, inconsistent full stopsA line starting with a pasted bullet symbol (the template adds its own); tabs, runs of spaces or | separators from a pasted table; some bullets ending in a full stop and others not.
Contact details, entry without a title, role without achievements, too many bulletsNo name or email, an email that doesn't look complete, no phone (note); an entry with bullets but no title or organisation; a latest role with no bullets; more than eight bullets on one role.

Validation of the checks

Every build runs the checks over a labelled test set of 95 cases written for this purpose. Each case says which checks must fire and which must not, including hard cases that look like a match and aren't ("the US market", "Helpdesk lead", "helped" mid-sentence, a negative number that starts with a hyphen, overlapping roles). The build fails if any core case disagrees.

Result: 92 of 92 core cases pass, plus 3 documented known limits that are expected to fail.

CheckMust fire: caughtMust not fire: stayed quiet
All capitals1 of 10 of 0
Cliché3 of 32 of 2
Two-column layout1 of 11 of 1
Contact details2 of 21 of 1
Mixed date formats5 of 54 of 4
End before start1 of 10 of 0
Unreadable date2 of 21 of 1
Few numbers overall1 of 11 of 1
Gap between roles1 of 16 of 6
Unusual heading4 of 46 of 6
Length for the region3 of 34 of 4
Long bullet1 of 12 of 2
Result without a number4 of 46 of 6
Personal details1 of 11 of 1
Photo1 of 11 of 1
First-person pronoun3 of 33 of 3
Inconsistent full stops1 of 11 of 1
Last page nearly empty1 of 11 of 1
Long summary1 of 10 of 0
Pasted symbols or table2 of 22 of 2
Present tense in a past role1 of 12 of 2
Weak opening10 of 104 of 4
All 95 test cases
KindInputMust flagMust not flagResult
bulletResponsible for managing the front desk and phonesweak-verbpass
bulletWas responsible for the weekly payroll run for 40 staffweak-verbpass
bulletDuties included stock rotation and orderingweak-verbpass
bulletWorked on the new booking systemweak-verbpass
bulletHelped customers find productsweak-verbpass
bulletAssisted with month-end closeweak-verbpass
bulletInvolved in planning the office moveweak-verbpass
bulletParticipated in weekly stand-upsweak-verbpass
bulletIn charge of opening and closing the storeweak-verbpass
bulletDealt with customer complaints by phone and emailweak-verbpass
bulletLed a team of 6 through a system migration with no downtimeweak-verb, no-number, long-bulletpass
bulletSupported 30 teachers moving to the new reporting systemweak-verbpass
bulletRebuilt the onboarding checklist, which helped new starters settle faster
'helped' mid-sentence is fine; only openings are flagged
weak-verbpass
bulletHelpdesk lead for 200 users across three sites
'Helpdesk' is not 'helped'
weak-verbpass
bulletIncreased sales by redesigning the window displaysno-numberpass
bulletReduced waiting times in the clinicno-numberpass
bulletImproved customer satisfaction scoresno-numberpass
bulletCut costs by renegotiating supplier contractsno-numberpass
bulletIncreased sales by 12% by redesigning the window displaysno-numberpass
bulletReduced average waiting time from 40 to 25 minutesno-numberpass
bulletDoubled newsletter sign-ups by adding a form to checkout
'doubled' is a quantity
no-numberpass
bulletSaved £18k a year by renegotiating two supplier contractsno-numberpass
bulletWrote the style guide now used by the whole marketing team
no result claimed, so no number demanded
no-numberpass
bulletsRan the front desk · Answered phones · Booked meeting rooms · Ordered stationery · Greeted visitorsfew-numberspass
bulletsRan the front desk for 3 floors · Answered about 60 calls a day · Booked meeting rooms · Ordered stationeryfew-numberspass
bulletCoordinated the delivery of a new patient records system across four wards, working with IT, ward managers and the training team to schedule sessions for 120 staff over eight weekslong-bulletpass
bulletRan 12 training sessions for 120 ward staff on the new patient records systemlong-bulletpass
bulletI reorganised the stockroom, cutting picking time by 20%pronounpass
bulletOur team cut picking time by 20%pronounpass
bulletCut picking time by 20% across the team's two warehousespronounpass
bulletExpanded sales into the US market by 15%
'US' is a country, not 'us'
pronounpass
summaryI am a nurse with eight years on surgical wards.pronounpass
summaryStaff nurse with eight years on surgical wards and a mentor qualification.pronoun, clichepass
bulletManages a rota of 25 staff across two shifts
present tense in the ended role
tensepass
bulletManage a rota of 25 staff across two shifts
present tense is fine for a current role
tensepass
bulletManaged a rota of 25 staff across two shiftstensepass
summaryHard-working team player with a proven track record in retail.clichepass
summaryHighly motivated graduate looking for a role in finance.clichepass
summaryPassionate about great food and better service.clichepass
summaryRetail manager who took a struggling branch from bottom to top three in the region in 18 months.clichepass
summaryEXPERIENCED WAREHOUSE OPERATIVE WITH FORKLIFT LICENCE AND SIX YEARS IN DISTRIBUTION.capspass
summaryOperations lead with six years in warehousing. Ran two sites with 80 staff, cut late deliveries by 18% and moved stock control from paper to SAP without a lost order. Trained 30 supervisors and wrote the safety induction now used across the group. Looking for a regional role where planning and people both matter, ideally in food or pharmaceutical logistics, with a team that wants to measure what it does and keep improving it every quarter. Available from January, happy to relocate within the north of England for the right team.summary-longpass
datesJan 2022 – Present / Jun 2019 – Dec 2021date-format, date-unread, gappass
datesJan 2022 – Present / 06/2019 – 12/2021date-formatpass
datesJanuary 2022 – Present / Jun 2019 – Dec 2021
full and abbreviated month names
date-formatpass
dates2022-01 – Present / 2019-06 – 2021-12date-formatpass
datesJan 2022 – Present / Jun 2019 – Current
'Present' and 'Current'
date-formatpass
datesJan 2022 – Present / 2019 – 2021
months on one role, years on another
date-formatgappass
datesMay 2022 – Present / Jun 2019 – Dec 2021
'May' is both short and full
date-formatpass
datesJan2022 – Present / Jun 2019 – Dec 2021date-unreadpass
datesJan 2022 – Present / 2019 - 2021 –
a range typed into the start field
date-unreadpass
datesJan 2022 – Present / Jun 2019 – Mar 2018date-orderpass
datesJan 2022 – Present / Jun 2019 – Jan 2021
12-month gap
gappass
datesJan 2022 – Present / Jun 2019 – Aug 2021
4 months is not flagged
gappass
datesJan 2022 – Present / Jun 2019 – Jun 2021
6 months is not flagged
gappass
datesJan 2022 – Present / Mar 2018 – Dec 2023 / Jun 2015 – Feb 2018
overlapping roles
gappass
dates2022 – Present / 2019 – 2021
year-only dates: consecutive years are not a gap
gappass
datesJan 2022 – Present / Sept 2019 – Dec 2021
'Sept' is an abbreviation
date-formatpass
datesJan 2022 – Present / Summer 2019 – Dec 2021
season names are a separate format
date-formatpass
headingMy Journeyheadingpass
headingEmployment Historyheadingpass
headingProfessional Experienceheadingpass
headingSuperpowersheadingpass
headingSkills & Toolsheadingpass
headingPersonal Statementheadingpass
headingWhere I studiedheadingpass
headingVolunteeringheadingpass
headingThings I Loveheadingpass
headingPublicationsheadingpass
bullet• Cut picking time by 20%
a pasted bullet character
symbolpass
bulletCut picking time by 20% Q3 2021
a pasted table cell
symbolpass
bulletCut picking time by 20% in Q3 2021symbolpass
bullet-5% shrinkage after the new stock count process
a negative number is not a bullet symbol
symbolpass
bulletsCut late deliveries by 18% in six months. · Trained 14 new starters · Moved 3 sites to SAP · Ran 40 audits a year.punctuationpass
bulletsCut late deliveries by 18% in six months. · Trained 14 new starters. · Moved 3 sites to SAP. · Ran 40 audits a year.punctuationpass
cv{"settings": {"region": "us", "template": "continental", "photo": true}, "photo": true}photopass
cv{"settings": {"region": "eu", "template": "continental", "photo": true}, "photo": true}photopass
cv{"settings": {"region": "uk"}, "details": "Date of birth: 4 May 1990"}personalpass
cv{"settings": {"region": "eu", "template": "continental"}, "details": "Date of birth: 4 May 1990"}
expected in some European countries
personalpass
cv{"settings": {"region": "uk", "template": "sidebar"}}columnspass
cv{"settings": {"region": "uk", "template": "clarity"}}columnspass
cv{"settings": {"region": "us"}, "pages": 1.0}length, spillpass
cv{"settings": {"region": "us"}, "pages": 2.6}lengthpass
cv{"settings": {"region": "us"}, "pages": 1.9}
two pages with ~6 years: note
lengthpass
cv{"settings": {"region": "uk"}, "pages": 1.9}lengthpass
cv{"settings": {"region": "uk"}, "pages": 2.1}spillpass
cv{"settings": {"region": "uk"}, "pages": 3.4}lengthpass
cv{"settings": {"region": "uk", "template": "academic"}, "pages": 6.2}lengthpass
cv{"settings": {"region": "au"}, "pages": 2.8}lengthpass
cv{"contact": {"email": ""}}contactpass
cv{"contact": {"email": "sam.example.com"}}contactpass
cv{"contact": {"email": "sam@example.com", "phone": "07700 900123"}}contactpass
bulletGrew the team from scratch
'from scratch' implies no number is possible; the rule can't tell
no-numberpass
bulletMade coffee for the partners
weak, but not on the list: the rules only know listed phrases
weak-verbpass
summaryExperienced and dependable professional who always goes the extra mile.
'goes the extra mile' isn't in the cliché list
clicheknown limit

The 10 example CVs are also checked on every build and must have no issue-level findings.

How dates are read

You typeRead as
Mar 20212021, month 3 (format: mon)
March 20212021, month 3 (format: month)
Sept 20192019, month 9 (format: mon)
03/20212021, month 3 (format: mm/yyyy)
3/20212021, month 3 (format: m/yyyy)
2021-032021, month 3 (format: yyyy-mm)
03.20212021, month 3 (format: mm.yyyy)
20212021 (format: yyyy)
Summer 20192019, month 7 (format: season)
Presentongoing ("present")
Jan2021not readable: flagged
2019 - 2021not readable: flagged
13/2021not readable: flagged

Export tests

Text, Markdown and JSON

For each example CV, every build checks that: exporting to CV Once JSON and importing it again gives an identical CV; every bullet appears in the plain-text export, in the same order as on the page; every bullet appears in the Markdown export; and a round trip through the JSON Resume format keeps the contact details, summary and every bullet.

ExampleJSON round tripPlain textMarkdownJSON Resume
Accountantpasspasspasspass
Career changer (teacher to UX)passpasspasspass
Data analystpasspasspasspass
Graduate engineerpasspasspasspass
Marketing managerpasspasspasspass
Primary teacherpasspasspasspass
Project managerpasspasspasspass
Registered nursepasspasspasspass
Retail store managerpasspasspasspass
Software engineerpasspasspasspass

JSON Resume has no place for some CV Once fields (section titles, hidden entries, template and colour settings, the photo), so use CV Once's own JSON for backups.

PDF: every template on A4 and Letter

Method: each example CV is opened in the builder in headless Chrome (Chrome/124.0.6367.78), switched to each template and paper size, and printed with the same print stylesheet you get when you choose "Save as PDF". Each PDF is then checked with poppler's pdfinfo and pdftotext:

Reading order is judged block by block: the header and each section must come out of the PDF in order and in one piece, and blocks may not interleave on a page, which is what happens when a parser mixes two columns or lifts a right-aligned date away from its job. A two-column CV that runs onto a second page is read page by page, so a section that breaks across pages may have the side column between its two parts.

Run 2026-10-26: 160 of 160 PDFs pass all four checks (10 CVs × 8 templates × 2 paper sizes).

TemplatePaperPDFsText foundIn orderOff pagePages (range)
ClarityA410100.0%10 of 10none1–2
ClarityLetter10100.0%10 of 10none1–2
LedgerA410100.0%10 of 10none1–2
LedgerLetter10100.0%10 of 10none1–2
MeridianA410100.0%10 of 10none1–2
MeridianLetter10100.0%10 of 10none1–2
CompactA410100.0%10 of 10none1
CompactLetter10100.0%10 of 10none1
SidebarA410100.0%10 of 10none1–2
SidebarLetter10100.0%10 of 10none1–2
SplitA410100.0%10 of 10none1–2
SplitLetter10100.0%10 of 10none1–2
ContinentalA410100.0%10 of 10none2
ContinentalLetter10100.0%10 of 10none2
AcademicA410100.0%10 of 10none1–2
AcademicLetter10100.0%10 of 10none1–2

Negative controls. To show the test can fail, every run also prints deliberately broken versions of one CV, which must be caught: bullets displayed in reverse order (caught), lines that refuse to wrap and run off the page (caught), dates right-aligned on the title line, an earlier CV Once design (caught). The last one is why the templates now keep dates next to the role: in our first tests, pdftotext read some right-aligned dates as a separate column and printed them after the next section.

Fonts: templates use the fonts on your device (Helvetica or Arial for sans-serif, Charter or Georgia for serif, with open-source fallbacks). The test machine used FreeSans and FreeSerif, so page counts on your device may differ slightly; the builder measures the page count in your own browser.

Known limits

Sources and licences

Everything on CV Once is original: the templates, the check rules and word lists, the guides, the example CVs and the illustrations. The example CVs describe fictional people; their employers, schools and numbers are invented. Statements about national conventions are written from general knowledge of hiring practice and marked as conventions, which vary by employer and sector. Named laws (the UK Equality Act 2010, US Title VII, the ADEA and ADA, the EU GDPR) are referred to only in general terms; nothing here is legal advice.

The JSON Resume import and export follow the open JSON Resume schema (MIT licence). Language levels refer to the Council of Europe's Common European Framework of Reference for Languages (CEFR). The site uses no third-party data, scripts, fonts or images.