Job Titles, Dates, and the Fields Parsers Look For

Once a parser has extracted your text and split it into sections, it has to fill in fields. Not “read your resume” in any meaningful sense — fill in fields. Most of the structured record it builds comes down to a handful of values repeated for each job: employer, title, start date, end date, and the description underneath.

Understanding how those four get identified explains a whole category of weird outcomes — the job that shows up with the wrong dates, the promotion that disappears, the freelance stretch that reads as unemployment.

Dates are the anchor

Of the four fields, dates are the easiest for software to spot, because dates look like dates. 2021, Jan 2021, 01/2021, January 2021, 2021-01 — all recognisable by pattern.

Because they’re the most reliable signal, dates often become the anchor for everything else. The parser finds a date range, decides “a job lives here,” and then looks nearby for the title and employer. Which means: if your dates are in the wrong place, everything attached to them moves too.

Rules that follow from this:

  • Keep the date range physically close to its job. Same line as the title, or the line immediately below. Not in a left-hand column. Not in a table cell. Not at the end of the bullet list.
  • Be consistent. Use one date format throughout. Mixing Jan 2021 – Mar 2024 with 2019-2021 invites the parser to treat them differently.
  • Include months where you can. 2021 – 2024 could mean three years or thirteen months. Systems that compute years of experience will guess, and their guess may not favour you.
  • Use a plain dash. An en dash or hyphen with spaces is fine. Avoid a “to” written as a graphic, and avoid separators like ».
  • Say “Present” for current roles. It’s near-universally recognised. Current and Now usually work too; a blank end date does not.

Titles and employers: position and phrasing

There’s no pattern that says “this is a job title” the way there is for a date, so parsers lean on convention and position. The single most reliable arrangement is one line containing the title and the employer, with a clear separator:

Senior Data Analyst — Northwind Logistics Jan 2021 – Mar 2024 · Manchester, UK

Notes on why this works:

  • Title first is the more common convention and the one most heuristics expect.
  • A visible separator (em dash, pipe, comma) tells the splitter where one value ends and the next begins.
  • Location on the date line keeps it out of the way. Location is a low-value field for matching in most searches; don’t let it crowd the title line.

Things that make it harder:

  • Title and employer on separate lines with nothing between them. Workable, but the parser has to guess which is which. If you do this, keep it identical for every job so at least it guesses consistently.
  • Company name in a heading style and title in body text. Visually clear, but the extraction stream loses the styling, so it becomes two bare lines.
  • Decorative separators. A bullet glyph, a diamond, a small logo. Stick to characters that survive extraction as characters.
  • Inflated titles. If your business card said “Growth Ninja,” write Marketing Manager (internal title: Growth Ninja) or just the standard equivalent. This isn’t only a parsing point — recruiters search for the standard title, so an unusual one makes you invisible to the search. Use the real, recognisable name for the work you did.

The promotion problem

You joined as an Analyst, were promoted to Senior Analyst, then to Team Lead, all at the same company. The elegant way to show that is one company block with three sub-entries:

Northwind Logistics — 2018 – 2024 Team Lead, 2022 – 2024 Senior Analyst, 2020 – 2022 Analyst, 2018 – 2020

A human reads that instantly and thinks “steady progression, good sign.” A parser may read it as one job with an overall date range and three stray lines, or as three jobs with no employer attached, depending on how it handles nesting.

If you want the progression to survive, the safest structure repeats the employer:

Team Lead — Northwind Logistics · 2022 – 2024 Senior Analyst — Northwind Logistics · 2020 – 2022 Analyst — Northwind Logistics · 2018 – 2020

It’s slightly more repetitive to read. It parses correctly every time, and it still shows the progression to the human. If you strongly prefer the nested version, at minimum put a full date range on every sub-entry so no role ends up dateless.

Freelance, contract, and gaps

Periods that aren’t a conventional job are where records get confusing. Some patterns that hold up:

  • Freelancing: treat it as a job. Freelance Data Analyst — Self-employed, with a date range and a few bullets naming the kind of work and, where you’re allowed to, the sectors. An empty stretch on a timeline reads as unexplained; a named self-employment does not.
  • Contract roles: name the end client and mark the arrangement. Data Analyst (contract) — Northwind Logistics via Acme Staffing. Several short contracts in a row look like job-hopping if the word “contract” isn’t there.
  • Career breaks: if you want the time accounted for, an entry with a plain title like Career break — full-time caregiving and a date range does the job. Whether to include one is a personal call; from a parsing point of view it simply prevents an unexplained hole.

The related question of how to talk about a gap or a pivot is a different subject, and it belongs to a different site. Here the point is narrow: a labelled, dated block parses; a silent hole doesn’t parse into anything at all.

Skills: the field everyone overthinks

Skills are matched against a vocabulary of known terms. There is no magic here, only two practical implications.

Write the term the industry uses. If the posting says “PostgreSQL,” write PostgreSQL, not “Postgres DB experience.” Both are true; only one matches cleanly. Where you genuinely use both names, writing PostgreSQL (Postgres) once is reasonable.

Put skills where they’re findable — twice, honestly. A short skills list is useful as a summary block, and the same skills should also appear inside the bullets that describe the work where you used them. That’s not stuffing; that’s context. Rebuilt the monthly reporting pipeline in Python and SQL, cutting a two-day manual process to an overnight job tells the human what you did and the machine which terms apply.

What is stuffing, and what we don’t recommend: pasting a hundred technologies you’ve touched once, listing skills you don’t have because the posting mentioned them, or repeating a term to raise its count. The extracted text is often what the recruiter reads. Padding is obvious in it, and it costs you with the person who decides.

The quick audit

For each job on your resume, ask four questions:

  1. Is there a date range within one line of the title?
  2. Is the employer name on the same line as the title, or immediately adjacent, with a separator?
  3. Is the title one a recruiter would actually search for?
  4. If I read only the extracted plain text, could I still tell which bullets belong to which job?

If all four are yes for every entry, your work history will survive the trip. Run the extraction test to check the fourth one properly — it’s the one that looks fine on screen and fails in the stream.