{"id":50897597,"url":"https://github.com/adrianhajdin/job_pilot","last_synced_at":"2026-06-16T01:30:52.975Z","repository":{"id":362815264,"uuid":"1258242408","full_name":"adrianhajdin/job_pilot","owner":"adrianhajdin","description":"AI-powered job search assistance for matching roles, tailored resumes, and faster applications.","archived":false,"fork":false,"pushed_at":"2026-06-06T02:42:28.000Z","size":23084,"stargazers_count":11,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-06T04:20:19.314Z","etag":null,"topics":["agentic-workflows","ai","insforge","posthog","zod"],"latest_commit_sha":null,"homepage":"https://jsmastery.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/adrianhajdin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-06-03T11:57:23.000Z","updated_at":"2026-06-06T02:42:31.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/adrianhajdin/job_pilot","commit_stats":null,"previous_names":["adrianhajdin/job_pilot"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/adrianhajdin/job_pilot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adrianhajdin%2Fjob_pilot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adrianhajdin%2Fjob_pilot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adrianhajdin%2Fjob_pilot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adrianhajdin%2Fjob_pilot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/adrianhajdin","download_url":"https://codeload.github.com/adrianhajdin/job_pilot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adrianhajdin%2Fjob_pilot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34387472,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-15T02:00:07.085Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agentic-workflows","ai","insforge","posthog","zod"],"created_at":"2026-06-16T01:30:52.506Z","updated_at":"2026-06-16T01:30:52.970Z","avatar_url":"https://github.com/adrianhajdin.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cbr /\u003e\n    \u003ca href=\"https://youtu.be/9dKA2hq4vf0\" target=\"_blank\"\u003e\n      \u003cimg src=\"public/readme/readme-hero.webp\" alt=\"Project Banner\"\u003e\n    \u003c/a\u003e\n  \u003cbr /\u003e\n\n  \u003cdiv\u003e\n\u003cimg src=\"https://img.shields.io/badge/-Next.js-black?style=for-the-badge\u0026logo=Next.js\u0026logoColor=white\" /\u003e\n\u003cimg src=\"https://img.shields.io/badge/-TypeScript-3178C6?style=for-the-badge\u0026logo=TypeScript\u0026logoColor=white\" /\u003e\n\u003cimg src=\"https://img.shields.io/badge/-Tailwind%20CSS-06B6D4?style=for-the-badge\u0026logo=Tailwind%20CSS\u0026logoColor=white\" /\u003e\n\u003cimg src=\"https://img.shields.io/badge/-shadcn%2Fui-000000?style=for-the-badge\u0026logo=shadcnui\u0026logoColor=white\" /\u003e\n\u003cbr /\u003e\n\u003cimg src=\"https://img.shields.io/badge/-OpenAI%20GPT--4o-412991?style=for-the-badge\u0026logo=OpenAI\u0026logoColor=white\" /\u003e\n\u003cimg src=\"https://img.shields.io/badge/-Stagehand-orange?style=for-the-badge\" /\u003e\n\u003cimg src=\"https://img.shields.io/badge/-Browserbase-000000?style=for-the-badge\" /\u003e\n\u003cimg src=\"https://img.shields.io/badge/-InsForge-darkgreen?style=for-the-badge\" /\u003e\n\n  \u003c/div\u003e\n\n  \u003ch3 align=\"center\"\u003eJobPilot | Match-tracking AI Agent\u003c/h3\u003e\n\n   \u003cdiv align=\"center\"\u003e\n     Build this project step by step with our detailed tutorial on \u003ca href=\"https://www.youtube.com/watch?v=XUkNR-JfHwo\" target=\"_blank\"\u003e\u003cb\u003eJavaScript Mastery\u003c/b\u003e\u003c/a\u003e YouTube. Join the JSM family!\n    \u003c/div\u003e\n\u003c/div\u003e\n \n## 📋 \u003ca name=\"table\"\u003eTable of Contents\u003c/a\u003e\n\n1. ✨ [Introduction](#introduction)\n2. ⚙️ [Tech Stack](#tech-stack)\n3. 🔋 [Features](#features)\n4. 🤸 [Quick Start](#quick-start)\n5. 🔗 [Assets](#links)\n6. 🚀 [More](#more)\n\n## 🚨 Tutorial\n\nThis repository contains the code corresponding to an in-depth tutorial available on our YouTube channel, \u003ca href=\"https://www.youtube.com/@javascriptmastery/videos\" target=\"_blank\"\u003e\u003cb\u003eJavaScript Mastery\u003c/b\u003e\u003c/a\u003e.\n\nIf you prefer visual learning, this is the perfect resource for you. Follow our tutorial to learn how to build projects like these step-by-step in a beginner-friendly manner!\n\n\u003ca href=\"https://youtu.be/9dKA2hq4vf0\" target=\"_blank\"\u003e\u003cimg src=\"https://github.com/sujatagunale/EasyRead/assets/151519281/1736fca5-a031-4854-8c09-bc110e3bc16d\" /\u003e\u003c/a\u003e\n\n## \u003ca name=\"introduction\"\u003e✨ Introduction\u003c/a\u003e\n\nJobPilot is an autonomous, full-stack AI agent that transforms how technical job seekers find work by simultaneously browsing LinkedIn, Wellfound, and YC Jobs to discover, score, and apply to roles. Powered by Next.js, GPT-4o, and Browserbase/Stagehand automation, the app dynamically customizes resumes and executes real browser application forms autonomously. More than just a utility, JobPilot serves as a masterclass in modern agentic engineering, utilizing five core open-source skills—/architect, /remember, /review, /recover, and /imprint—to demonstrate how a single developer with a structured system can rapidly ship durable, production-grade AI software.\n\nAn experimental Browserbase/Stagehand apply path is included for review — see [BROWSERBASE_REPORT.md](BROWSERBASE_REPORT.md) for full details on what was attempted and where it currently stands.\n\nIf you're getting started and need assistance or face any bugs, join our active Discord community with over **50k+** members. It's a place where people help each other out.\n\n\u003ca href=\"https://discord.com/invite/n6EdbFJ\" target=\"_blank\"\u003e\u003cimg src=\"https://github.com/sujatagunale/EasyRead/assets/151519281/618f4872-1e10-42da-8213-1d69e486d02e\" /\u003e\u003c/a\u003e\n\n## \u003ca name=\"tech-stack\"\u003e⚙️ Tech Stack\u003c/a\u003e\n\n- **[Next.js](https://nextjs.org/)** is a full-stack React framework that powers JobPilot's user interface, utilizing the App Router, Server Actions, and API Routes to deliver server-rendered components and high-performance client-side navigation.\n- **[TypeScript](https://www.typescriptlang.org/)** is a strongly typed programming language that builds on JavaScript, ensuring strict type safety across the entire codebase and providing a maintainable environment for complex agent orchestration.\n- **[Tailwind v4](https://tailwindcss.com/)** is a utility-first CSS framework used for rapid UI development, providing a clean, responsive, and easily customized styling infrastructure.\n- **[shadcn/ui](https://ui.shadcn.com/)** is a collection of re-usable UI components built using Radix Primitives and Tailwind CSS, serving as the design system for the app's dashboard, tables, and job inventory views.\n- **[OpenAI GPT-4o](https://openai.com/)** is a highly capable multimodal AI model that serves as the core intelligence engine, parsing job descriptions to compute match scores, tailoring resumes, and driving the form-filling automation logic.\n- **[Stagehand](https://github.com/browserbase/stagehand)** is an AI-driven browser agent built on top of Playwright that uses LLMs to interpret page elements dynamically, allowing JobPilot to execute LinkedIn Easy Apply paths and handle external ATS form-filling.\n- **[Browserbase](https://www.browserbase.com/)** is a headless cloud browser platform that manages infrastructure, session persistence, authentication states, and CAPTCHA solving so background jobs can run through realistic browser instances.\n- **[InsForge](https://insforge.com/)** is a comprehensive backend-as-a-service provider that supplies the relational PostgreSQL database to manage the job inventory, handles user authentication, and provides secure file storage for assets.\n- **[PostHog](https://posthog.com/)** is an all-in-one product analytics platform used to track user engagement, system performance metrics, and the success rates of automated application paths.\n\n\n## \u003ca name=\"features\"\u003e🔋 Features\u003c/a\u003e\n\n👉 **LinkedIn Job Discovery**: Authenticated LinkedIn search utilizing a saved Browserbase context session to fetch job titles, companies, locations, and source/apply URLs automatically.\n\n👉 **Match Scoring**: Advanced evaluation where each discovered job is parsed and scored against your professional profile by an LLM, then ranked by match percentage.\n\n👉 **Job Inventory**: A central, filterable dashboard table that organizes matched jobs with quick access to source links, external apply links, application types, and real-time status.\n\n👉 **Job Details**: A dedicated, per-job review view featuring a transparent match breakdown, full descriptions, direct resume controls, and manual apply triggers.\n\n👉 **Resume Generation \u0026 Tailoring**: Dynamic engine that generates a foundational resume from your user profile, then instantly customizes it to target specific job descriptions.\n\n👉 **LinkedIn Easy Apply**: An experimental, automated application path utilizing saved LinkedIn session contexts and Stagehand DOM mode to submit applications directly.\n\n👉 **External Apply Attempt**: An experimental, hybrid-mode browser path powered by Stagehand designed to navigate complex external ATS forms and complete inputs autonomously.\n\n👉 **Session Recordings**: Complete transparency layer that links every automated application attempt to a Browserbase video recording URL for auditing and debugging.\n\nAnd many more, including code architecture and reusability.\n\n## \u003ca name=\"quick-start\"\u003e🤸 Quick Start\u003c/a\u003e\n\nFollow these steps to set up the project locally on your machine.\n\n**Prerequisites**\n\nMake sure you have the following installed on your machine:\n\n- [Git](https://git-scm.com/)\n- [Node.js](https://nodejs.org/en)\n- [npm](https://www.npmjs.com/) (Node Package Manager)\n\n**Cloning the Repository**\n\n```bash\ngit clone https://github.com/adrianhajdin/job_pilot.git\ncd job_pilot\n```\n\n**Installation**\n\nInstall the project dependencies using npm:\n\n```bash\nnpm install\n```\n\n**Set Up Environment Variables**\n\nCreate a new file named `.env` in the root of your project and add the following content:\n\n```env\nNEXT_PUBLIC_INSFORGE_URL=https://9zb7h4wq.us-east.insforge.app\nNEXT_PUBLIC_INSFORGE_ANON_KEY=\n\nNEXT_PUBLIC_POSTHOG_KEY=\nNEXT_PUBLIC_POSTHOG_HOST=https://eu.i.posthog.com\n\nOPENAI_API_KEY=\n\nBROWSERBASE_API_KEY=\nBROWSERBASE_PROJECT_ID=\n\nADZUNA_APP_ID=\nADZUNA_APP_KEY=\n```\n\nReplace the placeholder values with your real credentials. You can get these by signing up at: [**InsForge**](https://insforge.dev/), [**Browserbase**](https://www.browserbase.com/), [**OpenAI**](https://platform.openai.com/), [**PostHog**](https://posthog.com/), [**Adzuna**](https://www.adzuna.com/)\n**Running the Project**\n\n```bash\nnpm run dev\n```\n\nOpen [http://localhost:3000](http://localhost:3000) in your browser to view the project.\n\n**How It Works**\n\n1. **Set up your profile** — fill in your experience, skills, target role, salary expectations, and upload a base resume PDF\n2. **Connect LinkedIn** — save a LinkedIn browser session via Browserbase so job discovery can run authenticated\n3. **Find Jobs** — the agent searches LinkedIn for roles matching your target, scores each one, and saves strong matches to your job inventory\n4. **Review matches** — browse the `/jobs` list, click into any role for the full description, match breakdown, and apply links\n5. **Tailor and apply** — generate a tailored resume for a specific role, then use the apply links directly or trigger the experimental Browserbase apply attempt\n\n**Browserbase Integration**\n\nSee BROWSERBASE_REPORT.md for a detailed report on how Browserbase and Stagehand are used in this project, including the full history of the apply automation experiments and the current project state.\n\n**Deploy on Vercel**\n\nThe easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template\u0026filter=next.js\u0026utm_source=create-next-app\u0026utm_campaign=create-next-app-readme) from the creators of Next.js.\n\nCheck out the [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.\n\n## \u003ca name=\"links\"\u003e🔗 Assets\u003c/a\u003e\n\nAssets and snippets used in the project can be found in the **[video kit](https://jsm.dev/jobpilot-kit)**.\n\n\u003ca href=\"https://jsm.dev/jobpilot-kit\" target=\"_blank\"\u003e\n  \u003cimg src=\"public/readme/readme-videokit.webp\" alt=\"Video Kit Banner\"\u003e\n\u003c/a\u003e\n\n## \u003ca name=\"more\"\u003e🚀 More\u003c/a\u003e\n\n**Advance your skills with our Pro Course**\n\nEnjoyed creating this project? Dive deeper into our PRO courses for a richer learning adventure. They're packed with\ndetailed explanations, cool features, and exercises to boost your skills. Give it a go!\n\n\u003ca href=\"https://jsm.dev/jobpilot-jsm\" target=\"_blank\"\u003e\n  \u003cimg src=\"public/readme/readme-jsmpro.webp\" alt=\"Project Banner\"\u003e\n\u003c/a\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadrianhajdin%2Fjob_pilot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadrianhajdin%2Fjob_pilot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadrianhajdin%2Fjob_pilot/lists"}