15 OCT 2025 8 min READ Case study

AI Resume optimisation

In a highly saturated job market, being seen is everything. How can we leverage AI to improve fairness and visibility in hiring systems by helping candidates present their genuine experience?

PROJECT

Optimise resume: AI project exploring transparency, explainability and bias in AI-powered resume optimisation.

PROBLEM

Qualified candidates are being filtered out because resumes don’t align with how ATS and recruiters interpret skills, experience and tone.

SOLUTION

Human-in-the-loop AI tool that rewrites resumes with explainability, confidence levels and bias checks.

IMPACT

  • check_boxReduced resume tailoring time by 75%.
  • check_boxReduced biased or exclusionary language in resumes.
  • check_boxNoticeable increase in recruiter responses, suggesting higher ATS compatibility.

Good candidates go unseen

The hiring process is broken in many ways. Many high-fit candidates never make it past automated screening (ATS) because their resumes don’t match the language ATS systems expect.

Meanwhile, recruiters sift through piles of keyword-stuffed resumes that all sound the same.

On the other side, candidates waste hours rewriting resumes for every role, trying to guess what matters. Most follow conflicting online advice that focuses on tricking algorithms instead of communicating real skills.

ATS filters me out even though I totally qualify. I have no way to know what I’m doing wrong.

You have to get through the system first. Then you can prove yourself or have someone take a chance on you.

Building too much for ATS can backfire on human readability.

Mystery of ATS

To understand both sides: candidates and recruiters, I looked at:

  • How ATS systems like Workday, Greenhouse and Lever parse and rank resumes
  • Why most resume optimisation tools fail to earn user trust
  • Candidate pain points shared across Reddit, LinkedIn, and user interviews
  • Recruiter workflows and screening patterns

Key findings

  • Candidates have no visibility into why their resumes were rejected or ignored.
  • Many tools gave conflicting or manipulative advice, encouraging keyword stuffing.
  • Users wanted simple uploads, instant feedback and full control over what gets changed.
  • Bias in language was invisible to most users, but they cared deeply once it was shown.

Opportunity

bookmark

How might we help candidates get seen by translating their real experience into the language recruiters and ATS understand?

User & Business needs

person

User needs

Candidate

  • Resume passes ATS filtering
  • Resume gets shortlisted by a recruiter
  • Edits are explainable, transparent and reversible
  • Use of biased language is reduced
monitoring

Business needs

Hiring system

  • Improve candidate engagement
  • Reduce recruiter screening time
  • Strengthen company’s data advantage
  • Open premium revenue streams
  • Advance fairness and brand trust

Measuring success

  • check_boxAdoption: % of job seekers who try the optimisation
  • check_boxCompletion: % of optimised resumes submitted
  • check_boxRetention: % of returning users optimising more resumes
  • check_boxShortlist conversion: % of shortlisted resumes optimised
  • check_boxInterview conversion: % of interviewed candidates who used optimisation
  • check_boxBias reduction: % decrease in detected bias across submitted resumes

Design dilemmas

Automation vs Control

Automation vs Control
Dilemma Learnings Decision
Should users manually approve each AI suggestion or review all changes after they’re applied? Users cared more about efficiency than full control. They wanted the AI to “just fix it”, but still know what changed. Resolved by automating high/medium confidence edits and surfacing low confidence ones for user approval.
Should the AI automatically apply bias-risk fixes or should users decide which ones to keep? Users preferred the AI fixing bias automatically as long as they could see what was changed and why. Apply all bias-risk mitigations automatically, but surface them clearly for user review before finalising.

Transparency & Explainability

Transparency & Explainability
Dilemma Learnings Decision
How to make users feel in control? Users wanted to see what changed and how it affected their match and bias scores. Show keyword list (present and missing) with placement, match score and bias risk to make changes transparent.
How to show confidence levels without confusing users? Users didn’t fully understand what “low” or “medium confidence” meant. They preferred clear outcomes and reasoning over extra labels. Simplified confidence display to two states (added and not added) supported by short reasoning, so transparency comes from explanation.
Should users see explainability for every keyword or only for low-confidence ones? When AI suggestions felt unclear, users looked for short explanations to decide whether to accept or remove them. Show explainability for all keywords using progressive disclosure (brief reasoning by default, detailed context on expand).

Bias & Fairness

Bias & Fairness
Dilemma Learnings Decision
How to make bias risk observable, understandable, and correctable? Users had little awareness of bias in resumes and didn’t recognise how language could affect fairness. They needed simple, non-technical framing to understand its impact. Introduce bias indicators (Low / Medium / High) with plain-language explanations with before and after insights.

Feedback Loop

Feedback Loop
Dilemma Learnings Decision
Do users need both positive and negative feedback options? Users wanted a quick, optional way to flag mistakes without breaking flow. Keep only the “Flag mistake” option and make it subtle and contextual.

Main user flows

Including a keyword

User includes a missing keyword”
User includes a missing keyword

Excluding a keyword

User excludes a keyword
User excludes a keyword

Reverting a bias change

User reverts bias change
User reverts bias change

System guardrails

  • Fact integrity
  • Never invent or alter facts. Use only what’s verifiable from the candidate’s text. Add keywords only when confident they reflect real experience. No exaggeration or implied ownership.

  • Natural keyword placement
  • Blend keywords naturally across Summary, Experience and Skills. One per bullet, no repetition or forced phrasing. Skip anything that doesn’t fit cleanly.

  • Semantic precision
  • Match meaning, not words. Use correct domain synonyms, avoid false matches and negations. Don’t infer from titles or nearby terms.

  • Bias & Fairness
  • Replace biased or exclusive wording with neutral, inclusive phrasing. Keep tone balanced and use Australian spelling.

  • Leadership tone
  • Write with confidence and clarity. Show ownership, collaboration and results. Avoid passive voice and weak verbs.

  • Formatting & Limits
  • Summary ≤70 words. Use bullets for achievements only.

  • Style rules
  • Be clear, concise and grounded in truth. Avoid filler and self-praise. Prioritise measurable impact and plain language.

Building MVP

I built a working MVP to test how these flows feel in action.

The app runs the full resume optimisation pipeline:
  • Uploading a resume and job description
  • Parsing content
  • Applying AI suggestions
  • Showing present and missing keywords

It uses Netlify functions, OpenAI API (GPT-4o model), and custom scoring logic to simulate real ATS behaviour.

Building it gave me hands-on experience using AI to code, refining prompts through iterations and dealing with non-deterministic AI behaviour, learning how small prompt edits could completely change the output.

MVP resume optimising
Functional MVP built with GPT-4o and Netlify functions

MVP Impact

  • check_boxReduced tailoring time by 75%.
  • check_boxReduced biased or exclusionary language in resumes.
  • check_boxNoticeable increase in recruiter responses, suggesting higher ATS compatibility.

Key learnings

  • ATS systems' way of parsing, matching, and scoring resumes.
  • Engineering a consistent AI prompt.
  • Practising API keys handling.
  • Detecting and reducing bias risk in writing.
  • Fast prototyping through “vibe coding”