Skip to content
Go back

Three AIs Score, Write And Review My Applications — Only I Get To Send Them 🚀

Let me kill the obvious misreading first.

I did not hand my job search to an AI. Nobody typed “find me a job” into a chat window and went to bed. I still look. I still decide. One of them does now read my inbox before I get to it — but not one of them has ever applied for anything, approved anything, or sent anything on my behalf.

Which needs saying, because at the end of the first piece in this series I wrote about handing the judgement over — and that phrase does considerably more work than I meant it to. What I handed over was the assessment: the scoring, the comparison, the arguing with me about fit. What I never handed over was the decision. The distance between those two sentences turned out to be the whole design.

What I built instead is a pipeline — the kind a software team builds around anything risky, where the automated parts do the tedious work and every irreversible step has a human name on it.

In my case, that human is only me.


Two Ways In, Both Of Them Mine 🔍

A vacancy gets in front of me one of two ways, and both start with me.

The alerts. I set job alerts up manually on LinkedIn, Seek and Indeed — set by me, tuned by me. They land in my email inbox like anyone else’s. I chose them, not an algorithm guessing at my taste.

The search. I also go looking on my own, and when something catches my eye I feed the link straight to the screening AI.

Now — here’s the bit that’s changed recently, and the bit I want to be precise about.

That screening AI can read the inbox too. So it works the alerts itself while I get on with my day, and comes back with a prioritised list: the best-fit roles at the top, each one scored.

What it does not get to do is quietly throw things away.

Everything it filtered out is still shown to me — ranked below the good ones, along with the reason it was dropped. And the reason is almost always one of the scorecard’s own factors: commute, company stability, layoff risk, culture fit.

If I disagree with that call — and I sometimes do — I promote it right there, on my own judgement, and it goes into the pipeline like any other vacancy.

So the AI decides the order. It never decides the menu.

This matters more than it sounds. The fastest way to lose control of a job search isn’t letting something help you sort. It’s letting something sort without showing you what it binned. The moment that happens you’re not searching any more — you’re being fed.

So: I search, the inbox gets screened, and I still see all of it. Then the pipeline starts. 🚦


Layer One: The Scorecard 📊

That screening AI is separate from everything else, and its only job is assessment.

It is explicitly not a writer. It doesn’t touch my resume. It doesn’t draft a word of a cover letter. It looks at the role and scores it on:

All of it from publicly available data: Glassdoor, Reddit, news coverage and the public company record. Not insider knowledge, not scraped credentials — the same information any candidate could read if they had four hours and the energy.

What comes back is a scorecard and a recommendation. A verdict — nothing else.

And the verdict is only ever input. It can argue; it can’t act.


Then It Enters The Pipeline 🔀

Once I’ve approved a vacancy myself, it goes into a GitHub pull request along with the vacancy details and any extra context I want attached.

That’s the handoff point — the place where I hand off the work but not the responsibility. From here the work is: one issue, one scoped task, one branch, one PR, one review.

Nothing merges without my say-so. That’s not a technical detail of the setup. That’s the entire point of the setup.


Layer Two: Generation Inside The Guardrails 🛡️

Codex does the actual writing — but not from a blank page and not from vibes. It works inside a set of canonical rules I’ve written and maintained, and the rules are where this stops being “AI wrote my resume” and starts being something I’d defend.

The generator’s stated principle:

Start with the complete candidate, then apply the vacancy as a lens.

Not: scrape the job description and mirror it back. Start from the whole verified career, then narrow what’s relevant. There’s a real difference, and it’s the difference between a document and a mirror.

The baseline rule for every pack:

Every application pack must be vacancy-specific, truthful, ATS-readable, evidence-based, naturally written, professionally polished, and proportionate to my actual experience. Do not optimise for AI detectors or use hidden text, invisible keywords, white text, metadata tricks, fake typos, deliberate errors, keyword stuffing, fabricated metrics, experience, or qualifications.

Read that last sentence again, because it’s the one people are usually surprised to find.

The rules spend as much effort preventing me from cheating as they do preventing the machine from inventing things. Keyword stuffing, invisible text, fake typos, inflated metrics — all banned, by me, on myself. If I wanted to game the system, the fastest route would be to delete these rules, and I’ve deliberately made that the harder path. 🧱

And the rule I’d put on a poster:

A gap must never be transformed into direct experience through wording.

There’s a version of this that’s very easy to build and very easy to sell: you’ve got most of what they asked for, so you reword what’s missing until it sounds like you have all of it. Everyone I’ve spoken to who’s job-hunted recently has either done it or been tempted to.

The rule just says no. Not “no, unless the role is close.” No.

When it comes to prioritising, the order is written down too — and notice where page count lands:

Optimise in this order: factual accuracy; vacancy relevance; evidence strength; career depth; ATS readability; recruiter readability; visual hierarchy; concision; page count.

Ninth of nine. Not the target — the output. There is no fixed page target at all; the document is however long the honest case needs it to be.

There’s even a gate that stops the machinery leaking into the document: employer-facing files are scanned and failed if they contain the generator’s own working notes — things like VERIFY BEFORE USE, TODO, TBC, placeholder. A resume that says “confirm this before sending” in a bullet point is a document that never should have left the building.


Layer Three: It Reviews Its Own Work — Then Stops 🧪

After generation, the files go back to ChatGPT, which analyses them and makes one of two calls:

  1. Approve for manual review, or
  2. Send it back to Codex for a refinement pass.

If it comes back, Codex refines. If the second pass is satisfactory, ChatGPT approves it.

Note the destination. Not “approved for sending.” Approved for a human to read.

And the system is unusually honest about what its own green ticks mean:

Automated checks enforce only structural guardrails for unreasonable length, section counts, applicant voice and obvious repetitive short-form patterns. They do not establish writing quality.

A PASS from CI means the structural checks passed. It does not mean the letter sounds like a person, that the emphasis is right, or that the argument is any good. Those stay flagged REVIEW_REQUIRED until an actual human has actually read them — and if nobody’s read them, they don’t get to be PASS.

Do not state a QA check passed unless it was actually run.


The Last Gate Is Not A Machine 🚪

So here’s the full path a vacancy takes:

I set the alerts and go searching → the inbox gets screened and scored → I approve, rescuing anything it dropped → it enters the PR → Codex generates inside the rules → ChatGPT reviews → refinement if needed → manual review → and only then, only if I’m genuinely happy with the resume and the cover letter, does it get used to apply.

Diagram of the nine steps from vacancy to send, colour-coded by who acts. Step 1, set the alerts and search, and step 3, approve and rescue anything binned, are marked YOU. Steps 2 and 4 through 7, screening and scoring, the pull request, Codex generating inside the rules, the ChatGPT review and the refinement pass, are marked AI. Step 8, manual review, is YOU again, and step 9 is a solid orange block reading "I apply - nothing sends without me", marked only you.

Nine steps, and the last of them isn’t one a machine can take. Not “if the pipeline is happy.” Not “if the scorecard says go.” If I’m happy.


Why This Isn’t Cheating 🎯

Because the goal was never to trick anyone.

Here’s what actually pushed me into building this. The recruitment pipeline isn’t what it was. You don’t submit an application, wait for a human to skim it past a quick ATS check, and get a phone call to talk it through. Those days are gone.

Now there are vastly more people applying for any given role, and recruiters are dealing with that volume by stacking filters — ATS, then AI, then a human, if it survives that far. The same application that once cleared a five-second scan now has to clear two automated layers before anyone reads a word of it.

I don’t love that. But it’s the field, and showing up to a stacked field with a hand-typed document and hoping is not integrity — it’s just losing slowly.

What I’ve built does not create experience I don’t have. It doesn’t invent a degree, misstate a date, or smuggle in keywords for skills I’ve never touched. Every one of those is explicitly forbidden, in writing — by the same rules the generator itself has to work inside.

What it does is make sure the true case gets presented properly — the right evidence emphasised, in the right order, readable by a machine and legible to a person, without me burning four hours and a shred of sanity per application.

That’s the fair advantage: not a bigger claim, a clearer one.

There’s a version of this where the tool does the deciding and you optimise relentlessly until something lands. I’ve deliberately built the opposite. The tools are here to carry the weight — the scoring, the sorting, the drafting, the second-guessing — so that the parts which need a person are left with enough of my attention to actually be done properly.


The real test of a system like this was never whether it makes you faster.

It’s whether, on a late night with a deadline closing in, it still makes you stop at a sentence you’re not sure about and fix it — instead of waving it through because everything else on the page is green.

So far, it has. ✅

If you’ve job-hunted in the last few years, I’d genuinely like to know where you land on this: helpful crutch, fair tool, or somewhere uncomfortable in between? 👇


Share this post on:

Previous Post
Every Vacancy Wanted A Different Version Of Me, So I Handed The Job To An AI 📄
Next Post
I Built A Pipeline To Survive My Job Hunt — Then I Realised It Was The Product 💡