From Candidate Email to Hiring Board in Seconds, Powered by n8n

Blog

How we eliminated manual data entry between the careers inbox and the Jira hiring board.

The problem: Candidate emails that go nowhere fast

In a competitive market, the gap between receiving a candidate's email and actually reviewing their application can make or break a hire. Candidates send applications by email, often with a cover letter in the body and a CV attached. On the receiving end, someone on the team has to read the email, figure out what role the person is applying for, pull out their name and contact details, create a card on the hiring board, and upload the attachments all before anyone can actually evaluate the candidate.

It sounds minor per email. But across dozens of applications per week, the overhead adds up in ways that matter:

  • Slow intake - every application sits in the inbox until someone has time to process it. During busy periods, that could be days.
  • Manual extraction - reading each email for the candidate's name, email address, target role, and application date, then retyping those values into Jira. It is repetitive work that invites typos and omissions.
  • Attachments that need chasing - CVs and cover letters arrive as email attachments. Someone has to download each one and upload it to the correct card. Files get lost, attached to the wrong candidate, or simply forgotten.
  • No structured record until someone makes one - until the card is manually created, the candidate only exists as an unread email. There is no visibility, no status tracking, and no way for the hiring team to act.

We wanted applications to arrive on the hiring board ready for review structured, complete, and with all attachments in place the moment the email lands.

What we built

The system sits between the careers inbox and the Jira hiring board. When a candidate email arrives, it uses AI to extract the relevant details, creates a structured issue on the board, and attaches all submitted documents without anyone touching the email

From the candidate's perspective, nothing changes: they send an email to the careers address. From the hiring team's perspective, everything changes: by the time they look at the board, the candidate is already there name, role, application date, email body, and every attachment filed in the right place.

Image 1 — The hiring request routing pipelineImage 1 - The hiring request routing pipeline

It covers the full intake chain:

1. Validates and extracts candidate information using AI

When an email arrives at the careers address, the pipeline first confirms it was sent to the correct recipient filtering out anything that does not belong. For valid emails, it extracts the message body, handling both direct emails and forwarded threads.

An AI model then reads the email content and extracts four key fields:

Extracted FieldWhat It Captures
Candidate NameThe applicant's full name as stated in the email
Candidate EmailTheir contact email address
Job RoleThe position they are applying for
Application DateWhen the application was submitted

The extraction follows strict rules: if a field is missing or ambiguous, it returns empty rather than guessing. No invented data enters the hiring board.

2. Creates a structured issue on the Jira hiring board

With the extracted data in hand, the system creates a new issue on the HR Hiring Board in Jira. The candidate's name becomes the issue summary. The full email body becomes the description preserving the original message exactly as the candidate wrote it. The extracted fields (email address, job role, application date) are populated into their respective custom fields.

The result is a fully formed Jira card that the hiring team can immediately triage, assign, and move through their workflow without having created it themselves.

3. Downloads and attaches all submitted documents

Candidates typically attach CVs, cover letters, portfolios, or certificates. The system fetches every attachment from the original email, downloads each file, and uploads them directly to the corresponding Jira issue.

This means the hiring team sees the candidate's card with all documents already attached. No one downloads a file from an email, renames it, and uploads it somewhere else. The original documents travel with the candidate record from the moment the email arrives.

Behind the scenes

The entire pipeline runs as a 14-node workflow in n8n compact by design, since the task is focused and the data flow is linear.

Email reception - A Resend webhook triggers the pipeline when any email arrives at the careers address. The system extracts the email ID from the webhook payload and fetches the full message subject, body, metadata, and attachment references.

Recipient validation - The pipeline verifies the email was actually sent to the careers address. Messages that do not match are discarded without processing, keeping the pipeline focused on genuine applications.

Content extraction - The email body is extracted with handling for forwarded messages. When a candidate's email has been forwarded by a recruiter or referral, the system isolates the original message content from the forwarding chain.

AI-powered data extraction - The email content is sent to an AI model with a structured extraction prompt. The model returns four fields candidate name, email, job role, and application date in a machine-readable format. Missing fields return as empty strings rather than fabricated values.

Jira issue creation - A new issue is created on the HR Hiring Board with the extracted fields mapped to the appropriate Jira fields. The full email body is preserved as the issue description.

Attachment processing - The pipeline fetches all attachments from the original email, loops through each one, downloads the file, and uploads it to the newly created Jira issue. Each attachment is linked to the correct candidate card automatically.

What changed

Every candidate email sent to the careers address now becomes a Jira card automatically and has since the system went live.

Before: Someone on the team checks the careers inbox, reads each email, manually creates a Jira card, types in the candidate details, downloads attachments from the email, and uploads them to the card. Applications sit unprocessed during weekends, holidays, or busy periods. Attachments occasionally end up on the wrong card. Some emails get overlooked entirely.

After: Every email to the careers address becomes a fully populated Jira card within seconds candidate name, role, application date, email body, and all attachments in place. The hiring team opens their board and sees candidates ready for review, regardless of when the email arrived.

The practical difference:

  • Intake became instant - candidates appear on the hiring board the moment their email arrives, not when someone gets around to processing it.
  • Data entry errors disappeared - AI extraction removes the transcription step entirely. Names, emails, and roles are pulled directly from the source.
  • Attachments always travel with the candidate - every CV and cover letter is automatically attached to the correct Jira issue. No downloads, no uploads, no misfiled documents.
  • The inbox stopped being a bottleneck - the careers address is now a pipeline entry point, not a queue that depends on someone's availability to clear it.

What comes next

The current system covers the core intake workflow. Several extensions would deepen its usefulness:

  • AI-powered candidate screening - analyzing CV content to flag candidates who meet specific technical requirements or experience thresholds before the hiring team even opens the card.
  • Role-based routing - automatically assigning candidates to different board columns or team members based on the role they applied for.
  • Application acknowledgment - sending an automated confirmation email to the candidate when their application has been received and processed.
  • Analytics dashboard - tracking application volume by role, source, and time period to give the hiring team visibility into recruitment pipeline health.

The bottom line

Hiring is one of those domains where small delays compound. An application that sits unprocessed for two days is not just two days late it is two days of a candidate wondering if anyone received their email, two days where the hiring team cannot act, and two days where a competitor might make an offer first.

The Hiring Request Routing & Classification System eliminates that lag by removing the manual step between receiving an application and having it ready for review. The candidate sends an email; the hiring board gets a complete, structured card. Everything in between is automated.