Decorative background gradient
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.

Landing Page

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

Frequently Asked Questions

Does JobPilot automatically apply to jobs for you?

No. JobPilot deliberately avoids an auto-apply feature. It automates the tedious research, aggregating listings, scoring skill match, and researching companies, but the person reviews the results and submits every application themselves.

How does JobPilot calculate a job match score?

GPT-4o compares a user's parsed resume profile against a job's description and generates a 0-100 match score along with a plain-language explanation and a skills-you-have versus skills-gap breakdown.

What does the "Research Company" feature actually do?

It launches an automated browser agent using Browserless and Stagehand that visits the company's website, about page, and tech blog, then GPT-4o synthesizes the findings into an interview-ready dossier covering culture, tech stack, and talking points.

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

Related Case Studies

D2Metrics

SaaS / Payments Analytics · SaaS Platform

D2Metrics

A SaaS analytics platform built from the ground up to replace four disconnected tools with one centralized dashboard, processing 20K-40K records a day with automated sync, granular permissions, and feature flags.

Next.jsNestJSPostgreSQL+4 more
Case StudyView Case Study →
Feedback Worthy

SaaS · SaaS Platform

Feedback Worthy

A SaaS product that lets businesses collect written testimonials through a simple form and turn them into embeddable, on-brand widgets, no developer required, co-built with Osaf Ali Sayed.

Next.jsTypeScriptTailwind CSS+3 more
Case StudyView Case Study →
AgriProduct

Agriculture · Multi-Vendor AgriTech Platform

AgriProduct

A role-based agriculture marketplace where farmers buy trusted supplies, get AI crop diagnosis and Urdu voice advice, and shopkeepers run a full online store, all verified by an admin approval workflow.

Next.jsTypeScriptTailwind CSS+3 more
Case StudyView Case Study →
Power Flow

Community / Knowledge Sharing · Web App

Power Flow

A Stack Overflow-style Q&A platform built from scratch, with voting, tags, a rich text editor with code support, and a full user community with reputation and badges.

Next.jsTailwind CSSMongoDB+2 more
Case StudyView Case Study →
Ghost AI

Developer Tools / Software Architecture · AI Web App

Ghost AI

A collaborative platform that turns a plain-English description into a real system architecture diagram, lets teams edit it together in real time, and generates technical documentation from the finished design.

Next.jsReact FlowLiveblocks+1 more
Case StudyView Case Study →

Trending Topics