Greenhouse

Applicant tracking and structured hiring software for companies that hire at volume.

NOT REALLY · consider alternatives
price variesestimated build time a weekendreplaced by 0 people

An agent can absolutely build you a candidate tracker: stages, notes, a Kanban board, a scorecard form. That is maybe five percent of what Greenhouse is being paid for. The rest is job board syndication, a hosted careers page that survives traffic, interview scheduling against a dozen calendars, structured interview kits, permissioned access for hiring managers who are not you, audit trails, EEOC and OFCCP reporting, GDPR retention and deletion workflows, and a very long tail of HRIS and background check integrations. Hiring is also one of the most litigated processes in a company, which means the boring parts (who saw what, when, and what got deleted) are the product. Solo or two-person hiring is genuinely fine on a DIY tracker; anything with a legal surface is not.

Build verification: not recorded. How we judge buildability

What you give up

  • Job board syndication and a hosted careers page candidates can find
  • Interview scheduling that reads real interviewer calendars
  • Multi-user permissions, so hiring managers can review without seeing everything
  • Compliance scaffolding: EEOC/OFCCP reporting, consent capture, GDPR retention and deletion, audit logs
  • Integrations with HRIS, background checks, assessments, and every recruiter tool your team already uses

Why people still pay

Because hiring is a multiplayer, legally observed process and a personal tracker is single player. The moment a hiring manager, a recruiter, a coordinator, and an external agency all need scoped access to the same pipeline, and the moment someone asks for adverse impact numbers or a candidate exercises a deletion request, the DIY build stops being a tracker and starts being an unfunded compliance project. Greenhouse also sits at the center of the recruiting tool graph: sourcing extensions, assessments, scheduling, background checks, and the HRIS all assume it exists. Ripping it out means rebuilding those seams by hand.

Your build guide

The stack, security requirements, and agent rules for a focused replacement.

Before you start

  • Node 20+ and a place to run it (localhost is fine)
  • Somewhere to put resume files (local disk)
  • Your own inbox for actually talking to candidates
01
SQLite via better-sqlite3, single file at ./data/ats.db. Schema in migrations run at boot.
02
Data model:.
03
Interface for this applicant tracking / recruiting workflow: a focused applicant tracking / recruiting input, review, and export interface.
engineering roadmap

Implementation plan

1

Phase 1, architecture and data

SQLite via better-sqlite3, single file at ./data/ats.db. Schema in migrations run at boot. Data model:.

2

Phase 2, implement

roles: title, team, status (open/closed), created_at, notes markdown.

3

Phase 3, implement

candidates: name, email, phone, source (referral/inbound/outbound/agency), role_id, stage, created_at, archived_at nullable.

4

Phase 4, review and output

stages are per-role and ordered: default Applied, Screen, Interview, Onsite, Offer, Hired, Rejected. CSV export of all candidates and scorecards, and a JSON dump of the whole DB.

5

Phase 5, recovery and acceptance

Email sending, calendar scheduling, job board posting, a public careers page, multi-user permissions, any OAuth. Verify this invariant with a saved fixture: A rejected or withdrawn request cannot change the approved balance; a policy edit must not rewrite past decisions. State the practical limit: Job board syndication and a hosted careers page candidates can find.

the pro prompt
Build a local-only applicant tracker for a solo or two-person hiring pipeline. No cloud, no accounts, no telemetry.

Stack, non-negotiable:
- Next.js 15, App Router, TypeScript, Tailwind.
- SQLite via better-sqlite3, single file at ./data/ats.db. Schema in migrations run at boot.
- Resume/attachment files stored on local disk under ./data/files, referenced by path in the DB.
- No auth. This runs on localhost for one person.

Data model:
- roles: title, team, status (open/closed), created_at, notes markdown.
- candidates: name, email, phone, source (referral/inbound/outbound/agency), role_id, stage, created_at, archived_at nullable.
- stages are per-role and ordered: default Applied, Screen, Interview, Onsite, Offer, Hired, Rejected.
- notes: candidate_id, body markdown, created_at.
- scorecards: candidate_id, interview_name, per-attribute rating 1-4, overall recommendation (strong no/no/yes/strong yes), free text, created_at.
- attachments: candidate_id, filename, path, uploaded_at.
- events: append-only log of every stage change and field edit with timestamp. Never delete rows here.

UI:
- /roles list, /roles/[id] shows a Kanban board of that role's stages with drag and drop between columns.
- /candidates/[id] is the main screen: header with name, role, stage, source; tabs for Notes, Scorecards, Attachments, History (from events).
- Global search across candidate name, email, and note bodies. Use SQLite FTS5.
- Quick add: paste a name and email, pick a role, done in one modal.
- A per-role funnel count strip: how many in each stage, and median days in stage.

Also include:
- Structured interview kits: per-role, define a named interview with 3-6 attributes to rate. Scorecards are created from a kit so ratings stay comparable.
- CSV export of all candidates and scorecards, and a JSON dump of the whole DB.
- A retention helper: a page listing candidates archived more than N days ago with a one-click purge that deletes their files and PII but keeps an anonymized events row. Default N in .env.

Explicitly out of scope, do not build or stub:
- Email sending, calendar scheduling, job board posting, a public careers page, multi-user permissions, any OAuth.

Deliver a README with setup, `npm run dev`, and a seed script that creates two roles and eight fake candidates. Secrets and config in .env.example.

$ open in your agent (prompt prefilled, you press enter), copy the prompt or copy AGENTS.md · generated from this app's build plan

prior art · use these instead of building, if you'd rather

No prior-art project is listed yet. Compare the scoped build with the paid product before choosing.

share on X ↗

Questions about Greenhouse

Can you build your own Greenhouse with AI?

A full replacement is not the recommended project. An agent can absolutely build you a candidate tracker: stages, notes, a Kanban board, a scorecard form. That is maybe five percent of what Greenhouse is being paid for. The rest is job board syndication, a hosted careers page that survives traffic, interview scheduling against a dozen calendars, structured interview kits, permissioned access for hiring managers who are not you, audit trails, EEOC and OFCCP reporting, GDPR retention and deletion workflows, and a very long tail of HRIS and background check integrations. Hiring is also one of the most litigated processes in a company, which means the boring parts (who saw what, when, and what got deleted) are the product. Solo or two-person hiring is genuinely fine on a DIY tracker; anything with a legal surface is not.

What does the Greenhouse build prompt cover?

The prompt starts with this scope: A local applicant tracker: add roles, drag candidates through stages, attach resumes and notes, and fill structured scorecards, all in one SQLite file. Full-product capabilities excluded from the comparison include: Job board syndication and a hosted careers page candidates can find; Interview scheduling that reads real interviewer calendars; Multi-user permissions, so hiring managers can review without seeing everything. Follow the implementation plan and its prerequisites before expanding the build.

How do I use the prompt, AGENTS.md and agent skills?

Start with the Greenhouse prerequisites and stack, then copy the prompt into your coding agent. Save the project rules as AGENTS.md in the project root. Linked skills are optional packages or source instructions for specific tasks; review their current contents and install only those matching the chosen stack. A skill does not supply API credentials or verify the finished app.

How long will this Greenhouse project take?

The catalogue estimate is a weekend for the limited scope. Setup, integration approvals, debugging, deployment and ongoing maintenance can add time. This is an estimate, not a delivery guarantee.

What would I give up by replacing Greenhouse?

Job board syndication and a hosted careers page candidates can find; Interview scheduling that reads real interviewer calendars; Multi-user permissions, so hiring managers can review without seeing everything; Compliance scaffolding: EEOC/OFCCP reporting, consent capture, GDPR retention and deletion, audit logs; Integrations with HRIS, background checks, assessments, and every recruiter tool your team already uses. Because hiring is a multiplayer, legally observed process and a personal tracker is single player. The moment a hiring manager, a recruiter, a coordinator, and an external agency all need scoped access to the same pipeline, and the moment someone asks for adverse impact numbers or a candidate exercises a deletion request, the DIY build stops being a tracker and starts being an unfunded compliance project. Greenhouse also sits at the center of the recruiting tool graph: sourcing extensions, assessments, scheduling, background checks, and the HRIS all assume it exists. Ripping it out means rebuilding those seams by hand.

What can I use instead of building Greenhouse?

No alternative is listed in this entry yet. That is a gap in this catalogue, not proof that no suitable product exists. Compare the paid product and the proposed scope before committing to a build.

Every week, more subscriptions die.

New verdicts, new prompts, the week's most-doomed apps.
One email. Unsubscribe in one click.

last week:100 Questions · KINDA1of10 · KINDA1Password · KINDA+1090 more

free forever · no scanner spam · the prompt stays on the site, the deaths come to you

$weekly: what got a verdict, what died.