Greenhouse Resume Parsing Mechanics
How Greenhouse ingests PDF streams, builds structured JSON candidate models, and surfaces candidate skill profiles to hiring teams.
1. Ingestion Pipeline & Section Delimiter DFA
Greenhouse processes inbound resumes through third-party parsing partners (such as Textkernel and Sovren) coupled with its native Harvest API ingestion schema. The document stream passes through an initial text normalization step that resolves character encodings before applying deterministic finite automata (DFA) to isolate sections.
+-----------------------------------------------------------------------------------+
| GREENHOUSE INGESTION ARCHITECTURE |
+-----------------------------------------------------------------------------------+
| Multi-Format Payload (PDF / DOCX Stream) |
| | |
| v |
| Text Extraction & Linear Tokenization (UTF-8 Unicoding) |
| | |
| v |
| Section Delimiter State Machine (Regex Boundary Detection) |
| | |
| v |
| Named Entity Extraction & Role Object Instantiation |
| | |
| v |
| Greenhouse JSON Candidate Model (API Payload & Reviewer View) |
+-----------------------------------------------------------------------------------+1.1 Regex Boundary Detection & Section Slicing
The parser relies on standard header regex expressions to partition the text stream into discrete object arrays:
When candidates use creative headings (such as "Core Milestones"), the DFA fails to transition states, appending employment text to previous sections or discarding it entirely.
Zero metric hallucination. 100% mathematical token alignment for senior technical & executive hiring.
2. The Greenhouse JSON Candidate Object Model
Parsed resume data is serialized directly into structured JSON entities compatible with the Greenhouse Harvest API:
{
"first_name": "Alex",
"last_name": "Vance",
"email_addresses": [{"value": "alex@example.com", "type": "personal"}],
"phone_numbers": [{"value": "555-0192", "type": "mobile"}],
"employments": [
{
"company_name": "Datastream Systems",
"title": "Principal Distributed Systems Engineer",
"start_date": "2021-04-01",
"end_date": null,
"summary": "Architected low-latency ingestion engine handling 80,000 req/sec."
}
],
"skills": ["Distributed Systems", "Go", "Kubernetes", "gRPC", "Apache Kafka"]
}Recruiters review candidates through auto-generated candidate summary cards populated from these JSON nodes. Missing or corrupted fields in the JSON payload force recruiters to manually open the raw attachment, adding friction to the review cycle.
3. Common Greenhouse Parsing Failure Modes
+--------------------------+--------------------------------------------------------+
| Parsing Hazard | Root Cause & Greenhouse Failure Mode |
+--------------------------+--------------------------------------------------------+
| Multi-Column Splitting | Linear stream merges column headers into company names |
| Missing Start Months | Parser defaults start_date to null or invalid ISO 8601 |
| Header Icon Encoding | Font icon glyphs inserted as corrupt UTF-8 tokens |
| Graphic PDF Canvas | Vector shapes obscure text layer; empty candidate card |
+--------------------------+--------------------------------------------------------+3.1 Font Icon Corruptions in Contact Headers
Resumes that place phone, email, and location icons using custom icon fonts (such as FontAwesome) inject private-use Unicode points into the text stream. When the parser reads the character stream, it encounters invalid glyph tokens, frequently corrupting telephone numbers and email addresses.
Audit your resume for Greenhouse JSON serialization
Validate your document structure against Greenhouse section DFA regex patterns and single-column coordinate standards in the Axiom Workstation.