Back to Case Studies

Career / Job Search · AI Web App

JobPilot

An AI-powered job hunting assistant that finds real job listings, scores how well you match each one, and automatically researches the company before you apply.

JobPilot

Challenge

Job hunting for tech roles means the same tedious loop over and over: scan job boards, guess whether your skills actually match, then spend an hour researching a company before you even apply. None of that work shows up on a resume, but skipping it means applying blind. The goal was to build a tool that does that prep work automatically, without turning into a spammy "auto-apply" bot that blasts out low-quality applications.

Solution

I built JobPilot with Next.js, connected to the Adzuna API for real job listings and GPT-4o for matching. Upload a resume once and GPT-4o parses it straight into your profile. From there, every job gets a 0-100 match score with a clear skills breakdown, and a "Research Company" button spins up an automated browser agent (Browserless and Stagehand) that reads the company's site and turns it into an interview-ready dossier. The person stays in control the whole time: JobPilot does the research, but you decide which jobs to actually apply to.

Project Overview

JobPilot is an AI-powered job hunting assistant built for developers and tech professionals who are tired of the repetitive admin work that comes before every application: scanning listings, guessing at fit, and researching companies from scratch.

I built it as a full-stack Next.js app that pulls real job listings, scores how well they match your actual skills using GPT-4o, and automatically researches the hiring company so you walk into an application (or an interview) already informed.

The Challenge

The hardest part of job hunting isn't the interviews, it's everything before them. Reading through dozens of listings, figuring out if your stack actually lines up with the requirements, and researching a company's culture and tech stack all take real time, and most of it never shows up as effort a hiring manager can see.

At the same time, fully automated "apply to everything" bots create the opposite problem: they spam companies with low-effort applications that hurt a candidate's reputation instead of helping it. The goal was to automate the tedious research, not the decision-making.

The Solution

JobPilot is built around one idea: AI should do the prep work, but the person still decides where to apply. Every part of the app supports that split, from resume parsing to job matching to company research.

Landing Page That Explains The Pitch

The homepage leads with the actual problem: "Job hunting is hard. Your tools shouldn't be." It backs that up immediately with a live preview of the dashboard, so visitors see the product instead of just reading marketing copy.

JobPilot landing page hero with "Job hunting is hard" headline and a live dashboard preview

The Job Search Dashboard

Once you're in, the dashboard replaces the messy spreadsheet most people use to track a job search. It shows total jobs found, average match rate, companies researched, and jobs found this week, along with charts for search volume and match score distribution over time.

JobPilot dashboard showing total jobs found, average match rate, companies researched, and activity charts

Finding Jobs Worth Applying To

Searching takes two inputs: a job title and a location. JobPilot queries the Adzuna API for real, current listings, then runs each one through GPT-4o to generate a match score against your profile.

Results are shown as a sortable table with company, role, match score, estimated salary, and how recently the listing was found, so the strongest matches are easy to spot at a glance instead of buried in a wall of listings.

JobPilot job search results table showing match scores, salary estimates, and sortable columns

Inside A Job: Match Reasoning And Company Research

Clicking into a listing shows exactly why it scored the way it did: a plain-language explanation from GPT-4o, plus a clear "skills you have" versus "gap skills" breakdown pulled straight from your profile against the job description.

From there, a "Research Company" button kicks off an automated browser agent (Browserless running Stagehand) that visits the company's site, about page, and tech blog, then GPT-4o synthesizes everything it finds into an interview-ready dossier covering culture, tech stack, and things worth mentioning in an interview.

JobPilot job details page showing match score reasoning, a skills-you-have vs skills-gap breakdown, and a Research Company action

A Profile Built For Accurate Matching

None of the matching works without a solid profile behind it, so I built an upload flow where GPT-4o reads an existing resume PDF and automatically fills in skills, work history, and target roles instead of asking users to retype everything by hand.

A profile completeness indicator flags exactly what's still missing (phone, location, education, in this example), and the same profile data can generate a freshly formatted resume PDF on demand.

JobPilot profile page showing a completeness score, resume upload, and auto-filled personal and professional information

Showing The Agent At Work

To make the AI feel less like a black box, the landing page includes a live-style terminal log showing what the agent is actually doing: scanning for matching roles, filtering out ones below a salary threshold, and tailoring a resume for a specific company.

JobPilot landing page section showing a simulated agent log and the "AI-Powered Job Matching" feature explanation

Pairing that transparency with the "Understand your match score" and "Focus on the right roles" messaging reinforces the same idea throughout the app: you always know why the AI recommended something.

Human-in-the-Loop, Not Auto-Apply

I deliberately did not build an auto-apply feature. AI handles the tedious parts, aggregating listings, checking skill overlap, summarizing company research, but the person still reviews match scores, reads the generated dossiers, and submits every application themselves.

That tradeoff means JobPilot can't claim to apply to 100 jobs overnight, but it also means every application a user sends is one they actually chose to send.

Content Structure

The app is organized around the actual job search workflow, not just a list of features.

JobPilot includes clear sections for:

  • Job search and matching
  • Company research and dossiers
  • Profile and resume management
  • Dashboard and search analytics
  • Resume generation

This keeps the experience focused on one flow: find a role, understand the fit, research the company, and apply with confidence.

The Result

JobPilot turns hours of manual job-search admin, reading listings, comparing skills, researching companies, into a few clicks. The AI does the repetitive research, and the dashboard keeps the whole search visible in one place instead of scattered across tabs and spreadsheets.

Key Takeaways

This project was a good exercise in knowing where to draw the line with automation. The AI does the parts that are genuinely tedious and repetitive: parsing resumes, scoring matches, and researching companies. The person still makes the actual decisions.

For JobPilot, that meant building real integrations, a live jobs API, an LLM match engine, and a browser automation agent, and wiring them together into a single, coherent workflow instead of a collection of disconnected AI demos.

Results

  • Replaced manual job-board scanning with real-time listings pulled live from the Adzuna API.
  • Built a GPT-4o match engine that scores every job 0-100 and lists exactly which skills match and which are missing.
  • Automated company research with a browser agent (Browserless and Stagehand) that turns a company's site into an interview-ready dossier in seconds.
  • Cut profile setup down to one resume upload, parsed automatically into a full profile instead of manual data entry.
  • Added a dashboard tracking jobs found, average match rate, and companies researched, so progress is visible instead of scattered across a spreadsheet.
  • Kept a human-in-the-loop design instead of an auto-apply bot, so users decide which jobs to apply to based on the AI's research.
  • Instrumented the app with PostHog analytics to track real usage and search activity.

Technology Stack

Next.jsOpenAI GPT-4oAdzuna APIBrowserless & StagehandPostHog Analytics

Have a similar project in mind? Take a look at my services and recent projects, or get in touch to talk about your idea.

Related Case Studies