Skip to main content
Back to the lab
Web app + extension

JobSignal

AI-powered job application tracker

View source
Next.jsPrismaChrome

The problem

Job hunting scatters across tabs and spreadsheets: which roles you applied to, what the job description said, when to follow up. By application #40, the tracking overhead competes with the applying.

The build

Everything hangs off one core action — Mark Applied: capture the job, create the application, store the JD, queue AI analysis, and add a timeline event, in one click from a Chrome extension with a LinkedIn extractor. A Next.js dashboard holds the pipeline and per-application timelines.

Stack & choices

  • Next.js · TypeScriptApp Router dashboard and API routes
  • PrismaApplication, job, and timeline data model
  • Chrome MV3Mark Applied extension with LinkedIn and generic extractors
  • ZodShared schemas package keeping web, extension, and API in lockstep

Process notes

  1. 1

    Monorepo with apps/web, apps/extension, and packages/shared — one set of Zod schemas is the contract between all three.

  2. 2

    V1 deliberately stubs the expensive parts (Gmail OAuth, real AI calls, production auth) so the core loop could be proven first.

  3. 3

    Security posture written down before code: no Gmail send/delete scopes, archive only on explicit confirmation, encrypt tokens before production.