Project Walkthrough

The Friends
Job Dashboard

After a group of friends were laid off last summer, I built them a private job search dashboard. Not a spreadsheet. A full system - AI-scraped leads, resume tailoring, fit scoring, and a feedback loop that gets smarter the more they use it.

The Pipeline

Jobs come to you. You don't go looking for them.

I built a skill that scrapes the internet for job postings that match the kind of work they do. Listings land in the dashboard automatically. Every lead gets an AI fit score against their background before they ever see it, so the list isn't random - it's already filtered.

Job Leads page showing auto-populated listings with fit scores, company, pay, and status

The Job Leads page - auto-populated, fit-scored, and sortable by status.

Start Here

Tell JJ who you are.

Upload a resume if they have one, or skip it entirely. The more important part is the brain dump - everything they've done across every job, in their own words. When it comes to tailoring, more context produces better results. They can come back and add more any time.

Start Here page with resume upload and free-form background text field

JJ learns from whatever you give it - a resume, a voice memo, or just a paragraph.

Reviewing a Lead

Click into any job. Read it, react to it, train JJ.

Every job detail panel shows the full description, the pay, a link to the original posting, and JJ's fit score with a plain-English explanation of why it matched. From there you make a call - Interested or Not Interested - and tell JJ why. That feedback is how the leads get sharper over time.

Job detail panel with fit score, full description, and interested/not interested buttons

Full job detail with fit score and one-click reaction.

Interested modal asking user to tell JJ what they like about the job

Marking interested asks for a reason - that trains JJ to find more like it.

The Resume

One click. A resume and cover letter written for that specific job.

Once they mark a listing interested, JJ offers to tailor their resume and cover letter on the spot. It pulls their background, reads the job description, and writes materials matched to them - not a generic template. The whole process takes a few minutes.

After marking interested - option to tailor resume, cover letter and apply

After marking interested, tailoring is one click away.

Tailoring in progress with step-by-step status showing JJ working

JJ works through it step by step - you can watch the progress in real time.

Have a Specific Listing in Mind?

Paste any listing. Get a tailored resume.

Found a listing on LinkedIn or Indeed? Paste the job description or URL directly into the dashboard. JJ tailors their resume and cover letter to that posting and adds it to their leads list so everything stays in one place.

Get a Tailored Resume page with job posting input, title, company, URL, pay range fields

Paste any listing - JJ handles the tailoring and files it with the rest of their leads.

How It All Works

Training JJ - the full explanation.

This page inside the dashboard explains the whole system: what JJ actually does, how the resume tool works, why it builds resumes in ATS-friendly format so they pass automated screening before a human ever sees them, and how the job leads layer gets smarter the more they interact with it. It's the manual, written in plain English.

Training JJ page explaining the resume tool, ATS screening, job leads layer, and feedback loop

Click to enlarge. The Training JJ page - covers ATS screening, resume tailoring, feedback loops, and how JJ learns preferences over time.

Built-in Help

Directions - a quick-reference card for every feature.

A separate directions page gives a card for each section of the dashboard. Tap any card to expand the full instructions. There's also a chat interface connected directly to JJ if something isn't working. No external documentation needed.

Directions page with all five feature cards collapsed

All five sections at a glance.

Directions page with a card expanded showing detailed instructions

Tap any card to expand the full instructions.

Built because they needed it. A job search is already exhausting - the system should be doing the heavy lifting, not the person looking for work. The dashboard handles the scraping, the scoring, and the paperwork. They show up, react to what lands, and apply to the listings that catch their eye.

Convex Claude API Apify Vanilla JS Vercel