applyjobs.club

by notKevin Studio

by notKevin Studio

From 3% to 37%. I built an AI agent that turns job applications into interviews.

From 3% to 37%. I built an AI agent that turns job applications into interviews.

Year

February, 2026 - Present

My Roles (Team-of-One)

Product Design

Engineering

Marketing

Tools

Claude Code

Google Workspace CLI

Next.js

Product Type

B2C AI-native

Productivity

Personal tooling

Overview

Overview

Automate job applications. Done in minutes.

I built an agentic workflow to automate everything in the job application that repeatedly requires my judgement and is time consuming. The workflow fetch each job description (JD) by URLs, scores and tiers job, identifies resume gaps against each JD, generates a tailored resume optimized for both humans and ATS, drafts LinkedIn outreach, and logs everything to Google Sheets and Drive.

5 applications used to take me 2 hours of work. Now, it takes a one-time 15-minute setup and runs unattended every session. The goal wasn't just speed. It was protecting the decision-making energy I needed to show up well in interviews.

Simplified agentic workflow architecture

Simplified agentic workflow architecture

Impact

37 %

Interview conversion

Interview conversion

~11 x

Increase in conversion

Increase in conversion

8 hrs/month

100 tailored applications

spent on submitting 100 job applications

~1 min/job

to rate job fit, customize resumes, draft outreach

to rate job fit, customize resumes, draft outreach

rate & tailor

Problem

PROBLEM

Hours of applications. Very few interviews.

I had sent 296 job applications. I got 10 interviews. That's about 3% conversion rate.

Most of my job applications were not tailored to the role because the effort was high. I used to spend 2 hours to apply for 5 jobs with tailored resumes: open ChatGPT, paste resume, paste JD, edit the generic output, write a LinkedIn message, repeat. It wasn't just slow. It was degrading my judgment and momentum. By applying 6 or 7 in a day, I was making mediocre decisions about which gaps to address and whether a job was worth applying to at all.

Painpoints

3 %

Interview conversion

34 hours /month

150 generic applications

Few interdisciplinary curricula

0

Insight on what's working

"The process felt like total guesswork, but I couldn’t stop because I needed to feel I was keeping up... The repetitive parts were eating my time and draining my energy."

— A quote from my blog on 3/18/2026, Protect my energy from the job search process that sucks

User activation for
the non-technicals

User activation for the non-technicals

DESIGN GOAL #1

DESIGN GOAL #1

Build seamless onboarding UI for the "Aha! Moment".

Build seamless onboarding UI for the "Aha! Moment".

Problem: The workflow required comfort with a terminal, Claude Code, Google Workspace CLI, and Google auth flows. That excluded anyone who wasn't already technical.

Why it mattered: I built this because I empathized with other job seekers in the same situation I was in. A tool that only I could use wasn't the right scope.

Fix: Built a Next.js onboarding web app that walks users through every setup step: prerequisites check, Google auth, Sheet column mapping, Drive folder creation, config file generation. No terminal required for setting up the workflow.

Design decision: I didn't build a GUI for the pipeline itself. The target users already had Claude Code, and a UI would add tokens, latency, and no capability. The GUI is only for onboarding, where the accessibility gap was real.

Problem: The workflow required comfort with a terminal, Claude Code, Google Workspace CLI, and Google auth flows. That excluded anyone who wasn't already technical.


Why it mattered: I built this because I empathized with other job seekers in the same situation I was in. A tool that only I could use wasn't the right scope.


Fix: Built a Next.js onboarding web app that walks users through every setup step: prerequisites check, Google auth, Sheet column mapping, Drive folder creation, config file generation. No terminal required for setting up the workflow.


Design decision: I didn't build a GUI for the pipeline itself. The target users already had Claude Code, and a UI would add tokens, latency, and no capability. The GUI is only for onboarding, where the accessibility gap was real.

Factual output

DESIGN DECISION #2

DESIGN DECISION #2

Truthfulness is an explicit design constraint.

Truthfulness is an explicit design constraint.

Problem: When optimizing for ATS alignment, the resume customization was inventing experience or domain expertise I didn't have.

Root cause: I hadn't told the system that accuracy was a constraint on the optimization. It was doing exactly what I asked.

Fix: Added an explicit truthfulness constraint to the customize-resume skill: prohibited fabricated years, tools, or domains not present in the source resume or user-confirmed gap context. Changed the objective from "maximize ATS alignment" to "maximize ATS alignment using only confirmed true information."

Secondary fix: The ATS emoji table now doubles as a verification artifact — I can see what gaps the AI identified and check whether the resume addressed them with real experience or invented something.

When a gap is discovered in the user's resume against a specific job posting, the AskUserQuestions widget is fired to let user determine if the gap can be filled in any way.

When a gap is discovered in the user's resume against a specific job posting, the AskUserQuestions widget is fired to let user determine if the gap can be filled in any way.

When a gap is discovered in the user's resume against a specific job posting, the AskUserQuestions widget is fired to let user determine if the gap can be filled in any way.

Reduce midway
pauses

Front-loading human decisions in async AI workflows.

Reduce midway pauses

DESIGN DECISION #3

DESIGN DECISION #3

Front-loading human decisions in async AI workflows.

Front-loading human decisions in async AI workflows.

Problem: The workflow kept pausing mid-run. A question that asked me to verify a job posting date or the resume gap would appear. A script approval dialog would interrupt. I'd walk away and come back 30 minutes later to a frozen session.

Insight: I was designing AI interaction differently from how I'd want any async collaboration to work. If I hired a contractor, I'd front-load all decisions at the start, not scatter them through execution.

Fix: Moved all human input to a batch of AskUserQuestions widget at the beginning of the workflow. Global preferences (portfolio URL, location filter, industries to skip), per-job gap questions immediately show up after job description fetch, and an option to skip stale job before any processing began.

Result: Sit down for 2–3 minutes, answer a batch of questions, walk away. Come back to completed output. Mid-run interruptions dropped to zero.

Problem: The workflow kept pausing mid-run. A question that asked me to verify a job posting date or the resume gap would appear. A script approval dialog would interrupt. I'd walk away and come back 30 minutes later to a frozen session.


Insight: I was designing AI interaction differently from how I'd want any async collaboration to work. If I hired a contractor, I'd front-load all decisions at the start, not scatter them through execution.


Fix: Moved all human input to a batch of AskUserQuestions widget at the beginning of the workflow. Global preferences (portfolio URL, location filter, industries to skip), per-job gap questions immediately show up after job description fetch, and an option to skip stale job before any processing began.


Result: Sit down for 2–3 minutes, answer a batch of questions, walk away. Come back to completed output. Mid-run interruptions dropped to zero.

All questions that require user input occur the beginning of the workflow. For example, when the agent cannot find the publishing date of a job post, it asks user to verify early in the workflow.

All questions that require user input occur the beginning of the workflow. For example, when the agent cannot find the publishing date of a job post, it asks user to verify early in the workflow.

All questions that require user input occur the beginning of the workflow. For example, when the agent cannot find the publishing date of a job post, it asks user to verify early in the workflow.

Cost optimization

Optimize for cost

DESIGN DECISION #4

DESIGN DECISION #4

Generate token & time summary as an optimization feedback loop.

Generate token & time summary as an optimization feedback loop.

Problem: I had three constraints — time, cost, learning — but no visibility into which pipeline steps were consuming the most of each.

Fix: I asked the agent to build a step-metrics skill that outputs token usage and time per step as an bar chart at the end of every session.

Result - How it drove architecture: The measurement tool generated the architecture change. The summary surfaced that job scraping was the single largest token cost. Claude analyzed the pattern and recommended making rate-and-add-jobs a subagent because when the orchestrator processes multiple jobs sequentially, token costs compound in the same context window. Subagents isolate each job, so costs don't stack. The savings scale linearly with batch size.

Problem: I had three constraints — time, cost, learning — but no visibility into which pipeline steps were consuming the most of each.


Fix: I asked the agent to build a step-metrics skill that outputs token usage and time per step as an bar chart at the end of every session.


Result - How it drove architecture: The measurement tool generated the architecture change. The summary surfaced that job scraping was the single largest token cost. Claude analyzed the pattern and recommended making rate-and-add-jobs a subagent — because when the orchestrator processes multiple jobs sequentially, token costs compound in the same context window. Subagents isolate each job, so costs don't stack. The savings scale linearly with batch size.

Performance metrics

~1 min/job

to rate job fit, customize resumes, draft outreach

8 hours /month

100 tailored applications

100 tailored applications

The agent provides a summary of token consumption, time spent completing all jobs, and optimization suggestions at the end of each session.

The agent provides a summary of token consumption, time spent completing all jobs, and optimization suggestions for the workflow at the end of each session.

Learning loop

DESIGN GOAL #5

DESIGN DECISION #5

No more blindly applying. Let the data reveal about the job fit.

No more blindly applying. Let the data reveal about the job fit.

Based on 2-month job applications data using the workflow, I convert best at early-stage, AI-native companies building products from scratch, specifically where I'd be a founding or first designer, the product is pre-launch or in early traction, and the team is small and moving fast in NYC. The through-line isn't just industry or seniority: it's construction mode. Companies that need someone to create something that doesn't exist yet are the ones calling me back.

I got rejected most reliably at growth-stage and mature companies running established products, especially where design is a pod-embedded function, the system is already built and needs scaling. These roles tend to filter for a specific pedigree (often big-name product experience or a strong portfolio of shipped, measurable growth work) that I current positioning isn't triggering.

Based on 2-month job applications data using the workflow, I convert best at early-stage, AI-native companies building products from scratch, specifically where I'd be a founding or first designer, the product is pre-launch or in early traction, and the team is small and moving fast in NYC. The through-line isn't just industry or seniority: it's construction mode. Companies that need someone to create something that doesn't exist yet are the ones calling me back.


I got rejected most reliably at growth-stage and mature companies running established products, especially where design is a pod-embedded function, the system is already built and needs scaling. These roles tend to filter for a specific pedigree (often big-name product experience or a strong portfolio of shipped, measurable growth work) that I current positioning isn't triggering.

Interview conversion rate

80 %

Lead/founding designer roles

37 %

Tier 1 designer roles

2.5 X

Increase with LinkedIn outreach