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.
37
%
~11
x
8
hrs/month
~1
min/job
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
%
34
hrs/month
0
“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
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.
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.

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.
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.
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.

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.

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

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.
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.
My Personal Health Dashboard — Wearable data for a COVID-detection research study
Read the case study →


