Skip to content

MasterSid007/ApplyAI

Repository files navigation

ApplyAI

Local-first job application assistant for sourcing roles, scoring fit, generating tailored application materials, and experimenting with browser-based ATS automation.

ApplyAI is the project I am actively building to solve my own job-search workflow: reduce repetitive application work while keeping human review in the loop for risky or irreversible steps.

Status: Active Development

This repository is a work in progress. The product surface, data model, and automation pipeline are implemented enough to run locally and demonstrate the architecture, but it is not a hosted production service.

Current focus:

  • Reliable local job queue and profile workflow
  • Resume parsing and application material generation with Anthropic
  • Review-first browser automation for Greenhouse, Lever, and agentic ATS flows
  • Safer pauses for captcha, novel questions, and final-submit review

Not production-ready yet:

  • Broad real-world ATS validation across every form variant
  • Multi-user deployment hardening
  • Full regression test suite for live browser automation
  • Hosted demo environment

What Works Today

  • User auth with NextAuth, Prisma, SQLite, and local email/password accounts
  • Resume upload and profile extraction from PDF text
  • Job ingestion from RemoteOK, Greenhouse, Lever, and Arbeitnow
  • Job queue with match scoring, status tracking, and source metadata
  • Claude-powered match scoring, resume tailoring, cover-letter drafting, and tone checks
  • Autopilot, review, and manual operating modes
  • Fast-path submitters for Greenhouse and Lever
  • Playwright-based agentic fallback for Workday, SuccessFactors, iCIMS, Taleo, LinkedIn, Indeed, Glassdoor, ZipRecruiter, and custom apply pages
  • Captcha pause/resume flow with desktop notification
  • Review-before-submit pause so the user approves before the final submit click
  • Saved-answer cache for recurring custom application questions
  • Selector/template cache for repeated ATS form shapes
  • Live AI activity panel for scoring, preparation, submission, pauses, and failures

Why I Built This

As an international student on a tight job-search timeline, I wanted a system that could help me move faster without blindly submitting low-quality applications. ApplyAI is a technical operations project wrapped around a real personal problem: intake jobs, rank them, prepare application assets, and automate repetitive form work while preserving human control where mistakes carry account, reputation, or compliance risk.

The interesting engineering problem is not just "fill forms." It is orchestration under uncertainty: unreliable external sites, changing DOMs, anti-bot controls, rate limits, model cost limits, human approval checkpoints, and durable state when a workflow pauses midway.

Architecture

Job sources
  -> normalization and dedupe
  -> Prisma job/application queue
  -> match scoring and asset generation
  -> mode-aware pipeline tick
  -> ATS strategy selection
  -> fast-path submitter or agentic Playwright flow
  -> captcha/question/review pause states
  -> status, logs, and notifications

Core modules:

  • src/lib/jobSources/: RemoteOK, Greenhouse, Lever, and Arbeitnow ingestion
  • src/lib/applicationPipeline.js: queue orchestration, scoring, preparation, submit handoff
  • src/lib/applySubmit/meta.js: ATS detection and strategy selection
  • src/lib/applySubmit/greenhouse.js: Greenhouse fast-path submitter
  • src/lib/applySubmit/lever.js: Lever fast-path submitter
  • src/lib/applySubmit/agent.js: Playwright + Claude-guided fallback flow
  • src/lib/applySubmit/captcha.js: captcha detection and pause handling
  • src/lib/applySubmit/answerDrafts.js: custom-question answer drafting and cache support
  • src/components/AiPanel.jsx: live activity, approval, resume, and answer chips
  • prisma/schema.prisma: users, profiles, jobs, applications, logs, saved answers, and ATS templates

Operating Modes

Mode Behavior
Manual Jobs can be reviewed and prepared, but the pipeline does not submit automatically.
Review The system scores and prepares applications, then waits for approval before submission.
Autopilot The system scores, prepares, and attempts submission within daily caps, risk checks, and pause conditions.

Even in Autopilot, the app pauses for captcha, unknown custom questions, and review-before-submit checkpoints.

ATS Strategy

Apply target Current strategy
Greenhouse Fast-path form submitter, with agent handoff for complex fields
Lever Fast-path form submitter, with agent handoff for complex fields
Workday, SuccessFactors, iCIMS, Taleo Agentic Playwright flow
LinkedIn, Indeed, Glassdoor, ZipRecruiter Agentic flow, labeled high-risk
Mailto/email-only Manual fallback
Unknown/custom company pages Agentic fallback

The goal is not to bypass platform controls. Captchas and final submission are intentionally human-gated.

Tech Stack

  • Next.js 14.2, React 18
  • Prisma + SQLite
  • NextAuth
  • Anthropic SDK
  • Playwright and Playwright Extra
  • Zod
  • PDF parsing with pdf-parse

Quick Start

npm install
cp .env.example .env.local
npx prisma migrate dev
npm run dev

Open http://localhost:3000.

Required environment values:

DATABASE_URL="file:./dev.db?connection_limit=1"
NEXTAUTH_SECRET="change-me-to-a-long-random-string"
NEXTAUTH_URL="http://localhost:3000"
ANTHROPIC_API_KEY="sk-ant-..."
ANTHROPIC_MODEL="claude-sonnet-4-6"

Notes:

  • postinstall runs prisma generate and installs Playwright Chromium.
  • Browser automation works best with a real Chrome or Edge profile path configured in Settings.
  • Close Chrome/Edge before running automation against the same profile.

Useful Commands

Command Purpose
npm run dev Start the local development server
npm run build Generate Prisma client and build Next.js
npm run start Start the built app
npm run browser:install Install Playwright Chromium manually
npm run db:migrate Create/apply Prisma migrations
npm run db:studio Open Prisma Studio

Verification

Verified locally:

  • Prisma client generation
  • Database migration flow
  • Production build with npm run build
  • ESLint with npm run lint (currently passes with two warnings)
  • Local app startup and unauthenticated redirect to login

Not fully exercised in public verification:

  • Live end-to-end submission across real third-party job boards
  • Real captcha challenge/resume flow
  • Account-risk behavior on LinkedIn, Indeed, Glassdoor, or ZipRecruiter

Safety Notes

ApplyAI is intentionally conservative around irreversible actions. Captchas are paused for the user, high-ban-risk sources are labeled, and final submit review is enabled by default. The app should be treated as a local research/prototype tool, not a guarantee that every external application flow can or should be automated.

About

Local-first job application assistant with Next.js, Prisma, Anthropic, and Playwright ATS automation

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors