Adam Perlis
← Work
04 / 10Launched

Source. An open-source applicant tracking system built to match commercial tools like Lever, feature for feature.

Role
Founder · product, design and engineering
Platform
Web, self-hosted
Status
Launched
Stack
Next.js 16, TypeScript, Prisma, PostgreSQL, Auth.js, Tailwind CSS v4, Tesseract.js, Docker

Overview

Source is an open-source applicant tracking system. It covers the whole hiring loop, from job posting to signed offer, plus the candidate CRM behind it. The goal was to match the commercial tools feature for feature, and ship it as something a company can run and own.

Why I built it

Recruiting data is some of the most sensitive data a company holds: candidate details, compensation, interview feedback, hiring decisions. Teams in regulated industries, in the EU and in the public sector have good reasons to host it themselves. The commercial tools have converged on a common feature set, but the open-source options stopped at the basics, without scheduling automation, structured interviews, offer approvals or a CRM at the same depth.

What it does

  • The full hiring loop. Postings and hosted careers pages, an apply flow that reads PDF, Word, ODT, RTF and plain-text resumes, a kanban pipeline, interview invites, scorecards and offers.
  • A candidate CRM. One contact with many opportunities, full-text search across profiles, resumes and notes, and duplicate merging.
  • Interview intelligence. Transcripts attach to candidates and interviews, and Ask AI answers questions across them, citing the candidates.
  • An agent that flags late replies and overdue scorecards and drafts the follow-up for you to approve.
  • Migration. Brings over full history from ten other ATSs through their APIs, resumable and safe to re-run, after you review the stage mapping.
  • Compliance in the core. GDPR consent, subject-access exports and retention rules, never paywalled.

How it’s built

It’s one Next.js 16 app in TypeScript: the interface, server actions and a public REST API with signed webhooks, on Prisma and Postgres with Auth.js for sign-in. Postgres is the only hard dependency. docker compose up gives a working install, and the same code deploys to Vercel with Neon.

Two decisions I’d make again. Resume text is extracted in-process with open-source libraries, and scanned resumes go through Tesseract in the background, so reading a file costs nothing and needs no API key. And the core has no prompts and calls no model. AI features send their material to a provider over a small open protocol: use Source’s provider or run your own. With neither, the AI features don’t appear.

Where it is now

Source is live. The core is public on GitHub under AGPL-3.0 and self-hosts for free. The hosted version at source-ats.vercel.app runs the infrastructure, email and AI for you, and has a demo workspace with sample candidates that needs no account. The rule I hold to is that customers pay for operations, never to unlock their own records.

Want something like this for your product?

I help founders and teams design, build and ship apps.