I built an AI job agent that took my interview rate from 3% to 37% on its best-fit jobs. Then I turned it into a product anyone can use.

My roles (team of one)

Product design

Engineering

Growth and marketing

Year

Feb 2026 – now

Tools

Claude Code and Claude API

Next.js, Supabase, Vercel

Google Drive and Docs APIs

Product type

B2C, AI-native

0 to 1, solo build

Live web app

01 — Overview

Paste a job link. Get a verdict, a tailored resume, and outreach.

applyjobs.club helps job seekers apply to fewer jobs, and better ones. Paste the job links you found. It tells you which are worth it, tailors your resume and LinkedIn messages for those, and tracks what gets replies.

I built it three times in six months, each time for more people. I designed it, coded it, and launched it on my own. Each version below shows what I did, what I found, and what I changed.

How it grew

From my own terminal to a web app anyone can use.

v1
Feb 2026For me
Mar 2026YouTube demoPeople asked to try it
v2
Apr 2026For friends
Jun 2026Tech Week demoSomeone asked to try it
v3
Aug 2026For anyone

37

%

Interview rate on Tier 1 jobs

Interview rate

Interview rate

~11

x

Higher interview rate

Higher interview rate

Higher interview rate

8

hrs/month

for 100 tailored applications

for 100 tailored applications

for 100 tailored applications

~1

min/job

to score, tailor, and write outreach

to score, tailor, and write outreach

to score, tailor, and write outreach

02 — Problem

Lots of applications. Almost no interviews.

I sent 296 applications and got 10 interviews. That’s 3%.

Tailoring took too long, so most applications went out generic. Five tailored ones took me two hours. By the sixth in a day, I was too tired to judge which jobs were even worth it.

Pain points

3

%

Interview rate

Interview rate

34

hrs/month

on 150 generic applications

on 150 generic applications

0

Insight into what works

Insight into what works

“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

03 — v1, February 2026, for me

03 — v1, February 2026, for me

A workflow that ran my own job search.

I set rules before building: spend under $50, keep sending 10 applications a day, and don’t disappear into research.

I compared six options, from hiring help to browser plugins. Claude Code skills won. They scored each job, found resume gaps, tailored my resume, wrote outreach, and logged it all to Google Sheets. I kept browsing for jobs manual on purpose, because that’s where my judgment matters.

On the jobs it rated best, my interview rate went from 3% to 37%. But only I could run it.

February to March 2026

What I noticed, and what it led to.

Feb 2026
NoticedIt padded my resume with experience I didn’t have.
Only true experience. It asks about gaps instead.
Mar 2026
NoticedIt kept stopping mid-run to ask questions.
Every question up front, then it runs on its own.
Mar 2026
NoticedI couldn’t see what a run cost or how long it took.
A cost and time report after every run.
Mar 2026
NoticedMy YouTube demo drew real interest, and a few people reached out.
Build a version friends can set up themselves.Led to v2

v1 in Claude Code: the agent stops to ask about a gap in my resume.

The run report

Tokens and time per step, plus what to try next.

The agent’s end-of-run report from March 23, 2026: output tokens per step, minutes per step, and optimization flags.

A real report from March 23, 2026: 2,750 tokens and 16 minutes, with what to try next.

04 — v2, April 2026, for friends

A setup wizard for friends.

The March demo brought interest, so in April 2026 I built a version friends could install themselves. I shared it from April and posted a walkthrough on YouTube.

The agent still ran in each person’s terminal. My job was to get them to their first result.

April to June 2026

Setup was the product.

Apr 2026
NoticedSetup stopped people, not the agent.
A setup wizard that takes about 15 minutes.
Apr 2026
NoticedEarly users already worked in Claude Code.
Design only the setup, and keep the agent in the terminal.
Apr 2026
NoticedI couldn’t see where people dropped off.
Opt-in analytics, with a plain list of what’s collected.
Jun 2026
NoticedTech Week drew interest, and friends still found setup too hard.
Rebuild it as a web app anyone can sign in to.Led to v3

The v2 setup wizard: it checks each tool, connects Google, and writes your config.

05 — v3, August 2026, for anyone

A web app: sign in, paste a link.

v3 runs the same agent as v2. What changed is everything around it.

In a consumer app, people leave if they don’t see value quickly. So I designed for one goal: get a new user from sign-in to their first scored job as fast as possible. You sign in with Google, pick your resume, and paste job links.

What changed from v2

Same agent. A new way in.

v2, April 2026v3, August 2026
The agentScores jobs, finds resume gaps, tailors the resume, drafts outreachSame as v2
Connecting GoogleGoogle Workspace command-line toolSign in with Google
Where it runsYour terminal, through Claude CodeA web app. Nothing to install
SetupA setup wizard, about 15 minutesThree short steps, about 2 minutes
When the agent needs youA question in the terminalOne Today page, plus email
Tracking jobsA Google SheetA built-in tracker, with an optional Sheet
Changed in v3

Onboarding

Guided steps to the first scored job.

People leave a consumer app before they see value, so I designed three ideas end to end and shipped this one.

Onboarding option A: guided steps

Guided steps (shipped)

Why I picked it: one step at a time, and you see every file it creates in your Drive before anything happens.

Onboarding option B: one tap

One tap (dropped)

Why I dropped it: fastest to finish, but it created files in your Drive without showing you, which costs trust.

Onboarding option C: smart checklist

Smart checklist (dropped)

Why I dropped it: cheapest to build, but every decision on one screen was too much to take in.

Today

A to-do list, so the agent never waits on you.

I left out a chat box on purpose. Claude and ChatGPT already do chat well, and a chat here would be a weaker copy. The questions follow the ask-user-question widget I relied on in Claude Code for v1 and v2: a few clear options, plus room to write your own. A chat would also cost more, since every message is another model call that re-reads the conversation. Here the agent writes its questions once, and answering them costs nothing extra. Today lists every open question, most urgent first, so the agent keeps moving.

Before: v1 stopped to ask, one question at a time.

Before: v1 stopped to ask, one question at a time.

Tracker

A dashboard that shows what to do next.

I designed the tracker from how I used my own Google Sheet. Every column follows that sheet, down to the date I applied. Two things go further: each job links straight to its tailored documents, and the top of the page sums up what to do next, like documents that are ready but not yet sent, plus how Tier 1 jobs turn into interviews compared with everything scored. It’s built to prompt the next application, not just keep records. You can still export or sync it to your own Sheet.

Trust

Your words, as written. Every change, shown.

A gap question is where trust is won or lost. The job page shows why a job scored the way it did and every edit to your resume.

Behind the work

What I learned

Structure beats chat.

I set constraints before I chased ideas. A $50 budget and a goal of 10 applications a day kept every version small, and cheap enough that I’d actually use it every day.

I tested demand before each new build. After my YouTube demo, people I’d never met DMed me asking to try it, and friends reached out wanting to use it for their own job search. The Tech Week demo brought another round of the same. That’s how I knew who to build for next, before I wrote any code for them.

I measured the agent before I tried to improve it. The cost and time report after every run turned my guesses into design decisions.

I kept people in charge where judgment matters. The agent does the copying and pasting. Choosing which jobs to go after and answering the gap questions stay with the person.

And I learned never to trust a resume I haven’t checked. Early on, the agent padded mine, because I’d asked it to match the job and never said it had to stay true. That isn’t a bug you fix once. It’s how language models behave, so checking every resume is part of the product, and showing every change is what lets people trust it.

What I got wrong

I designed v2 for people like me.

v2 assumed people already had Claude Code and could get through Google setup. My friends couldn’t, and even my most technical tester stalled.

Building the wizard is how I found that out, so I don’t regret building it. The mistake was assuming the people I wanted to help worked the way I do. That’s why v3 has no setup at all. You sign in with Google and start.

What’s next

Give people a reason to come back.

I’m curious whether Tier 1’s extra interviews came from the rating or the tailoring, but pulling those apart is a study of its own. As a team of one, I’d rather spend that effort where a consumer product lives or dies: whether people keep coming back.

A job search runs for weeks, and the product is only as useful as what people tell it. When they return to tailor the next resume and log what happened, we both learn what’s working. The tracker already makes logging a reply one click, but people still need a reason to open it. So next I’m designing for return visits, and I’ll judge it by how many people are still using it in their fourth week, and how many applications end with an outcome logged.

More people also means resumes I can’t check myself, so keeping them truthful at scale is the next hard problem.

Next case study

Next case study

My Personal Health Dashboard — Wearable data for a COVID-detection research study

Read the case study →