JobSignal
AI-powered job application tracker
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
Monorepo with apps/web, apps/extension, and packages/shared — one set of Zod schemas is the contract between all three.
- 2
V1 deliberately stubs the expensive parts (Gmail OAuth, real AI calls, production auth) so the core loop could be proven first.
- 3
Security posture written down before code: no Gmail send/delete scopes, archive only on explicit confirmation, encrypt tokens before production.