Skip to main content
ATS Free For All
Sign in
Back to blog
Available in:

The Two-Column Chaos: Algorithmic Collision of Lines

By Umut Barış Terzioğlu · · Updated

A two-column CV looks tidy: skills, languages and contact details in a narrow sidebar, experience in the wide column next to it. A person reads the two columns separately without thinking about it. Many text extractors do not. They rebuild the page line by line, and a line runs straight across both columns.

This is the second part of a series on how parsers read CV files. The first part on ATS text extraction explains what the extracted text is; this one looks at what columns do to it.

Why columns get merged

A PDF stores text as fragments with coordinates. To turn them into lines, a common approach is to group fragments that share the same vertical position and read them left to right. Some extractors try to detect columns first and read each one separately, and some of them get it right. You do not know which approach the employer's system uses, and the same file can come out differently in two systems.

When the merge happens, a sidebar entry and an experience entry that sit at the same height become one line. The parser then has to find a job title, an employer and dates in a line that also contains a skill or a language.

A worked example

On the page, the left sidebar holds a "Skills" heading and three tools, and the right column holds one role under "Experience". Line-by-line extraction can turn it into this:


SKILLS          EXPERIENCE
Python          Data Analyst, Northwind Logistics
SQL             03/2021 – present
Tableau         Built weekly sales dashboards for 12 regional teams

Read line by line, the parser may see:

  • "Python Data Analyst, Northwind Logistics" as the title line, so the job title becomes "Python Data Analyst".
  • "SQL 03/2021 – present" as a date line with an unexplained word in front.
  • "SKILLS EXPERIENCE" as a single line, so neither heading stands on its own and the experience section may not be recognised.

The same content in one column leaves nothing to guess:


EXPERIENCE
Data Analyst, Northwind Logistics
03/2021 – present
- Built weekly sales dashboards for 12 regional teams

SKILLS
Python, SQL, Tableau

Tables and templates behave the same way

A table used for layout is a column layout under another name. A common case in Europe is the Europass template, which puts a label cell to the left of every entry. Parsers that read across the row can weld the label onto the answer, which is why our checker flags Europass layouts. Text boxes placed side by side carry the same risk.

How to check and fix your layout

  1. Copy all text from your PDF and paste it into a plain text editor. If lines from the sidebar and the main column alternate or share a line, a parser can see the same thing.
  2. Paste that text into the quick test. Lines with wide gaps in the middle are the usual trace of side-by-side columns, and the test reports them as a parseability finding.
  3. Rebuild the CV in a single column. Move the sidebar content into ordinary sections: contact details at the top, skills and languages as their own sections further down.
  4. Keep each role together: title, employer and dates on adjacent lines, followed by its bullets.
  5. Create visual structure with spacing, bold headings and a thin rule instead of columns.

In the full analysis, the parser view shows every experience entry with the position, company and date range the parser found, and gives a readable cause for suspect fields, for example a date range that looks split across two columns. If you would rather start from a layout that has already been through the parser, the CV builder checks every export with the same parser and shows you the result.

Does a two-column layout ever work?

Some systems read simple two-column layouts correctly, and a person will see your PDF exactly as you designed it. The problem is that you cannot tell in advance which system you are dealing with, and a merge hits the most important lines: titles and dates. A single column removes that risk without losing any content.