JobSync
The self-hosted job search assistant that tracks applications, reviews resumes with AI, and auto-discovers matching roles from Greenhouse, Lever, and Ashby boards — all while keeping your data on your own server.
Repository Health
Technical Analysis
JobSync is a self-hosted companion for the job search: a Next.js 15 application backed by Prisma and SQLite that tracks every application, company, contact, and interview question in one place. It ships as a single Docker Compose stack, so docker compose up gets a working instance on localhost:3737 without a managed backend, external database, or third-party SaaS dependency — the applicant’s data stays on their own server end to end.
On top of the tracker sits a docked AI assistant that reviews resumes, scores how well a resume matches a job description, drafts tailored cover letters, and can add a job straight from a pasted posting after the user confirms the extracted fields. AI calls can run entirely offline through Ollama or against a cloud provider (OpenAI, DeepSeek, Gemini, OpenRouter) configured per-user in Settings, and resumes can be imported from PDF or Word files with AI extracting structured sections for review before anything is saved.
Automated Job Discovery schedules recurring scans of Greenhouse, Lever, and Ashby boards using built-in directories of thousands of companies (Lever alone ships 1,160+), ranks new postings against the user’s target titles, skills, and resume with a local relevance score, and only spends AI budget on the top candidates — no API key required for any of the three providers.
A built-in MCP server lets external AI agents, such as Claude Desktop, add jobs and interview questions directly into JobSync from a chat conversation, resolving or creating companies, titles, and tags by name and reporting back what matched versus what was newly created. Data backup/restore ships as a single zip export (jobs, resumes, tasks, activities, contacts, questions, and uploaded files, with API keys and tokens always excluded) that snapshots before every import so a restore can be undone.
What You Get
- A complete application tracker: jobs, companies, contacts, tasks with time-tracked activities, and a tagged interview question bank, all in one self-hosted instance
- A docked AI assistant that reviews resumes, scores job matches, writes cover letters, and adds jobs from pasted postings, backed by Ollama (local) or OpenAI, DeepSeek, Gemini, and OpenRouter
- Automated job discovery across Greenhouse, Lever, and Ashby company boards on a schedule, with local relevance scoring to keep AI-match spend bounded
- Resume tooling: import from PDF/Word with AI-structured extraction, plus export to Simple or Professional PDF templates
- A built-in MCP server so external AI agents (e.g. Claude Desktop) can add jobs and questions directly from a chat, with your approval
- One-click zip backup and restore covering jobs, resumes, tasks, activities, contacts, and questions, with a pre-import snapshot for safe rollback
Common Use Cases
- Running an active job search entirely on your own infrastructure instead of a hosted tracker that stores your applications and resumes on someone else’s servers
- Letting an automation watch a target list of companies’ Greenhouse/Lever/Ashby boards and surface only the postings that actually match your resume
- Reviewing and iterating on a resume with AI feedback before applying, then generating a tailored cover letter for a specific listing
- Logging interview questions you were actually asked, tagged by skill, so prep compounds across every interview loop instead of resetting each time
- Adding a job or interview question mid-conversation from an AI agent like Claude Desktop instead of switching tabs to enter it manually
Under The Hood
Architecture JobSync is a Next.js App Router application organized into route groups ((auth), dashboard, api) with a server actions layer (one file or directory per domain — job, company, contact, automation, profile, resumeImport) sitting between the UI and a Prisma-over-SQLite persistence layer, whose client is a singleton guarded against duplication under dev hot-reload. Cross-cutting AI concerns are isolated into dedicated modules: a shared AI provider layer, a separate in-app chat assistant with its own tool-calling loop, an MCP server with its own tool implementations for external agents, and a scraper layer with provider-specific fetch/mapper pairs plus a multi-stage automation-run pipeline (match, finalize, persist) for scheduled job discovery. Auth is NextAuth-based session gating enforced in middleware against dashboard and non-auth/MCP API routes. The three AI entry points (in-app assistant, background automation matching, external MCP agents) all funnel through the same provider-registry layer rather than duplicating model-calling logic, though each keeps its own tool definitions rather than sharing one set.
Tech Stack The stack is Next.js with the App Router and a Turbopack dev server, React with TypeScript in strict mode, Prisma over SQLite, and NextAuth for session auth. AI integration runs through the Vercel AI SDK with provider packages for OpenAI, Google, and DeepSeek alongside a dedicated Ollama provider for fully local models, plus the official Model Context Protocol SDK for the MCP server. The UI layer uses Tailwind CSS with Radix-based shadcn-style primitives, Tiptap for rich text editing, Nivo for dashboard charts, and dedicated libraries for resume PDF export and PDF/Word resume import parsing, with node-cron driving scheduled automations. Deployment targets Docker Compose, with optional OpenTelemetry observability compose files, a Jenkins pipeline, and a GitHub Actions release workflow that builds and publishes a container image on a manual version bump.
Code Quality Testing is extensive and layered: a large Vitest unit/integration suite covers actions, AI prompts, scraper providers, and UI components, complemented by a Playwright end-to-end suite and a dedicated evals workspace that runs prompt-behavior regression checks specifically for the resume review, job match, agent chat, and MCP tool flows. TypeScript strict mode is enabled throughout, and CI runs schema generation, linting, and the full test suite on every pull request. Sensitive data handling is deliberate — stored API keys are encrypted at rest using an authenticated cipher with per-record derived keys and random salts, and backup exports explicitly exclude API keys, MCP tokens, and passwords. Comment density is light relative to the codebase’s size, leaning on descriptive naming and small single-purpose files over inline documentation.
What Makes It Unique The most distinctive design choice is treating pasted job postings and AI agent input as untrusted throughout: the in-app assistant is scoped to only the resumes and the single job page currently open, cannot list or search other jobs, and requires explicit user confirmation before any AI-proposed job or edit is written, which limits prompt-injection exposure from a pasted posting. The automated job discovery pipeline is unusual for a personal self-hosted tool — it runs a cheap local relevance-scoring pass across abundant built-in company directories before spending any AI budget, keeping automation cost bounded regardless of how many companies are watched. Exposing an MCP server that both writes structured records and can trigger an AI-scored job match from a plain chat message, usable by any MCP-capable agent, is a comparatively rare integration point for a personal job-tracking tool.
Self-Hosting
Licensing Model MIT licensed — all features, including the AI assistant, automated job discovery, and MCP server, are available in the self-hosted deployment with no license keys or paid tiers.
Self-Hosting Restrictions
None found. No ee/, enterprise/, or pro/ directories exist in the repository, and no license-gating code (requiresLicense, isPro, feature flags) was found in the source.
Cloud vs Self-Hosted A hosted demo is available at demo.jobsync.ca for evaluation, but the project’s only deployment path is self-hosting via Docker Compose — there is no separate paid cloud offering with extra features.
License Key Required No.
Related Apps
OpenClaw
AI Assistants · AI Agents
An open-source AI assistant that runs on your own hardware and meets you in Discord, Slack, WhatsApp, iMessage, Telegram, and 20+ other channels, with native apps for every major platform.
AutoGPT
Automation · Productivity · AI Assistants
Build, deploy, and run autonomous AI agents that automate complex multi-step workflows using a visual block-based graph editor.
Dify
No Code Platforms · AI Development · Developer Tools
Visual LLM workflow platform with RAG pipelines, agent capabilities, and model management for building production AI applications.