Three layers, not one problem
"I am not getting calls" is never one problem. The class split it into three, and the split matters because each layer needs a completely different fix.
Most people work on level 2, because studying feels productive. But a level 0 failure means nobody ever sees the level 2 work. This session is entirely about level 0, and the argument for spending a class on it is simply that it is the cheapest layer to fix and the one blocking everything else.
What an ATS actually is
An Applicant Tracking System is the software a company's recruiters use to receive and filter applications. Greenhouse, Workday, Lever and Cutshort are the ones named in the room; larger companies sometimes run their own.
Two corrections that came up immediately:
- You do not use it, HR does. It is not a scoring website you visit. It is the recruiter's inbox, and it is where your PDF lands.
- Rejections can be near-instant. Whatever filtering happens, it can happen in under a minute, long before a human reads anything.
Whatever the vendor, the filtering comes down to five things:
- Keywords, do the terms in the job description appear in your resume at all
- Descriptions, is the surrounding text real work or a bare word list
- Frequency, how often the important terms appear
- Duplicacy, the same phrase repeated so often it reads as stuffing
- Freshness, how recently the profile was updated
Solve those five and the class's claim is that most of level 0 goes away.
The "my ATS score is 98 and I still got rejected" complaint has a wrong premise buried in it. A score is not a property of your resume. It is a property of one resume paired with one job description. The same document scores differently against every posting, and a 40% match can pass where a 98% match fails, because the thresholds and the weightings are the company's, not yours.
The consequence: one resume per job
If the score is a pairing, then a single resume sent everywhere is optimised for nothing.
Applying to ten jobs means ten tailored resumes. That is the part people refuse, and it is exactly the part AI makes survivable. Doing it by hand is a full day's work; doing it with a prompt is a few minutes each, and by the end of this class it becomes a single reusable command.
Step 1: measure the gap before changing anything
Install a keyword-matching browser extension (the class used Jobalytics), upload your resume once, then open any job posting. It reports a match percentage and, more usefully, splits the vocabulary in two: keywords matched and keywords missing.
Run live against a real posting, an older resume scored 7%. The missing list is the working document for everything that follows.
Step 2: fix the resume before you tailor it
Adding keywords to a weak resume produces a keyword-stuffed weak resume. So the first prompt does not mention the job at all. It asks for a score out of 10 on five dimensions:
- Overall effectiveness
- Layout and design
- Content relevance
- Grammar
- Impact
The rule applied to the result: every dimension must be above 7 before you go further. The resume in class opened at 6 out of 10, with grammar and impact the weakest, and was rewritten until the structure scored 8.5.
The structure being aimed at
- Contact block: email, LinkedIn, GitHub. No home address, no family details. They add nothing and they are personal data you do not need to hand over.
- Skills section, near the top. This is the single highest-leverage block, because it is where the keywords legitimately live.
- Work experience: three bullets per role. Three, not four, and not a paragraph.
- Projects, with what you actually built.
- Numbers on everything. "Created 9,000 test cases" and "automated 3,500 of them" land in a way that "responsible for test automation" never does, with humans and with keyword matching alike.
- Power words to open each bullet: built, designed, led, automated, reduced, migrated. There is a list of well over a hundred, and an assistant will happily suggest them.
- One page. Export as PDF, not DOC.
Step 3: tailor to the job description
The second prompt is the one that does the work. It takes the job description plus your existing resume and asks the model to:
- Extract the essential skills, requirements and frequently repeated keywords from the description
- Cross-reference them against the resume
- Identify where those terms could legitimately be incorporated or emphasised
- Ensure every suggestion matches genuine experience
Point 4 is not decoration, and the class was emphatic about it. If you have never used Docker, Docker does not go on the resume. The prompt is written to constrain the model rather than let it embellish, because the interview will find the gap and that is a far worse outcome than a missed application.
Re-uploaded to the extension, the same resume against the same posting moved from 7% to 62%. The working threshold offered was that anything above roughly 40 to 60% is worth submitting.
Strip the AI fingerprints before you send it. The tell called out live was the em dash, the long punctuation mark that assistants sprinkle everywhere and most people never type. Search for it and replace it with a comma, a colon or brackets. Same for uniform three-clause sentences and words nobody says out loud. Also read every line: the rewrite in class promoted a job title the candidate had not held, which is exactly the kind of thing a model does when it is pattern-matching to a job description. You are the fact-checker.
Turning it into something repeatable
Doing this by hand for the first resume is the point. Doing it by hand for the fiftieth is not, so the manual process gets packaged into a skill: the same structure the batch built earlier in the course, with instructions, a JSON version of the resume, writing rules, and a build script.
A .skill file is a zip archive. Rename it, unzip it, and the folder inside is editable. That means a skill can be inspected, corrected and shared, which is the property that makes it worth building instead of re-prompting each time.
From there the loop batches: collect job descriptions, feed them through the skill, get one tailored resume per posting. The class demonstrated collecting several postings in one pass with a browser extension driving the model, which is the difference between ten applications being a day's work and ten applications being a coffee break.
This is where honest scepticism belongs. Automated collection depends on the site allowing it, and rate limits and terms of service are real. Treat the batching as an accelerator for something you already do carefully, not as a way to fire out fifty applications you have not read. Ten considered applications beat fifty generated ones, which is the same conclusion the tailoring argument reached by a different road.
Freshness, the free win
Recency is one of the five filters and it costs nothing:
- Job portals: update every day or two. A small edit, a reordered skill, a reworded bullet. Profiles that move keep surfacing in recruiter searches; profiles that sit still sink.
- LinkedIn: twice a week. Same idea, lower frequency.
This is the least intellectually interesting item on the page and possibly the highest return per minute.
After you apply
Ask for feedback. After a rejection or a silent interview, one short email asking what would have made the application stronger. Most will not reply. It costs a minute, and not sending it guarantees the answer is no.
Follow up more than once. The story told against this was first-hand: an application to a dream company got no reply, was followed up several times, and eventually landed an interview. The recruiter later explained the sequence plainly. The first email arrived during a meeting. The second was seen and forgotten. By the third, the persistence itself read as genuine interest. A staged follow-up series, spread over days rather than hours, is the tactic.
For reaching a named recruiter, tools like Hunter.io, Exa and Perplexity can surface public professional contact details. Two guardrails were attached and both are worth keeping: do not open by asking for a job, lead with a normal professional conversation, and treat anyone who does not reply as a no rather than a target for another round.
One tactic from this section is deliberately not written up here: using disposable email addresses to get around a service's own signup restrictions. It works, and it also breaks the terms of the service you are asking to help you. Everything else in this section stands on its own without it.
The 90-second introduction
The moment a call comes, the first question is always the same one, and it should not be improvised. Prepare a 90-second pitch and rehearse it until it is boring to you:
- Name and shape: how long in testing, and what kind of testing
- The through-line: the thing you have done repeatedly, stated once and concretely
- Right now: current role, current scope, the technologies actually in your hands
- One or two proof points, with numbers
- A closing line that hands the conversation back
A prompt can draft this from your own resume. Then say it out loud until it sounds like speech rather than a document, because that is the only version that survives a real call.
Tools mentioned
| Free | Paid |
|---|---|
| QA Job Fit, Overleaf, FlowCV, Canva, TealHQ | Novoresume, Rezi, Jobscan |
The blunt point made about spending: almost everyone uses only free tools, and almost everyone's resume is being rejected. A small amount of money on the document that gets you the job is a reasonable trade, and it is a genuinely optional one.
For a professional photo, an ordinary photo plus an image model produces something usable, and dedicated headshot tools exist. Include a photo.
The full conversation
The whole session was shared with the batch as a public conversation, and it is worth reading rather than working from these notes alone: the resume conversation.
It contains the parts that are hard to summarise: the six-dimension scorecard applied to a real resume with the actual criticisms, the rebuild, and then the job-description tailoring pass with a keyword table showing which requirements the candidate genuinely met and which they did not. That last table is the useful part, because it shows the tool refusing to write three named technologies into a resume that had no evidence for them, and saying why. That is the anti-fabrication rule from this page, enforced rather than described.
A companion conversation from the next session on LinkedIn branding covers the content side.
Tasks and announcements
- Today's task: take 10 real job descriptions, run them through the resume-tailoring skill, and produce 10 tailored resumes. Push them to GitHub and post a screenshot in the thread.
- The challenge: build your own local version of a job tracker, deployable if you want to take it further. Adapt it beyond QA if your target roles are elsewhere.
- Validate before you submit. Re-score every tailored resume against its posting rather than trusting the generated output.
- Tomorrow: LinkedIn branding and visibility, which is the other half of level 0.
- Tuesday 25 August, 8:00 PM IST, and Thursday 27 August, 8:00 PM IST: AI Fluency certification sessions, parts one and two. Free certification, and recordings will be available.
- Later: Claude Code 101, which needs a paid Claude plan, unlike AI Fluency.
- Still coming in the course: RAG, MCP, AI agents, and the evaluation framework.
Interview forms of today's material: why is an ATS match score meaningless without naming the job it was measured against? Name the five things an ATS filters on. What is the one rule that stops resume tailoring from becoming resume fabrication? Why does a career break belong to a different layer of the problem than a low keyword match, and what would you do differently for each?