Skip to content
Writing
Web6 min read

What the parser sees

A résumé that looks perfect on screen can lose its entire education section when a machine reads it. The same is true of your website.

We pulled a well-formatted PDF résumé through the same text extraction an applicant tracking system uses. On screen it was clean: dates on the left, institutions on the right, everything aligned. Extracted, it came out like this:

1997 - 2001 1993 - 1997 1986 - 1990
High Point University  United States Navy  High Point Central High School

Every date severed from its institution. A machine reading that document cannot tell you where this person went to school or when. The visual alignment that made it readable to a human was a layout artifact with no semantic meaning attached.

Layout is not structure

The same document exported to an older word processor format parsed correctly, because that format preserved the table relationship the PDF had flattened. Two files, generated from the same source, disagreeing about the person's own history.

The skills section had the same problem — a three-column table, read column-wise rather than row-wise, turning a tidy grid into a scrambled list. And every bullet point extracted as a replacement character, because the bullets were glyphs from a symbol font rather than an actual list.

This is your website too

Search crawlers, screen readers, AI assistants, and link previews all read your pages the way that extractor read the résumé — as structure, not as picture. When a heading is a styled div instead of an h1, when a data table is a grid of positioned boxes, when meaningful text lives inside an image, the machine sees something different from what you designed.

You can check in about a minute. Strip the tags from your own page and read what remains:

curl -sL https://yoursite.com/ \
  | python3 -c "import sys,re,html;h=sys.stdin.read();\
h=re.sub(r'(?is)<(script|style)[^>]*>.*?</\\1>',' ',h);\
print(html.unescape(re.sub(r'(?s)<[^>]+>',' ',h)))"

What comes back is roughly what a crawler has to work with. If the result reads as a coherent document, you're fine. If your headline is missing, your navigation is a wall of undifferentiated words, or your key information simply isn't there, that's what search engines have been indexing.

The fixes are unglamorous

  • Use real semantic elements — headings, lists, tables — rather than styled containers that only look like them.
  • Keep meaningful text as text. An image of a phrase is invisible to everything that isn't a person looking at a screen.
  • Prefer single-column layouts for anything a machine needs to read in order.
  • Test the output, not the appearance. The rendered page is the design; the extracted text is the content.

None of this is about aesthetics. A page can be beautiful and still be illegible to the systems that decide whether anyone finds it.

We build this kind of thing for a living.

Start a conversation