How to Build an Automated CV Processing Pipeline with PdfParse

Automate CV intake with PdfParse: forward PDF attachments, route CVs and writing samples into tables, and review candidate records to build your shortlist.

PdfParse TeamUpdated Sep 11, 2026
Application PDFs move from a company mailbox into PdfParse for routing and extraction, then a recruiter reviews the records and decides whom to contact.
PdfParse receives, routes, and extracts the PDFs. The recruiter checks the job requirements and builds the shortlist.

You publish a job opening and ask candidates to email their CVs. Before long, your inbox is filled with applications. Many do not match the job description, and some are generated and submitted using AI tools. Finding suitable candidates means reviewing each application manually, so you start looking for a way to automate the repetitive work.

An automated CV processing pipeline gives you a consistent place to start that review. Incoming CVs and supporting PDFs are sent to the appropriate tables, where PdfParse extracts the information you want to keep. Your team can then check those records against the job description and decide which candidates to contact.

This tutorial walks through building that pipeline with PdfParse, without needing to be a software developer. You'll use managed inboxes to receive PDF attachments, routing rules to direct each document to its table, and relational tables to keep a CV's employment entries connected to the candidate record. We'll go from the first forwarded application to records you can use in your recruiting review.

1. Start with the job description

Let's start with the role we're hiring for. Our fictional company, Meridian Software, needs a Technical Support Engineer who can handle customer tickets, investigate API problems, and write clear troubleshooting instructions. The role covers the 14:00–22:00 UTC support shift, Monday through Friday.

We ask candidates to send their CV, a short troubleshooting writing sample, and an introductory email to help@meridiansoftware.example.com. They should include the job reference, SUPPORT-2026-09, in the subject line and confirm their availability in the message.

That gives us a straightforward set of requirements to screen against:

RequirementWhat we're looking for
Customer ticket supportExperience investigating and resolving customer tickets
API troubleshootingExamples involving requests, responses, logs, or reproduction steps
Written guidanceA troubleshooting sample that a customer could follow
Advertised shiftExplicit confirmation of availability for the published hours

For this example, the recruiter checks all four requirements before adding a candidate to the outreach shortlist. If something needs clarification, they record the question in their recruiting tracker and follow up with the applicant.

Before setting anything up, read the job description alongside this list. The criteria should reflect the work the person will do, and each one should be clear enough for another recruiter to apply consistently.

The company and email address are synthetic. Use your own application mailbox when following the setup.

Keep the original application email in that mailbox. PdfParse processes the attached PDFs; the recruiter reads the message there to check availability and any follow-up answers.

2. Prepare the project tables

We'll use a project called Meridian Software hiring. If you haven't created yours yet, follow the project setup guide to create the project and define the fields you want to extract from a sample CV.

You'll also need an active subscription with available page tokens and storage to receive emails through a PdfParse inbox.

For this walkthrough, use applications for the candidate's name, contact email, current title, and professional summary. Keep employment entries in a related work_experience table, and use application_documents for the writing sample's candidate name, title, and summary.

We'll use Alex Morgan's sample CV and troubleshooting guide as our example. Both PDFs contain synthetic data. Check that each document type has a destination before creating the inbox.

Application table with candidate name, candidate email, current title, professional summary, and a related work experience table.
Keep the candidate's main details in applications and repeating employment entries in work_experience.

3. Create the inbox and allow the forwarding sender

With the tables in place, we can create an inbox for the role. Candidates will send applications to our company mailbox, and we'll forward those messages to the address PdfParse generates.

  1. Open the project's Inboxes page and select Create inbox.
  2. Set Inbox name to Technical Support Engineer applications.
  3. Under Sender access, select Email address and enter help@meridiansoftware.example.com, the mailbox we're forwarding from in this example.
  4. Select Add sender and check that the address appears in the allowed-sender list.
  5. Under Document routing, choose Use project classifiers.
  6. Select Create inbox, then copy the generated address for the forwarding setup.
Hiring inbox configuration with the forwarding mailbox in the allowed-sender list and Use project classifiers selected.
Add the forwarding mailbox to Sender access, then use project classifiers to route each attached PDF.

Pay attention to the allowed-sender list. PdfParse rejects mail from senders that aren't allowed, and an empty list blocks all senders. Entering the address in the field isn't enough: use Add sender before creating the inbox.

Forwarding methods can change the delivery sender that PdfParse checks. Our example assumes it is the company mailbox; verify that with the first forwarded message. If the message is rejected, inspect the delivery result and the actual sender before changing the list.

The result should be a named inbox with the forwarding sender allowed and project classifiers selected. We'll set up those classifiers next, before sending the test application.

4. Tell PdfParse where each document belongs

An application can contain more than one kind of PDF. We want the CV to populate applications and its employment rows, while the writing sample goes to application_documents.

Open the project's Routing rules page and create a rule for each destination. In the rule editor:

  1. Give the rule a descriptive name.
  2. Choose the destination table.
  3. Describe the documents the classifier should match.
  4. Enable automatic routing, review the minimum confidence, and save the rule.

Use these matching descriptions as a starting point:

RuleDestinationMatching documents
Candidate CVsapplicationsCVs or resumes describing an applicant's professional history, job titles, employers, and responsibilities.
Troubleshooting writing samplesapplication_documentsTroubleshooting guides submitted as writing samples, with instructions for investigating or resolving a technical problem.
Candidate CV rule matching professional history and routing documents to applications with a minimum confidence of 70 percent.
Troubleshooting writing sample rule routing technical guides to application_documents with a minimum confidence of 70 percent.
Route CVs to applications: Describe a CV by its contents: professional history, job titles, employers, and responsibilities.

The confidence setting controls when PdfParse accepts a document's destination automatically. Candidate suitability is the recruiter's decision, made after the records are extracted.

For the first test, keep the default threshold of 70% and inspect the routing results. If a document is sent to the wrong table, make the matching description more specific before processing more applications. If the destination is uncertain, open Human review, compare the suggestion with the PDF, and select the correct table. The routing review guide covers that decision in detail.

5. Follow the first application through the inbox

Now an application arrives. Alex Morgan emails help@meridiansoftware.example.com with the subject SUPPORT-2026-09 — Alex Morgan. The message includes a two-page CV, a one-page troubleshooting guide, and confirmation of availability for the advertised shift.

To try the example, attach both sample PDFs to a message in your allowed company mailbox. Use SUPPORT-2026-09 — Alex Morgan as the subject and include Alex's availability: “I can cover the advertised 14:00–22:00 UTC support shift, Monday through Friday.” Forward the message to the generated PdfParse address, then open the inbox's Documents tab.

  1. Confirm that the message was accepted.
  2. Check that both PDFs appear, rather than just the CV.
  3. Follow each PDF into its document record and check the routing destination.
  4. Once extraction finishes, open the destination tables and compare the rows with the original PDFs.

Use the received message to find the two attachments. Check the candidate details against the original email before treating separate document records as one person's application.

For Alex's CV, the expected applications record is:

Candidate nameCandidate emailCurrent title
Alex Morganalex.morgan@example.comTechnical Support Specialist

The related employment row should identify Example Systems, January 2024 through August 2026, and the responsibilities listed on page two. The writing-sample record should describe the guide to investigating an API authentication failure.

Use these sample values to check the extraction. Confirm that the contact email belongs to Alex and that the employment history agrees with page two of the CV.

If the email is absent, check the copied address, allowed sender, and whether the inbox is paused. If the message arrived but a PDF failed, inspect that document's error before resending the application. A message arriving successfully doesn't mean every attachment has finished processing.

6. Review the records and build your shortlist

Now we have the candidate details, employment entries, and writing sample in their tables. This is where the recruiter returns to the job criteria and decides what to do next.

Keep that decision in your usual recruiting tracker, such as a spreadsheet or applicant tracking system. For each application:

  1. Check the extracted details against the complete CV and writing sample.
  2. Read the original email in the company mailbox for availability and other answers.
  3. Record a short note for each requirement, including the source or page that supports it.
  4. Add suitable candidates to the outreach shortlist and record any questions that need follow-up.

For Alex, a recruiter reviewing the sample documents would record:

RequirementResultSupporting source
Customer ticket supportEvidence foundCV, page 2
API troubleshootingEvidence foundCV, page 2; writing sample, page 1
Written guidanceEvidence foundWriting sample, page 1
Advertised shiftEvidence foundApplication email

The documents and email provide evidence for all four requirements, so the recruiter can add Alex to the outreach shortlist after checking the contact details.

If the availability statement is missing, they can instead record “Confirm availability for the advertised shift” and ask Alex for clarification. That is a recruiting follow-up. PdfParse's Human review is where your team handles uncertain document routes and failed extractions.

7. Test the pipeline before forwarding every application

Before turning on recurring forwarding, run a few variations of the same application. We want to check that the PDFs reach the correct tables and that any processing issue is visible.

TestExpected result
Forward the sample CV and writing guide togetherBoth PDFs arrive and populate their intended tables
Check the experience on CV page twoThe employment row agrees with the source page
Send a PDF that does not clearly match either ruleAn uncertain or unmatched route is available in Human review
Forward an application without its writing sampleThe CV can still process; the recruiter identifies the missing sample during review
Resend a test messageCheck the message and document records before deciding whether anything needs resending

For each test, follow the same path: received message, accepted attachments, routing decision, and extracted rows. Compare those rows with the PDFs and resolve any errors before increasing the volume.

A fresh email containing the same CV can create another submission. Check the candidate and original message in your recruiting tracker before contacting someone twice.

Once those checks pass, create a narrow forwarding rule in your email provider for this role's applications. Send another test through that rule to confirm that it preserves the attachments and uses the sender your PdfParse inbox allows.

If unexpected documents start arriving, use Pause while you adjust the setup. Paused inboxes reject new deliveries, so check the sender's delivery result before resending. If an inbox pauses because page tokens or storage have run out, resolve the account limit and check its status before retrying.

Start with one role and two PDFs

We started with a job description and an email address. We now have an intake pipeline that receives application PDFs, routes each document to its table, and extracts records for the recruiter to review. CV details and employment entries are organized consistently, while processing exceptions have a place in Human review.

Run Alex's two sample PDFs through your inbox before enabling automatic forwarding. Check the destinations, compare the extracted rows with the documents, and use the original email to complete the recruiting review. Once those checks pass, the same setup can handle the next batch of applications.

For more detail on the intake setup, see Introducing Email Inboxes and the email PDF parser overview. For parent and child records, follow How to Extract PDF Data into SQL Tables.