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
- Reduced resume tailoring time by 75%.
- Reduced biased or exclusionary language in resumes.
- Noticeable 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
bookmarkHow might we help candidates get seen by translating their real experience into the language recruiters and ATS understand?
User & Business needs
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
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
- Adoption: % of job seekers who try the optimisation
- Completion: % of optimised resumes submitted
- Retention: % of returning users optimising more resumes
- Shortlist conversion: % of shortlisted resumes optimised
- Interview conversion: % of interviewed candidates who used optimisation
- Bias reduction: % decrease in detected bias across submitted resumes
Design dilemmas
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
| 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
| 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
| 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
Excluding a keyword
Reverting a bias change
System guardrails
- Fact integrity
- Natural keyword placement
- Semantic precision
- Bias & Fairness
- Leadership tone
- Formatting & Limits
- Style rules
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.
Blend keywords naturally across Summary, Experience and Skills. One per bullet, no repetition or forced phrasing. Skip anything that doesn’t fit cleanly.
Match meaning, not words. Use correct domain synonyms, avoid false matches and negations. Don’t infer from titles or nearby terms.
Replace biased or exclusive wording with neutral, inclusive phrasing. Keep tone balanced and use Australian spelling.
Write with confidence and clarity. Show ownership, collaboration and results. Avoid passive voice and weak verbs.
Summary ≤70 words. Use bullets for achievements only.
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 Impact
- Reduced tailoring time by 75%.
- Reduced biased or exclusionary language in resumes.
- Noticeable 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”