Workable
A weekend of work, and real gaps remain.
An applicant tracking system: job posts syndicated to the boards, candidates moving through stages, interview scheduling and scorecards, with the hiring team commenting in one place.
Build the hiring pipeline I actually need instead of Workable — and know what makes this ALMOST. **Syndication is the part you cannot reproduce cheaply.** Getting a job in front of candidates means a feed to each board, most of which want their own format and an account, and several of which charge. The tracking half is a pipeline with stages, which you have built before. STACK - Node 20+ with Fastify, server-rendered HTML - SQLite through better-sqlite3, WAL mode, with FTS5 - Caddy in front THE DATA MODEL - jobs: id, slug, title, department, location, employment_type, description_md, salary_min, salary_max, currency, is_published, opened_at, closed_at - candidates: id, name, email, phone, cv_path, cv_text, linkedin_url, source, created_at - applications: id, job_id, candidate_id, stage_id, answers_json, applied_at, rejected_at, rejection_reason, hired_at - stages: id, job_id, name, position, kind — applied, screening, interview, offer, hired, rejected - stage_history: id, application_id, from_stage_id, to_stage_id, at, actor_id — append-only, and where time-to-hire comes from. It cannot be reconstructed later - interviews: id, application_id, starts_at_utc, ends_at_utc, kind, panel_ids_json, calendar_event_id - scorecards: id, interview_id, interviewer_id, criteria_json, recommendation, notes, submitted_at - comments, attachments, and an append-only activity log THE CAREERS PAGE - Server-rendered, fast, one page per job at a permanent URL - **JSON-LD JobPosting on every one.** That is what puts a role into search engines' job listings, and it is free syndication that needs no account with anybody - A feed in the common XML shapes so a board can pull rather than you pushing - The application form is short: name, email, CV, and the two questions that actually matter. Every extra field costs applicants, measurably, and the ones you lose are the ones with other options - Works on a phone, because most applications start on one SCORECARDS, WHICH IS THE PART WORTH GETTING RIGHT - Criteria defined per job before anybody interviews, not after - Each interviewer submits independently and **cannot see the others until they have submitted.** Without that, the first opinion anchors the rest and the panel is theatre - A recommendation on a fixed scale with a written reason, and the reason is required - Rejection reasons from a list, because that list is the only thing that will ever tell you where the pipeline actually fails SCHEDULING - The same slot problem as any booking tool: availability from calendars, minus busy, minus buffers, intersected across a panel - Every instant UTC, availability as local times with a named zone, both daylight-saving transitions tested - The candidate picks from what fits everybody, with no account WHAT THE LAW MAY WANT - Equal-opportunity questions where they are required, stored **separately from the application** and never visible to anybody making a decision. That separation is the whole point of collecting them - A retention period per application with a sweeper that deletes, and a stated basis for keeping a CV after a rejection - Take advice: the rules differ by country and the penalties are real MEASURING - Time in each stage and time to hire, from stage_history - Pass-through rate per stage, and where candidates from each source fall out - Everything computed at query time WHAT MATTERS MOST JSON-LD on the job page and blind scorecards. The first gets you found without any board; the second is the difference between a hiring process and a series of opinions.
What you lose
- One click posting to dozens of job boards, each with its own feed format and its own account
- A careers page and application form that already work on a phone
- Interview scheduling against everybody’s calendar, which is the scheduling problem again
- Compliance records for equal-opportunity reporting where the law requires them
If you would rather not build
- A JSON-LD JobPosting on your own page, which is free syndication into search
- A shared inbox and a spreadsheet, honestly, for a handful of roles a year
The escape hatch
open source · no votes, no paid placement
OpenCATS
$0An open-source applicant tracking system with pipelines and CV parsing.
opencats/OpenCATSfree · open source
Cal.com
$0Handles the interview scheduling half, including panel availability.
calcom/cal.comfree · open source
Why this verdict
our own opinion · changed only by a person
45/100
Verdict kinda at 45: the pipeline is a fortnight and the careers page is a day, but syndication to the boards is accounts and money, and blind scorecards are the part that makes the rest worth anything.
History
tracked since 14 Aug 2026 · nothing is ever overwritten
Nothing recorded yet. This chart fills in once the page has visitors, votes or prompt copies — it will not draw a flat line to look busy.
Questions about Workable
answered from the record above
Is Workable free?
No — the plan we track is $189 a month. Starter from around $189/month billed monthly for a small number of open roles; higher tiers are priced per employee.
Can you replace Workable by building your own?
ALMOST. A weekend of work, and real gaps remain. Replacement score 45 out of 100, build time a weekend. Read what you lose before you decide.
How much does Workable cost?
$189 a month on Starter — $2,268 a year. Recorded 14 Aug 2026.
What do you lose by replacing Workable?
One click posting to dozens of job boards, each with its own feed format and its own account; A careers page and application form that already work on a phone; Interview scheduling against everybody’s calendar, which is the scheduling problem again; Compliance records for equal-opportunity reporting where the law requires them. If any of those carry weight for you, keep paying.
Is there an open-source alternative to Workable?
Yes: OpenCATS, Cal.com. The prompt on this page is for when you want it your way instead.
Related entries
same category first, most replaced first
Every week, something stops being worth paying for.
New verdicts, prices that moved, entries added. One email a week. Unsubscribe in one click. Nothing is being sent yet — your address is kept here, and the first issue is the first thing it is used for.
free forever · no tracking pixel · stored here, never passed to anyone

