DEV Community

Cover image for 6 Job Applications Used to Consume My Day. Here's the AI Pipeline I Built to Fix That.
Azeez Roheem
Azeez Roheem

Posted on

6 Job Applications Used to Consume My Day. Here's the AI Pipeline I Built to Fix That.

The Problem

Applying for 6 roles used to consume my day. Refining my CV,
checking for matching words, reordering bullet points — then the
awkward silence. My friends voiced the same frustration. We weren't
bad candidates. The process was just killing our output.

The actual culprit is ATS software — the stern gatekeeper that blocks
resumes from reaching the hiring manager. It filters applications when
keywords don't match the job description closely enough.

I built a pipeline to fix that. Here's how it works.

How the Prompt Chain Works

Step 1 — PDF to Text
Most resumes arrive as PDFs — but PDFs don't store text cleanly.
The pipeline extracts raw text, removes blank lines, trims whitespace,
and separates it into named sections like Experience, Education and Skills.

Step 2 — AI Structuring
Raw sections are not organised. OpenAI reorganises them into clean JSON.
This fixes column ordering issues and joins split lines. When the
candidate's name ends up in the wrong section, OpenAI pulls it out
and places it correctly.

Step 3 — Job Match Analysis
The structured resume is compared against the job description.
The AI returns a match score, matched skills, and missing skills.

Step 4 — Bullet Rewriting
Each bullet is scored on three criteria: action verb, skill, and outcome.
Weak bullets are rewritten to incorporate missing keywords naturally.
A second AI call validates whether the rewrite is truthful before accepting it.

Step 5 — Before/After Measurement
The original and tailored resumes are both scored against the job description.
The difference tells you exactly how much the pipeline improved the match.

Before and After

Example 1:

Before: "Applied agile methodologies like SCRUM for project management"

This is an example of what an ATS scanning for React or Node.js will
just ignore. It has the right idea but stops short — right methodology,
but without context. What are you building? What did SCRUM help you ship?

After: "Implemented Agile/SCRUM methodology to accelerate delivery
across full-stack projects using React and Node.js"

An ATS scanning for React or Node.js will now pick this up. It shows
the tech stack, shows ownership, and connects the methodology to real work.

Example 2:

Before: "Automated invoicing systems reducing admin time by up to 60%"

This already mentions a strong outcome — 60%, an actual figure worth
retaining. But it doesn't mention any tool, so an ATS looking for
Node.js or MongoDB sees nothing.

After: "Automated invoicing systems using Node.js and MongoDB,
reducing admin time by up to 60% for SaaS clients"

Same outcome, same honesty — but now it's visible to ATS systems
scanning for the right keywords.

What I'd Do Differently

The 0 Delta Surprise
When I measured before and after, the score didn't move. My initial
reaction was that something was wrong. However, nothing was wrong.
This is the correct behaviour when a resume already matches the role.
I discovered the pipeline is most valuable for resumes with match
scores of 40-70. High-scoring resumes (80+) need new experience,
not rewriting. Low-scoring resumes (under 40) need a different role target.

The Force-Fitting Problem
The AI kept importing keywords that didn't belong — prompt engineering
appearing in a PDF pipeline bullet, MongoDB showing up in a SCRUM bullet.
The fix is not instructing the AI not to hallucinate. It is passing only
keywords that are truly missing and relevant to that specific bullet's
context. A smarter pre-filter before the rewrite call would have solved this.

What's Next
The output at the end of Week 2 was JSON — which a developer would
understand, but a job applicant needs a document they can forward to
recruiters. In Week 3, that JSON gets turned into a formatted, tailored
PDF — a ready-made resume. This is what transforms the project into a product.

This is Week 2 of my AI/ML learning curriculum. Week 1 covered
OpenAI API fundamentals and keyword extraction. The full code is
on GitHub: github.com/Azeez1314

Top comments (0)