[{"data":1,"prerenderedAt":3439},["ShallowReactive",2],{"blog-en-self-hosting-ats-guide":3,"related-en-self-hosting-ats-guide":1647},{"id":4,"title":5,"author":6,"body":7,"date":1631,"description":1632,"extension":1633,"image":1634,"meta":1635,"navigation":1636,"path":1637,"seo":1638,"stem":1639,"tags":1640,"__hash__":1646},"blog\u002Fblog\u002Fen\u002Fself-hosting-ats-guide.md","Self-Hosting Your ATS: The Complete Guide","Joachim Kolle",{"type":8,"value":9,"toc":1590},"minimark",[10,14,17,22,25,33,36,45,49,52,57,71,82,88,105,109,125,132,136,139,240,243,247,340,344,347,479,489,493,496,500,503,513,528,535,539,545,595,600,624,630,639,646,651,670,673,683,686,690,697,703,706,710,713,717,720,814,817,821,827,877,883,913,919,925,957,961,964,968,971,977,1026,1032,1141,1147,1174,1177,1181,1184,1208,1211,1242,1245,1249,1258,1261,1275,1278,1282,1285,1289,1292,1410,1413,1416,1420,1423,1427,1430,1456,1462,1466,1469,1494,1498,1501,1505,1509,1512,1516,1519,1523,1526,1530,1533,1537,1547,1551,1554,1562,1565,1586],[11,12,13],"p",{},"A self-hosted applicant tracking system runs on infrastructure you control — your own server, a rented VPS, or a managed cloud platform. You own every byte of candidate data, pay no per-seat fees, and choose exactly where your recruitment database lives. This guide covers the full lifecycle: architecture, deployment, security, backups, ongoing operations, real costs, and GDPR compliance.",[11,15,16],{},"Most self-hosting guides for ATS software stop at \"install it on a server.\" That is roughly 10% of what you need to know. The other 90% — securing candidate data, automating backups, applying updates without downtime, and keeping infrastructure costs predictable — is what separates a weekend experiment from a production hiring system. This is the guide that covers all of it.",[18,19,21],"h2",{"id":20},"what-self-hosting-means-for-your-applicant-tracking-system","What Self-Hosting Means for Your Applicant Tracking System",[11,23,24],{},"Self-hosting an ATS means deploying the application on infrastructure you manage rather than accessing it through a vendor's cloud platform. The software, the database holding your candidate records, and the file storage containing resumes all run on machines you control.",[11,26,27,28,32],{},"The practical difference is ownership. With a cloud ATS like Greenhouse, Lever, or Workable, your candidate data lives on the vendor's servers. Cancel your subscription and exporting that data is often incomplete — custom fields, pipeline stages, and interview scorecards rarely survive migration intact. With a self-hosted ATS, the database is yours. A standard ",[29,30,31],"code",{},"pg_dump"," command exports everything. No vendor can hold your talent pool hostage.",[11,34,35],{},"Self-hosting does not mean running a server rack in your office closet. Modern self-hosted applications run inside Docker containers on a $5\u002Fmonth cloud server, a managed platform like Railway, or even a laptop for evaluation. The infrastructure overhead has dropped dramatically in the last five years.",[11,37,38,39,44],{},"If you are unfamiliar with ",[40,41,43],"a",{"href":42},"\u002Fblog\u002Fhow-applicant-tracking-systems-work","how applicant tracking systems work",", start there. This guide assumes you understand what an ATS does and focuses on the self-hosting dimension.",[18,46,48],{"id":47},"why-self-host-your-ats-and-when-not-to","Why Self-Host Your ATS (and When Not To)",[11,50,51],{},"Self-hosting is not the right choice for every organization. Here is an honest breakdown.",[53,54,56],"h3",{"id":55},"when-self-hosting-makes-sense","When self-hosting makes sense",[11,58,59,63,64,70],{},[60,61,62],"strong",{},"You need data sovereignty."," Candidate resumes, contact information, and interview feedback are sensitive personal data. For companies subject to ",[40,65,69],{"href":66,"rel":67},"https:\u002F\u002Fgdpr.eu\u002F",[68],"nofollow","GDPR",", CCPA, or industry-specific regulations (healthcare, finance, government), self-hosting can reduce vendor-related compliance overhead significantly. The ATS vendor is no longer hosting your candidate data, which simplifies your processor landscape — though you may still rely on infrastructure processors such as your cloud host, email provider, or CDN.",[11,72,73,76,77,81],{},[60,74,75],{},"You refuse to pay a per-seat tax."," Cloud ATS platforms charge $15–$165 per recruiter per month. A 10-person hiring team on a mid-tier platform pays $12,000+ per year. Self-hosted ATS software has zero per-seat fees — your entire team accesses the system without increasing costs. For a detailed cost comparison, see our ",[40,78,80],{"href":79},"\u002Fblog\u002Ftotal-cost-of-ownership-saas-ats-vs-self-hosted","total cost of ownership analysis",".",[11,83,84,87],{},[60,85,86],{},"You want full control over your hiring workflow."," Self-hosted means you control the source code. Need a custom pipeline stage, a proprietary scoring algorithm, or an integration with an internal HRIS? Fork the repo and build it. No enterprise tier required.",[11,89,90,93,94,99,100,104],{},[60,91,92],{},"You care about AI transparency."," Under the ",[40,95,98],{"href":96,"rel":97},"https:\u002F\u002Fartificialintelligenceact.eu\u002F",[68],"EU AI Act",", many AI systems used in recruitment, employment, and worker management are treated as high-risk and require transparency, documentation, and human oversight. Self-hosted open-source ATS platforms make scoring logic inspectable by design — the source code is public. Reqcore's ",[40,101,103],{"href":102},"\u002Fblog\u002Ftransparent-ai-scoring-vs-black-box-algorithms","roadmap includes transparent AI candidate ranking"," with a visible Matching Logic summary, so recruiters will see exactly why a score was assigned and can verify or override the result. Black-box algorithms in commercial platforms cannot offer this level of auditability.",[53,106,108],{"id":107},"when-cloud-makes-more-sense","When cloud makes more sense",[110,111,112,116,119,122],"ul",{},[113,114,115],"li",{},"Your team has zero technical capacity and no plans to develop it",[113,117,118],{},"You need to be hiring within 24 hours with no setup time",[113,120,121],{},"Your organization is under 5 people and cost savings are negligible",[113,123,124],{},"You require vendor-managed support SLAs for compliance reasons",[11,126,127,128,81],{},"For a deeper comparison of the two approaches, read our ",[40,129,131],{"href":130},"\u002Fblog\u002Fself-hosted-vs-cloud-ats","self-hosted vs cloud ATS breakdown",[18,133,135],{"id":134},"what-you-need-infrastructure-requirements","What You Need: Infrastructure Requirements",[11,137,138],{},"A self-hosted ATS is less resource-hungry than most people assume. Here are the actual requirements for running a production instance:",[140,141,142,158],"table",{},[143,144,145],"thead",{},[146,147,148,152,155],"tr",{},[149,150,151],"th",{},"Requirement",[149,153,154],{},"Minimum",[149,156,157],{},"Recommended",[159,160,161,175,188,201,214,227],"tbody",{},[146,162,163,169,172],{},[164,165,166],"td",{},[60,167,168],{},"CPU",[164,170,171],{},"1 vCPU",[164,173,174],{},"2 vCPU",[146,176,177,182,185],{},[164,178,179],{},[60,180,181],{},"RAM",[164,183,184],{},"2 GB",[164,186,187],{},"4 GB",[146,189,190,195,198],{},[164,191,192],{},[60,193,194],{},"Disk",[164,196,197],{},"10 GB",[164,199,200],{},"20 GB+ (scales with resume uploads)",[146,202,203,208,211],{},[164,204,205],{},[60,206,207],{},"OS",[164,209,210],{},"Any Linux, macOS, Windows (WSL2)",[164,212,213],{},"Ubuntu 22.04 LTS or Debian 12",[146,215,216,221,224],{},[164,217,218],{},[60,219,220],{},"Software",[164,222,223],{},"Docker Engine + Docker Compose",[164,225,226],{},"Same",[146,228,229,234,237],{},[164,230,231],{},[60,232,233],{},"Network",[164,235,236],{},"Internet for initial setup",[164,238,239],{},"Static IP + domain for production",[11,241,242],{},"These requirements handle a hiring team of 10–50 people processing hundreds of applications per month. The database and file storage are the only components that grow with usage, and PostgreSQL handles tens of thousands of candidate records comfortably within these specs.",[53,244,246],{"id":245},"recommended-hosting-providers","Recommended hosting providers",[140,248,249,265],{},[143,250,251],{},[146,252,253,256,259,262],{},[149,254,255],{},"Provider",[149,257,258],{},"Plan",[149,260,261],{},"Monthly Cost",[149,263,264],{},"Best For",[159,266,267,288,304,324],{},[146,268,269,274,277,280],{},[164,270,271],{},[60,272,273],{},"Hetzner",[164,275,276],{},"CX22\u002FCX23 (2 vCPU, 4 GB)",[164,278,279],{},"~€4–5\u002Fmonth",[164,281,282,283,81],{},"Best value. EU data centers (GDPR). Check ",[40,284,287],{"href":285,"rel":286},"https:\u002F\u002Fwww.hetzner.com\u002Fcloud\u002F",[68],"current pricing",[146,289,290,295,298,301],{},[164,291,292],{},[60,293,294],{},"DigitalOcean",[164,296,297],{},"Basic Droplet (1 vCPU, 2 GB)",[164,299,300],{},"$12\u002Fmonth",[164,302,303],{},"Beginner-friendly interface.",[146,305,306,311,314,317],{},[164,307,308],{},[60,309,310],{},"Vultr",[164,312,313],{},"Cloud Compute (1 vCPU, 2 GB)",[164,315,316],{},"~$12\u002Fmonth",[164,318,319,320,81],{},"Global data centers. Verify ",[40,321,287],{"href":322,"rel":323},"https:\u002F\u002Fwww.vultr.com\u002Fpricing\u002F",[68],[146,325,326,331,334,337],{},[164,327,328],{},[60,329,330],{},"Railway",[164,332,333],{},"Hobby",[164,335,336],{},"$5 minimum monthly usage",[164,338,339],{},"One-click deploy. Charges can exceed $5 with higher resource use.",[18,341,343],{"id":342},"three-deployment-paths-compared","Three Deployment Paths Compared",[11,345,346],{},"Not all self-hosting is equal. There are three distinct approaches, each with different trade-offs:",[140,348,349,365],{},[143,350,351],{},[146,352,353,356,359,362],{},[149,354,355],{},"Factor",[149,357,358],{},"VPS (Manual)",[149,360,361],{},"Managed Platform (Railway)",[149,363,364],{},"Local Machine",[159,366,367,383,399,415,431,447,463],{},[146,368,369,374,377,380],{},[164,370,371],{},[60,372,373],{},"Setup time",[164,375,376],{},"1–2 hours",[164,378,379],{},"Under 10 minutes",[164,381,382],{},"5 minutes",[146,384,385,390,393,396],{},[164,386,387],{},[60,388,389],{},"Monthly cost",[164,391,392],{},"€4–$15",[164,394,395],{},"$5 minimum usage",[164,397,398],{},"$0 (your hardware)",[146,400,401,406,409,412],{},[164,402,403],{},[60,404,405],{},"Technical skill",[164,407,408],{},"Basic Linux + Docker",[164,410,411],{},"Click a button",[164,413,414],{},"Install Docker",[146,416,417,422,425,428],{},[164,418,419],{},[60,420,421],{},"Custom domain + HTTPS",[164,423,424],{},"You configure it",[164,426,427],{},"Automatic",[164,429,430],{},"Not applicable",[146,432,433,438,441,444],{},[164,434,435],{},[60,436,437],{},"Production-ready?",[164,439,440],{},"Yes (with hardening)",[164,442,443],{},"Yes",[164,445,446],{},"No (evaluation only)",[146,448,449,454,457,460],{},[164,450,451],{},[60,452,453],{},"Uptime",[164,455,456],{},"You manage it",[164,458,459],{},"Platform manages it",[164,461,462],{},"Depends on your laptop",[146,464,465,470,473,476],{},[164,466,467],{},[60,468,469],{},"Best for",[164,471,472],{},"Full control, EU hosting",[164,474,475],{},"Fast production deploy",[164,477,478],{},"Testing and evaluation",[11,480,481,484,485,488],{},[60,482,483],{},"Reqcore supports all three."," The same ",[29,486,487],{},"docker compose up -d"," command works whether you are on a Hetzner VPS in Helsinki, Railway's managed platform, or your MacBook.",[18,490,492],{"id":491},"step-by-step-deploying-a-self-hosted-ats-with-docker","Step-by-Step: Deploying a Self-Hosted ATS with Docker",[11,494,495],{},"This walkthrough uses Reqcore as the reference implementation. The pattern applies to any Docker-based ATS.",[53,497,499],{"id":498},"the-architecture","The architecture",[11,501,502],{},"A self-hosted ATS typically runs three components inside Docker containers:",[504,505,510],"pre",{"className":506,"code":508,"language":509},[507],"language-text","┌─────────────────────────────────────────────────┐\n│  Your Server                                    │\n│                                                 │\n│  ┌────────────┐  ┌──────────┐  ┌─────────────┐ │\n│  │  ATS App   │  │PostgreSQL│  │   MinIO      │ │\n│  │  (Nuxt 4)  │  │   16     │  │ (S3 Storage) │ │\n│  │  :3000     │  │  :5432   │  │ :9000\u002F:9001  │ │\n│  └─────┬──────┘  └────┬─────┘  └──────┬──────┘ │\n│        │              │               │         │\n│        └──────────────┴───────────────┘         │\n│              Docker Network (internal)          │\n│                                                 │\n│  Only port 3000 is exposed externally           │\n└─────────────────────────────────────────────────┘\n","text",[29,511,508],{"__ignoreMap":512},"",[11,514,515,516,519,520,523,524,527],{},"Reqcore's Docker Compose runs three services: ",[60,517,518],{},"PostgreSQL 16"," for all application data (candidates, jobs, pipeline stages), ",[60,521,522],{},"MinIO"," for S3-compatible document storage (resumes, cover letters), and the ",[60,525,526],{},"Nuxt 4 application"," itself. The database and file storage ports are bound to localhost only — they never touch the public internet.",[11,529,530,531,81],{},"This three-container architecture gives you clear separation of concerns: the application is stateless and can be rebuilt at any time, while your data lives in persistent Docker volumes that survive container restarts and rebuilds. For a broader comparison of self-hosted ATS options that use similar architectures, see our guide to the ",[40,532,534],{"href":533},"\u002Fblog\u002Fbest-open-source-applicant-tracking-systems","best open source applicant tracking systems",[53,536,538],{"id":537},"the-deployment","The deployment",[11,540,541,544],{},[60,542,543],{},"1. Install Docker"," on your server. On Ubuntu\u002FDebian:",[504,546,550],{"className":547,"code":548,"language":549,"meta":512,"style":512},"language-bash shiki shiki-themes github-light github-dark","curl -fsSL https:\u002F\u002Fget.docker.com | sh\nsudo usermod -aG docker $USER\n","bash",[29,551,552,576],{"__ignoreMap":512},[553,554,557,561,565,569,573],"span",{"class":555,"line":556},"line",1,[553,558,560],{"class":559},"sScJk","curl",[553,562,564],{"class":563},"sj4cs"," -fsSL",[553,566,568],{"class":567},"sZZnC"," https:\u002F\u002Fget.docker.com",[553,570,572],{"class":571},"szBVR"," |",[553,574,575],{"class":559}," sh\n",[553,577,579,582,585,588,591],{"class":555,"line":578},2,[553,580,581],{"class":559},"sudo",[553,583,584],{"class":567}," usermod",[553,586,587],{"class":563}," -aG",[553,589,590],{"class":567}," docker",[553,592,594],{"class":593},"sVt8B"," $USER\n",[11,596,597],{},[60,598,599],{},"2. Clone the repository:",[504,601,603],{"className":547,"code":602,"language":549,"meta":512,"style":512},"git clone https:\u002F\u002Fgithub.com\u002Freqcore-inc\u002Freqcore.git\ncd reqcore\n",[29,604,605,616],{"__ignoreMap":512},[553,606,607,610,613],{"class":555,"line":556},[553,608,609],{"class":559},"git",[553,611,612],{"class":567}," clone",[553,614,615],{"class":567}," https:\u002F\u002Fgithub.com\u002Freqcore-inc\u002Freqcore.git\n",[553,617,618,621],{"class":555,"line":578},[553,619,620],{"class":563},"cd",[553,622,623],{"class":567}," reqcore\n",[11,625,626,629],{},[60,627,628],{},"3. Generate secure credentials."," Reqcore includes a setup script that creates cryptographically random passwords for all services:",[504,631,633],{"className":547,"code":632,"language":549,"meta":512,"style":512},".\u002Fsetup.sh\n",[29,634,635],{"__ignoreMap":512},[553,636,637],{"class":555,"line":556},[553,638,632],{"class":559},[11,640,641,642,645],{},"This generates a ",[29,643,644],{},".env"," file with database passwords, authentication secrets, and storage credentials. Never commit or share this file.",[11,647,648],{},[60,649,650],{},"4. Start everything:",[504,652,654],{"className":547,"code":653,"language":549,"meta":512,"style":512},"docker compose up -d\n",[29,655,656],{"__ignoreMap":512},[553,657,658,661,664,667],{"class":555,"line":556},[553,659,660],{"class":559},"docker",[553,662,663],{"class":567}," compose",[553,665,666],{"class":567}," up",[553,668,669],{"class":563}," -d\n",[11,671,672],{},"The first startup takes 2–5 minutes. Docker pulls the PostgreSQL and MinIO images, builds the application using a multi-stage Dockerfile (Alpine-based, non-root user), and runs database migrations automatically.",[11,674,675,678,679,682],{},[60,676,677],{},"5. Open your browser"," at ",[29,680,681],{},"http:\u002F\u002Fyour-server-ip:3000",", create your account, and set up your organization.",[11,684,685],{},"The application itself starts in minutes once Docker and the server are ready. First-time production setup takes longer when you include server provisioning, DNS, TLS, and firewall configuration — budget 1–2 hours for a VPS, or under 10 minutes on a managed platform like Railway.",[53,687,689],{"id":688},"adding-https-and-a-custom-domain","Adding HTTPS and a custom domain",[11,691,692,693,696],{},"For production, place a reverse proxy in front of the application. ",[60,694,695],{},"Caddy"," is the simplest option — it obtains and renews Let's Encrypt certificates automatically:",[504,698,701],{"className":699,"code":700,"language":509},[507],"# Caddyfile\nats.yourcompany.com {\n    reverse_proxy localhost:3000\n}\n",[29,702,700],{"__ignoreMap":512},[11,704,705],{},"Point your DNS A record to your server's IP, start Caddy, and HTTPS is handled. Nginx + Certbot is the alternative for teams already using Nginx.",[18,707,709],{"id":708},"securing-your-self-hosted-ats","Securing Your Self-Hosted ATS",[11,711,712],{},"Candidate data is sensitive personal information. Security is not optional. Here is what a properly secured self-hosted ATS looks like.",[53,714,716],{"id":715},"what-should-ship-by-default","What should ship by default",[11,718,719],{},"Reqcore ships with these security defaults out of the box, requiring zero configuration:",[140,721,722,732],{},[143,723,724],{},[146,725,726,729],{},[149,727,728],{},"Security Control",[149,730,731],{},"Implementation",[159,733,734,744,754,764,774,784,794,804],{},[146,735,736,741],{},[164,737,738],{},[60,739,740],{},"Localhost-bound services",[164,742,743],{},"PostgreSQL, MinIO, and admin tools are never exposed to the internet",[146,745,746,751],{},[164,747,748],{},[60,749,750],{},"CSRF protection",[164,752,753],{},"Automatic via Better Auth",[146,755,756,761],{},[164,757,758],{},[60,759,760],{},"Encrypted tokens",[164,762,763],{},"AES-256-GCM for OAuth tokens",[146,765,766,771],{},[164,767,768],{},[60,769,770],{},"Rate limiting",[164,772,773],{},"Applied to authentication and sensitive endpoints",[146,775,776,781],{},[164,777,778],{},[60,779,780],{},"Security headers",[164,782,783],{},"X-Frame-Options: DENY, X-Content-Type-Options: nosniff, strict Referrer-Policy",[146,785,786,791],{},[164,787,788],{},[60,789,790],{},"Upload validation",[164,792,793],{},"MIME type verification, file size limits, filename sanitization",[146,795,796,801],{},[164,797,798],{},[60,799,800],{},"Server-proxied downloads",[164,802,803],{},"Uploaded files pass through the application — direct storage access is blocked",[146,805,806,811],{},[164,807,808],{},[60,809,810],{},"Deny-by-default access control",[164,812,813],{},"Every API endpoint checks org membership and role permissions",[11,815,816],{},"If the ATS software you are evaluating does not provide these defaults, that is a red flag. Security should be built in, not bolted on.",[53,818,820],{"id":819},"what-you-should-add","What you should add",[11,822,823,826],{},[60,824,825],{},"Firewall."," Restrict inbound traffic to SSH (port 22), HTTP (80), and HTTPS (443):",[504,828,830],{"className":547,"code":829,"language":549,"meta":512,"style":512},"sudo ufw allow 22\u002Ftcp && sudo ufw allow 80\u002Ftcp && sudo ufw allow 443\u002Ftcp\nsudo ufw enable\n",[29,831,832,868],{"__ignoreMap":512},[553,833,834,836,839,842,845,848,850,852,854,857,859,861,863,865],{"class":555,"line":556},[553,835,581],{"class":559},[553,837,838],{"class":567}," ufw",[553,840,841],{"class":567}," allow",[553,843,844],{"class":567}," 22\u002Ftcp",[553,846,847],{"class":593}," && ",[553,849,581],{"class":559},[553,851,838],{"class":567},[553,853,841],{"class":567},[553,855,856],{"class":567}," 80\u002Ftcp",[553,858,847],{"class":593},[553,860,581],{"class":559},[553,862,838],{"class":567},[553,864,841],{"class":567},[553,866,867],{"class":567}," 443\u002Ftcp\n",[553,869,870,872,874],{"class":555,"line":578},[553,871,581],{"class":559},[553,873,838],{"class":567},[553,875,876],{"class":567}," enable\n",[11,878,879,882],{},[60,880,881],{},"Automatic security updates."," On Ubuntu\u002FDebian:",[504,884,886],{"className":547,"code":885,"language":549,"meta":512,"style":512},"sudo apt install unattended-upgrades\nsudo dpkg-reconfigure -plow unattended-upgrades\n",[29,887,888,901],{"__ignoreMap":512},[553,889,890,892,895,898],{"class":555,"line":556},[553,891,581],{"class":559},[553,893,894],{"class":567}," apt",[553,896,897],{"class":567}," install",[553,899,900],{"class":567}," unattended-upgrades\n",[553,902,903,905,908,911],{"class":555,"line":578},[553,904,581],{"class":559},[553,906,907],{"class":567}," dpkg-reconfigure",[553,909,910],{"class":563}," -plow",[553,912,900],{"class":567},[11,914,915,918],{},[60,916,917],{},"Strong credentials."," Use the generated passwords from the setup script. Do not replace them with memorable alternatives.",[11,920,921,924],{},[60,922,923],{},"Keep Docker updated."," Docker vulnerabilities affect all containers on the host:",[504,926,928],{"className":547,"code":927,"language":549,"meta":512,"style":512},"sudo apt update && sudo apt upgrade docker-ce docker-ce-cli containerd.io\n",[29,929,930],{"__ignoreMap":512},[553,931,932,934,936,939,941,943,945,948,951,954],{"class":555,"line":556},[553,933,581],{"class":559},[553,935,894],{"class":567},[553,937,938],{"class":567}," update",[553,940,847],{"class":593},[553,942,581],{"class":559},[553,944,894],{"class":567},[553,946,947],{"class":567}," upgrade",[553,949,950],{"class":567}," docker-ce",[553,952,953],{"class":567}," docker-ce-cli",[553,955,956],{"class":567}," containerd.io\n",[18,958,960],{"id":959},"backups-updates-and-day-2-operations","Backups, Updates, and Day-2 Operations",[11,962,963],{},"Deployment is day 1. Day 2 is where most self-hosting guides stop — and where most self-hosting setups fail. Here is what ongoing operations actually look like.",[53,965,967],{"id":966},"backups","Backups",[11,969,970],{},"Your self-hosted ATS holds candidate data that cannot be recreated. Backups are non-negotiable.",[11,972,973,976],{},[60,974,975],{},"Database backup"," (covers all candidates, jobs, pipeline data):",[504,978,980],{"className":547,"code":979,"language":549,"meta":512,"style":512},"docker compose exec db pg_dump -U reqcore reqcore > backup-$(date +%Y%m%d).sql\n",[29,981,982],{"__ignoreMap":512},[553,983,984,986,988,991,994,997,1000,1003,1005,1008,1011,1014,1017,1020,1023],{"class":555,"line":556},[553,985,660],{"class":559},[553,987,663],{"class":567},[553,989,990],{"class":567}," exec",[553,992,993],{"class":567}," db",[553,995,996],{"class":567}," pg_dump",[553,998,999],{"class":563}," -U",[553,1001,1002],{"class":567}," reqcore",[553,1004,1002],{"class":567},[553,1006,1007],{"class":571}," >",[553,1009,1010],{"class":567}," backup-",[553,1012,1013],{"class":593},"$(",[553,1015,1016],{"class":559},"date",[553,1018,1019],{"class":567}," +%Y%m%d",[553,1021,1022],{"class":593},")",[553,1024,1025],{"class":567},".sql\n",[11,1027,1028,1031],{},[60,1029,1030],{},"Automated daily backups"," via crontab:",[504,1033,1035],{"className":547,"code":1034,"language":549,"meta":512,"style":512},"# Daily at 2 AM, retain 30 days\n0 2 * * * cd \u002Fpath\u002Fto\u002Freqcore && docker compose exec -T db pg_dump -U reqcore reqcore > \u002Fbackups\u002Freqcore-$(date +\\%Y\\%m\\%d).sql && find \u002Fbackups -name \"reqcore-*.sql\" -mtime +30 -delete\n",[29,1036,1037,1043],{"__ignoreMap":512},[553,1038,1039],{"class":555,"line":556},[553,1040,1042],{"class":1041},"sJ8bj","# Daily at 2 AM, retain 30 days\n",[553,1044,1045,1048,1051,1054,1056,1058,1061,1064,1066,1068,1070,1072,1075,1077,1079,1081,1083,1085,1087,1090,1092,1094,1097,1100,1103,1105,1108,1110,1113,1115,1118,1120,1123,1126,1129,1132,1135,1138],{"class":555,"line":578},[553,1046,1047],{"class":559},"0",[553,1049,1050],{"class":563}," 2",[553,1052,1053],{"class":563}," *",[553,1055,1053],{"class":563},[553,1057,1053],{"class":563},[553,1059,1060],{"class":567}," cd",[553,1062,1063],{"class":567}," \u002Fpath\u002Fto\u002Freqcore",[553,1065,847],{"class":593},[553,1067,660],{"class":559},[553,1069,663],{"class":567},[553,1071,990],{"class":567},[553,1073,1074],{"class":563}," -T",[553,1076,993],{"class":567},[553,1078,996],{"class":567},[553,1080,999],{"class":563},[553,1082,1002],{"class":567},[553,1084,1002],{"class":567},[553,1086,1007],{"class":571},[553,1088,1089],{"class":567}," \u002Fbackups\u002Freqcore-",[553,1091,1013],{"class":593},[553,1093,1016],{"class":559},[553,1095,1096],{"class":567}," +",[553,1098,1099],{"class":563},"\\%",[553,1101,1102],{"class":567},"Y",[553,1104,1099],{"class":563},[553,1106,1107],{"class":567},"m",[553,1109,1099],{"class":563},[553,1111,1112],{"class":567},"d",[553,1114,1022],{"class":593},[553,1116,1117],{"class":567},".sql",[553,1119,847],{"class":593},[553,1121,1122],{"class":559},"find",[553,1124,1125],{"class":567}," \u002Fbackups",[553,1127,1128],{"class":563}," -name",[553,1130,1131],{"class":567}," \"reqcore-*.sql\"",[553,1133,1134],{"class":563}," -mtime",[553,1136,1137],{"class":567}," +30",[553,1139,1140],{"class":563}," -delete\n",[11,1142,1143,1146],{},[60,1144,1145],{},"Document backup"," (resumes, cover letters stored in MinIO):",[504,1148,1150],{"className":547,"code":1149,"language":549,"meta":512,"style":512},"docker cp reqcore_minio:\u002Fdata .\u002Fminio-backup-$(date +%Y%m%d)\n",[29,1151,1152],{"__ignoreMap":512},[553,1153,1154,1156,1159,1162,1165,1167,1169,1171],{"class":555,"line":556},[553,1155,660],{"class":559},[553,1157,1158],{"class":567}," cp",[553,1160,1161],{"class":567}," reqcore_minio:\u002Fdata",[553,1163,1164],{"class":567}," .\u002Fminio-backup-",[553,1166,1013],{"class":593},[553,1168,1016],{"class":559},[553,1170,1019],{"class":567},[553,1172,1173],{"class":593},")\n",[11,1175,1176],{},"Test your restore process before you need it. A backup you have never tested is not a backup.",[53,1178,1180],{"id":1179},"updates","Updates",[11,1182,1183],{},"Reqcore includes a built-in update system in the web UI — no command line required for routine updates:",[1185,1186,1187,1193,1200,1205],"ol",{},[113,1188,1189,1190],{},"Go to ",[60,1191,1192],{},"Settings → Updates",[113,1194,1195,1196,1199],{},"Click ",[60,1197,1198],{},"\"Create backup first\""," (recommended)",[113,1201,1195,1202],{},[60,1203,1204],{},"\"Update to vX.Y.Z\"",[113,1206,1207],{},"Wait ~2 minutes, refresh the page",[11,1209,1210],{},"For teams that prefer the CLI:",[504,1212,1214],{"className":547,"code":1213,"language":549,"meta":512,"style":512},"git pull origin main\ndocker compose up --build -d\n",[29,1215,1216,1229],{"__ignoreMap":512},[553,1217,1218,1220,1223,1226],{"class":555,"line":556},[553,1219,609],{"class":559},[553,1221,1222],{"class":567}," pull",[553,1224,1225],{"class":567}," origin",[553,1227,1228],{"class":567}," main\n",[553,1230,1231,1233,1235,1237,1240],{"class":555,"line":578},[553,1232,660],{"class":559},[553,1234,663],{"class":567},[553,1236,666],{"class":567},[553,1238,1239],{"class":563}," --build",[553,1241,669],{"class":563},[11,1243,1244],{},"Database migrations run automatically. Your data is preserved in Docker volumes across rebuilds.",[53,1246,1248],{"id":1247},"monitoring","Monitoring",[11,1250,1251,1252,1257],{},"For production instances, set up basic uptime monitoring using a free service like ",[40,1253,1256],{"href":1254,"rel":1255},"https:\u002F\u002Fuptimerobot.com",[68],"UptimeRobot"," (free tier: 50 monitors). Point it at your ATS URL and get alerted when the instance goes down.",[11,1259,1260],{},"Check service health anytime with:",[504,1262,1264],{"className":547,"code":1263,"language":549,"meta":512,"style":512},"docker compose ps\n",[29,1265,1266],{"__ignoreMap":512},[553,1267,1268,1270,1272],{"class":555,"line":556},[553,1269,660],{"class":559},[553,1271,663],{"class":567},[553,1273,1274],{"class":567}," ps\n",[11,1276,1277],{},"All three containers (app, db, minio) include built-in health checks that Docker monitors continuously.",[53,1279,1281],{"id":1280},"how-much-time-does-maintenance-take","How much time does maintenance take?",[11,1283,1284],{},"Based on running Reqcore in production: 1–2 hours per month. That covers pulling updates, verifying backups, and occasional log review. This is not a full-time job. It is a recurring task comparable to updating any other self-hosted application.",[18,1286,1288],{"id":1287},"the-real-cost-of-self-hosting-your-ats","The Real Cost of Self-Hosting Your ATS",[11,1290,1291],{},"Self-hosting saves money, but dishonest cost comparisons that ignore maintenance are misleading. Here are real numbers:",[140,1293,1294,1310],{},[143,1295,1296],{},[146,1297,1298,1301,1304,1307],{},[149,1299,1300],{},"Cost Item",[149,1302,1303],{},"Self-Hosted (VPS)",[149,1305,1306],{},"Self-Hosted (Railway)",[149,1308,1309],{},"Cloud ATS (10 seats)",[159,1311,1312,1326,1342,1356,1371,1387],{},[146,1313,1314,1318,1321,1323],{},[164,1315,1316],{},[60,1317,220],{},[164,1319,1320],{},"$0 (open-source)",[164,1322,1320],{},[164,1324,1325],{},"$12,000–$19,800\u002Fyr",[146,1327,1328,1333,1336,1339],{},[164,1329,1330],{},[60,1331,1332],{},"Infrastructure",[164,1334,1335],{},"€4–$15\u002Fmo ($48–$180\u002Fyr)",[164,1337,1338],{},"$5+\u002Fmo ($60+\u002Fyr)",[164,1340,1341],{},"Included",[146,1343,1344,1349,1352,1354],{},[164,1345,1346],{},[60,1347,1348],{},"Domain + DNS",[164,1350,1351],{},"~$12\u002Fyr",[164,1353,1351],{},[164,1355,1341],{},[146,1357,1358,1363,1366,1369],{},[164,1359,1360],{},[60,1361,1362],{},"HTTPS (Let's Encrypt)",[164,1364,1365],{},"$0",[164,1367,1368],{},"$0 (automatic)",[164,1370,1341],{},[146,1372,1373,1378,1381,1384],{},[164,1374,1375],{},[60,1376,1377],{},"Maintenance time",[164,1379,1380],{},"1–2 hrs\u002Fmo",[164,1382,1383],{},"\u003C1 hr\u002Fmo",[164,1385,1386],{},"0 hrs",[146,1388,1389,1394,1400,1405],{},[164,1390,1391],{},[60,1392,1393],{},"3-year total",[164,1395,1396,1399],{},[60,1397,1398],{},"$180–$576"," + time",[164,1401,1402,1399],{},[60,1403,1404],{},"$216",[164,1406,1407],{},[60,1408,1409],{},"$36,000–$59,400",[11,1411,1412],{},"The infrastructure cost of self-hosting Reqcore is $5–$15 per month regardless of team size. A 10-person hiring team on a mid-tier cloud ATS pays $1,000–$1,650 per month — and that bill grows with every recruiter added.",[11,1414,1415],{},"The honest trade-off: self-hosting costs time instead of money. Budget 1–2 hours per month for a VPS deployment, or under 1 hour per month on a managed platform. For most organizations, that trade-off saves $10,000+ per year.",[18,1417,1419],{"id":1418},"data-ownership-and-compliance","Data Ownership and Compliance",[11,1421,1422],{},"Self-hosting your ATS gives you something that no SaaS agreement can fully guarantee: actual data ownership.",[53,1424,1426],{"id":1425},"what-you-own","What you own",[11,1428,1429],{},"When you self-host, every piece of recruitment data lives in infrastructure you control:",[110,1431,1432,1438,1444,1450],{},[113,1433,1434,1437],{},[60,1435,1436],{},"Candidate records"," — Names, emails, phone numbers, application history → PostgreSQL database",[113,1439,1440,1443],{},[60,1441,1442],{},"Documents"," — Resumes, cover letters, portfolios → MinIO (S3-compatible storage)",[113,1445,1446,1449],{},[60,1447,1448],{},"Pipeline data"," — Stages, scores, interview feedback, hiring decisions → PostgreSQL database",[113,1451,1452,1455],{},[60,1453,1454],{},"Audit logs"," — Who accessed what, when → PostgreSQL database",[11,1457,1458,1459,1461],{},"Reqcore stores all candidate data in a standard PostgreSQL database with no proprietary encoding. Running ",[29,1460,31],{}," exports your complete recruitment database in a format that works with any PostgreSQL-compatible tool. There is no vendor lock-in at the data layer.",[53,1463,1465],{"id":1464},"gdpr-compliance-advantages","GDPR compliance advantages",[11,1467,1468],{},"Self-hosting can simplify GDPR compliance in three concrete ways:",[1185,1470,1471,1477,1483],{},[113,1472,1473,1476],{},[60,1474,1475],{},"Data residency."," Choose a hosting provider in your jurisdiction. A Hetzner server in Helsinki means candidate data stays in the EU, on infrastructure you control. This can reduce cross-border transfer complexity under Schrems II — though you still need to verify that all supporting services (email, monitoring, CDN) also stay within scope.",[113,1478,1479,1482],{},[60,1480,1481],{},"Right to deletion."," When a candidate requests data deletion under GDPR Article 17, you have direct control over deletion workflows in your own database. Self-hosting gives you direct control over operational deletion, though GDPR erasure still needs to be managed carefully across live systems, logs, and backups — regulators expect erasure to extend to backups as they are cycled out.",[113,1484,1485,1488,1489,81],{},[60,1486,1487],{},"Fewer processors in your chain."," With a cloud ATS, the vendor is a data processor under GDPR, requiring a Data Processing Agreement, security audits, and trust. Self-hosting removes the ATS vendor as host, but it does not necessarily remove all processors from your stack — your infrastructure provider, email service, and other supporting tools may still qualify as processors under ",[40,1490,1493],{"href":1491,"rel":1492},"https:\u002F\u002Fwww.edpb.europa.eu\u002Four-work-tools\u002Four-documents\u002Fguidelines\u002Fguidelines-072020-concepts-controller-and-processor-gdpr_en",[68],"EDPB guidance",[53,1495,1497],{"id":1496},"data-portability","Data portability",[11,1499,1500],{},"The difference between self-hosted and cloud ATS becomes starkest when you need to leave. Cloud ATS exports are typically incomplete — custom fields, pipeline configurations, and scoring data rarely survive. Reqcore uses PostgreSQL and S3, which are industry standards. Your data is portable from day one, with no export limitations.",[18,1502,1504],{"id":1503},"frequently-asked-questions","Frequently Asked Questions",[53,1506,1508],{"id":1507},"how-much-does-it-cost-to-self-host-an-ats","How much does it cost to self-host an ATS?",[11,1510,1511],{},"The software is free (open-source). Infrastructure costs range from $5 to $15 per month for a server that handles teams of 10–50 people. Add ~$12 per year for a domain name. Total first-year cost is $72–$192, compared to $12,000+ for a cloud ATS with 10 seats.",[53,1513,1515],{"id":1514},"is-a-self-hosted-ats-secure-enough-for-candidate-data","Is a self-hosted ATS secure enough for candidate data?",[11,1517,1518],{},"A properly configured self-hosted ATS is more secure than most cloud alternatives for one reason: reduced attack surface. Reqcore binds all internal services (database, file storage) to localhost by default, encrypts tokens with AES-256-GCM, and enforces deny-by-default access control on every endpoint. Your data never travels to a third-party server.",[53,1520,1522],{"id":1521},"do-i-need-a-dedicated-devops-engineer","Do I need a dedicated DevOps engineer?",[11,1524,1525],{},"No. Modern self-hosted applications run inside Docker containers. If you can copy five commands into a terminal, you can deploy a self-hosted ATS. Updates and backups are handled through a web UI. Budget 1–2 hours per month for maintenance.",[53,1527,1529],{"id":1528},"can-i-migrate-from-a-cloud-ats-to-self-hosted","Can I migrate from a cloud ATS to self-hosted?",[11,1531,1532],{},"Yes. Export your candidate data from the cloud ATS (typically as CSV or JSON), then import it into your self-hosted PostgreSQL database using standard database tools. The complexity depends on how proprietary your current vendor's data format is — which is exactly the vendor lock-in problem that self-hosting prevents for the future.",[53,1534,1536],{"id":1535},"what-happens-if-something-breaks","What happens if something breaks?",[11,1538,1539,1540,1542,1543,1546],{},"Your data is stored in Docker volumes that persist across container failures. If the application crashes, ",[29,1541,487],{}," restarts it. If an update fails, roll back with ",[29,1544,1545],{},"git checkout v1.0.0 && docker compose up --build -d",". Pre-update backups (available via the UI) provide an additional safety net.",[18,1548,1550],{"id":1549},"the-bottom-line","The Bottom Line",[11,1552,1553],{},"Self-hosting your applicant tracking system is no longer an advanced engineering project. A Docker Compose setup runs a production-grade ATS on a $5\u002Fmonth server with minimal active setup time. The trade-off is honest: you invest 1–2 hours per month in maintenance, and in return you own your candidate data permanently, pay no per-seat fees, and maintain full control over your hiring infrastructure.",[11,1555,1556,1557,1561],{},"The organizations that benefit most are those with data sovereignty requirements, growing teams that refuse to pay an expanding SaaS bill, and anyone who wants to inspect the code behind AI-driven candidate scoring. Check our ",[40,1558,1560],{"href":1559},"\u002Froadmap","product roadmap"," to see what is coming next. For those teams, self-hosting is not the difficult option — it is the rational one.",[1563,1564],"hr",{},[11,1566,1567],{},[1568,1569,1570,1574,1575,1580,1581,81],"em",{},[40,1571,1573],{"href":1572},"\u002F","Reqcore"," is an open-source (AGPL-3.0) applicant tracking system with no per-seat pricing and full data ownership. Deploy with Docker — ",[40,1576,1579],{"href":1577,"rel":1578},"https:\u002F\u002Fapp.reqcore.com\u002Fauth\u002Fsign-in",[68],"try the live demo"," or read the ",[40,1582,1585],{"href":1583,"rel":1584},"https:\u002F\u002Fgithub.com\u002Freqcore-inc\u002Freqcore",[68],"self-hosting documentation",[1587,1588,1589],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":512,"searchDepth":578,"depth":578,"links":1591},[1592,1593,1598,1601,1602,1607,1611,1617,1618,1623,1630],{"id":20,"depth":578,"text":21},{"id":47,"depth":578,"text":48,"children":1594},[1595,1597],{"id":55,"depth":1596,"text":56},3,{"id":107,"depth":1596,"text":108},{"id":134,"depth":578,"text":135,"children":1599},[1600],{"id":245,"depth":1596,"text":246},{"id":342,"depth":578,"text":343},{"id":491,"depth":578,"text":492,"children":1603},[1604,1605,1606],{"id":498,"depth":1596,"text":499},{"id":537,"depth":1596,"text":538},{"id":688,"depth":1596,"text":689},{"id":708,"depth":578,"text":709,"children":1608},[1609,1610],{"id":715,"depth":1596,"text":716},{"id":819,"depth":1596,"text":820},{"id":959,"depth":578,"text":960,"children":1612},[1613,1614,1615,1616],{"id":966,"depth":1596,"text":967},{"id":1179,"depth":1596,"text":1180},{"id":1247,"depth":1596,"text":1248},{"id":1280,"depth":1596,"text":1281},{"id":1287,"depth":578,"text":1288},{"id":1418,"depth":578,"text":1419,"children":1619},[1620,1621,1622],{"id":1425,"depth":1596,"text":1426},{"id":1464,"depth":1596,"text":1465},{"id":1496,"depth":1596,"text":1497},{"id":1503,"depth":578,"text":1504,"children":1624},[1625,1626,1627,1628,1629],{"id":1507,"depth":1596,"text":1508},{"id":1514,"depth":1596,"text":1515},{"id":1521,"depth":1596,"text":1522},{"id":1528,"depth":1596,"text":1529},{"id":1535,"depth":1596,"text":1536},{"id":1549,"depth":578,"text":1550},"2026-03-20","Learn how to self-host an applicant tracking system with Docker. Covers architecture, deployment, security, backups, real costs, and GDPR compliance.","md","\u002Fog-image.png",{},true,"\u002Fblog\u002Fen\u002Fself-hosting-ats-guide",{"title":5,"description":1632},"blog\u002Fen\u002Fself-hosting-ats-guide",[1641,1642,1643,1644,1645,660],"self-hosted-ats","ats-deployment","data-ownership","open-source-ats","recruitment","GpaMZ8LybP2fLOfTWVW6s8rHyDMXapBbx3mdPXAP-ik",[1648,2193,2863],{"id":1649,"title":1650,"author":6,"body":1651,"date":2182,"description":2183,"extension":1633,"image":1634,"meta":2184,"navigation":1636,"path":2185,"seo":2186,"stem":2187,"tags":2188,"__hash__":2192},"blog\u002Fblog\u002Fen\u002Fbest-ats-with-transparent-ai-scoring.md","Best ATS with Transparent AI Scoring",{"type":8,"value":1652,"toc":2165},[1653,1656,1659,1663,1666,1669,1740,1743,1755,1759,1762,1865,1868,1872,1875,1878,1881,1884,1897,1901,1909,1917,1925,1933,1941,1945,1948,2053,2057,2060,2063,2083,2087,2090,2113,2116,2120,2124,2127,2131,2134,2138,2141,2145,2148,2152,2155,2159,2162],[11,1654,1655],{},"The best ATS with transparent AI scoring is the one that shows why a candidate received a score, lets your team control the criteria, keeps humans responsible for decisions, and preserves enough evidence to audit the process later. Do not buy an AI ATS because it promises a faster shortlist. Buy it only if you can inspect the scoring logic, challenge the recommendation, and explain the outcome to hiring managers, candidates, and compliance reviewers.",[11,1657,1658],{},"For many teams, that means choosing a system that combines configurable scoring rules, visible evidence, role-based permissions, and clean data ownership rather than a black-box ranking model.",[18,1660,1662],{"id":1661},"what-transparent-ai-scoring-should-mean-in-an-ats","What transparent AI scoring should mean in an ATS",[11,1664,1665],{},"Transparent AI scoring means the ATS does more than rank candidates from best to worst. It should show the criteria used, the evidence found in the application, the reasoning behind each score, and the limits of the recommendation.",[11,1667,1668],{},"A useful transparent score usually has five parts:",[140,1670,1671,1683],{},[143,1672,1673],{},[146,1674,1675,1677,1680],{},[149,1676,151],{},[149,1678,1679],{},"What to look for",[149,1681,1682],{},"Why it matters",[159,1684,1685,1696,1707,1718,1729],{},[146,1686,1687,1690,1693],{},[164,1688,1689],{},"Criteria control",[164,1691,1692],{},"Recruiters can define must-have and nice-to-have requirements per role",[164,1694,1695],{},"Prevents the model from inventing hidden priorities",[146,1697,1698,1701,1704],{},[164,1699,1700],{},"Evidence",[164,1702,1703],{},"Scores are tied to resume text, application answers, or structured fields",[164,1705,1706],{},"Lets reviewers verify the recommendation",[146,1708,1709,1712,1715],{},[164,1710,1711],{},"Weighting visibility",[164,1713,1714],{},"The team can see which factors affected the score most",[164,1716,1717],{},"Helps detect over-weighted signals",[146,1719,1720,1723,1726],{},[164,1721,1722],{},"Human override",[164,1724,1725],{},"Hiring teams can disagree, annotate, and move candidates manually",[164,1727,1728],{},"Keeps AI advisory rather than decisive",[146,1730,1731,1734,1737],{},[164,1732,1733],{},"Audit trail",[164,1735,1736],{},"Changes, prompts, versions, scores, and decisions are retained",[164,1738,1739],{},"Supports compliance, debugging, and internal review",[11,1741,1742],{},"This is also where open-source and self-hosted systems can create a strategic advantage. If you can inspect the product, control the data, and decide how scoring rules evolve, AI becomes a governed workflow rather than a vendor dependency.",[11,1744,1745,1746,1750,1751,81],{},"For broader context, read Reqcore's guide to ",[40,1747,1749],{"href":1748},"\u002Fblog\u002Fen\u002Fai-in-applicant-tracking-systems\u002F","how AI works in modern applicant tracking systems"," and the deeper explanation of ",[40,1752,1754],{"href":1753},"\u002Fblog\u002Fen\u002Fai-candidate-scoring-ats\u002F","AI candidate scoring inside an ATS",[18,1756,1758],{"id":1757},"best-ats-options-with-transparent-ai-scoring","Best ATS options with transparent AI scoring",[11,1760,1761],{},"There is no universal winner. The best choice depends on whether you need a full ATS, an AI screening layer on top of an existing ATS, or an open-source recruiting system where transparency and data ownership are core requirements.",[140,1763,1764,1780],{},[143,1765,1766],{},[146,1767,1768,1771,1774,1777],{},[149,1769,1770],{},"Tool",[149,1772,1773],{},"Best fit",[149,1775,1776],{},"Transparency strengths",[149,1778,1779],{},"Watch-outs",[159,1781,1782,1795,1809,1823,1837,1851],{},[146,1783,1784,1786,1789,1792],{},[164,1785,1573],{},[164,1787,1788],{},"Teams that want open-source ATS control with transparent recruiting workflows",[164,1790,1791],{},"Data ownership, configurable recruiting process, open-source direction",[164,1793,1794],{},"Validate current AI workflow needs before relying on any automated scoring",[146,1796,1797,1800,1803,1806],{},[164,1798,1799],{},"Nova",[164,1801,1802],{},"Teams that want AI scoring layered into Lever, Teamtailor, or Ashby",[164,1804,1805],{},"Resume citations, no hidden signals, audit trails, human override",[164,1807,1808],{},"Works as an add-on rather than a standalone ATS",[146,1810,1811,1814,1817,1820],{},[164,1812,1813],{},"A.Minds",[164,1815,1816],{},"Teams overwhelmed by applicant volume in an existing ATS",[164,1818,1819],{},"Custom criteria, transparent reasoning, ATS sync",[164,1821,1822],{},"Credit-based pricing can matter at high volume",[146,1824,1825,1828,1831,1834],{},[164,1826,1827],{},"EvalMetric",[164,1829,1830],{},"Recruiting agencies and HR teams that need bulk CV scoring",[164,1832,1833],{},"Explainable AI scoring, 1-100 match score, detailed reasoning",[164,1835,1836],{},"Verify retention, compliance, and integration needs before rollout",[146,1838,1839,1842,1845,1848],{},[164,1840,1841],{},"Kreativs",[164,1843,1844],{},"Enterprises and agencies wanting an AI-native ATS",[164,1846,1847],{},"Evidence-backed decisions, auditable scoring, human control language",[164,1849,1850],{},"Enterprise positioning may be more than small teams need",[146,1852,1853,1856,1859,1862],{},[164,1854,1855],{},"Talecto",[164,1857,1858],{},"Teams that want multi-dimension scoring in an ATS workflow",[164,1860,1861],{},"Score breakdowns across skills, experience, education, and insights",[164,1863,1864],{},"Be careful with culture-fit or predictive-success claims",[11,1866,1867],{},"The key is not whether a vendor uses the word \"transparent.\" The key is whether your hiring team can reconstruct why a candidate was advanced, rejected, or flagged.",[18,1869,1871],{"id":1870},"_1-reqcore-best-for-open-source-control-and-data-ownership","1. Reqcore: best for open-source control and data ownership",[11,1873,1874],{},"Reqcore is the strongest fit when your team wants an open-source ATS built around data ownership, transparent recruiting workflows, and long-term control over candidate data.",[11,1876,1877],{},"That matters because transparent AI scoring is not only a feature. It is a governance problem. If the scoring layer sits inside a closed vendor system, you may get an explanation in the UI but still lack control over retention, export, model changes, permissions, and future workflow changes.",[11,1879,1880],{},"Reqcore is especially relevant for teams that want to keep candidate data under their own control, avoid AI as the final decision-maker, design scoring rules around role-specific evidence, and reduce vendor lock-in before AI becomes deeply embedded in the process.",[11,1882,1883],{},"The trade-off is that teams should evaluate the exact AI workflow they need before committing. If your immediate requirement is a mature plug-in that already syncs scores into Greenhouse, Lever, or Ashby, a specialist AI screening layer may be faster. If your bigger constraint is ownership and long-term recruiting infrastructure, open source deserves serious consideration.",[11,1885,1886,1887,1891,1892,1896],{},"Start with ",[40,1888,1890],{"href":1889},"\u002Fblog\u002Fen\u002Ftransparent-ai-scoring-vs-black-box-algorithms\u002F","transparent AI scoring vs black-box algorithms"," and ",[40,1893,1895],{"href":1894},"\u002Fblog\u002Fen\u002Fconfigure-ai-scoring-rules-hiring-values\u002F","how to configure AI scoring rules that reflect your hiring values"," before designing your evaluation process.",[18,1898,1900],{"id":1899},"vendor-notes-to-verify-during-evaluation","Vendor notes to verify during evaluation",[11,1902,1903,1904,81],{},"Nova is a strong fit when you already use Lever, Teamtailor, or Ashby and want evidence-backed scoring without replacing your core ATS. Its documentation describes resume citations, no hidden weightings or undisclosed factors, logged and versioned LLM calls, and human override controls. Source: ",[40,1905,1908],{"href":1906,"rel":1907},"https:\u002F\u002Fnova.dweet.com\u002Fdocs\u002Ffeatures\u002Fscoring-ranking-overview",[68],"Nova AI Candidate Scoring and Ranking documentation",[11,1910,1911,1912,81],{},"A.Minds is positioned for teams overwhelmed by application volume. Its site highlights ATS integrations, granular scoring control, transparent reasoning, GDPR and CCPA positioning, and bidirectional ATS sync. The watch-out is cost at scale, so model credits per role before rolling it out broadly. Source: ",[40,1913,1916],{"href":1914,"rel":1915},"https:\u002F\u002Fwww.aminds.ai\u002F",[68],"A.Minds AI screening and pricing page",[11,1918,1919,1920,81],{},"EvalMetric focuses on bulk CV scoring for HR teams and recruiting agencies. Its workflow includes uploading a job description, creating an evaluation framework, collecting candidates, and assigning a 1-100 match score with reasoning. Treat the number as triage, not truth. Source: ",[40,1921,1924],{"href":1922,"rel":1923},"https:\u002F\u002Fevalmetric.com\u002F",[68],"EvalMetric AI candidate scoring platform",[11,1926,1927,1928,81],{},"Kreativs positions itself as an AI-native ATS for enterprises and agencies, with evidence-backed candidate evaluation, human decision-making, and auditable scoring. It is worth evaluating when you want AI embedded across the recruiting workflow rather than bolted onto an old process. Source: ",[40,1929,1932],{"href":1930,"rel":1931},"https:\u002F\u002Fwww.kreativs.io\u002F",[68],"Kreativs AI-native ATS",[11,1934,1935,1936,81],{},"Talecto presents score breakdowns across skills match, experience level, education, and AI-generated insights. That can help managers review more than a single opaque score, but subjective categories such as culture fit need tight governance. Source: ",[40,1937,1940],{"href":1938,"rel":1939},"https:\u002F\u002Fwww.talecto.com\u002Fen\u002Ffeatures\u002Fcandidate-scoring",[68],"Talecto AI candidate scoring",[18,1942,1944],{"id":1943},"the-transparent-ai-scoring-scorecard","The transparent AI scoring scorecard",[11,1946,1947],{},"Use this scorecard before buying an AI ATS or AI screening layer. A vendor that cannot answer these questions clearly is not ready to influence hiring decisions.",[140,1949,1950,1963],{},[143,1951,1952],{},[146,1953,1954,1957,1960],{},[149,1955,1956],{},"Question",[149,1958,1959],{},"Strong answer",[149,1961,1962],{},"Weak answer",[159,1964,1965,1976,1987,1998,2009,2020,2031,2042],{},[146,1966,1967,1970,1973],{},[164,1968,1969],{},"Can we define role-specific scoring criteria?",[164,1971,1972],{},"Yes, criteria are editable per role and stored with the job",[164,1974,1975],{},"The model decides what matters",[146,1977,1978,1981,1984],{},[164,1979,1980],{},"Can we see evidence for each score?",[164,1982,1983],{},"Yes, each score links to application data or resume excerpts",[164,1985,1986],{},"Only a summary is shown",[146,1988,1989,1992,1995],{},[164,1990,1991],{},"Can we change weights?",[164,1993,1994],{},"Yes, with change history",[164,1996,1997],{},"No, weighting is proprietary",[146,1999,2000,2003,2006],{},[164,2001,2002],{},"Is every score auditable later?",[164,2004,2005],{},"Yes, scores, versions, users, and timestamps are retained",[164,2007,2008],{},"Only current results are visible",[146,2010,2011,2014,2017],{},[164,2012,2013],{},"Can humans override the ranking?",[164,2015,2016],{},"Yes, with notes and permissions",[164,2018,2019],{},"The system auto-rejects candidates",[146,2021,2022,2025,2028],{},[164,2023,2024],{},"Can we export candidate and scoring data?",[164,2026,2027],{},"Yes, in usable formats",[164,2029,2030],{},"Export is limited or unclear",[146,2032,2033,2036,2039],{},[164,2034,2035],{},"Are bias checks supported?",[164,2037,2038],{},"Yes, with documented methods and reporting",[164,2040,2041],{},"The vendor says the model is unbiased",[146,2043,2044,2047,2050],{},[164,2045,2046],{},"Does the vendor explain legal responsibilities?",[164,2048,2049],{},"Yes, with jurisdiction-specific documentation",[164,2051,2052],{},"Compliance is handled with vague claims",[18,2054,2056],{"id":2055},"compliance-signals-to-check-before-using-ai-scoring","Compliance signals to check before using AI scoring",[11,2058,2059],{},"AI scoring in hiring is increasingly regulated, and legal responsibility does not disappear when a vendor provides the model. In the United States, the EEOC lists AI-related employment resources and technical assistance on adverse impact, ADA issues, and automated decision systems. In New York City, Local Law 144 requires a bias audit, public audit information, and candidate or employee notices before certain automated employment decision tools are used. In the European Union, the AI Act treats some employment-related AI systems as high-risk, including systems used to analyze and filter job applications or evaluate candidates.",[11,2061,2062],{},"That does not mean every AI scoring feature is illegal or unusable. It means buyers should ask whether the tool materially influences selection decisions, whether candidates can be rejected automatically, whether notices or bias audits are required, whether adverse impact can be measured where legally appropriate, and whether a human review path exists before rejection.",[11,2064,2065,2066,2071,2072,2077,2078,81],{},"Use official sources for the legal baseline: ",[40,2067,2070],{"href":2068,"rel":2069},"https:\u002F\u002Fwww.eeoc.gov\u002Feeoc-publications",[68],"EEOC AI resources",", ",[40,2073,2076],{"href":2074,"rel":2075},"https:\u002F\u002Fwww.nyc.gov\u002Fsite\u002Fdca\u002Fabout\u002Fautomated-employment-decision-tools.page",[68],"NYC Automated Employment Decision Tools guidance",", and the European Commission's ",[40,2079,2082],{"href":2080,"rel":2081},"https:\u002F\u002Fdigital-strategy.ec.europa.eu\u002Fen\u002Ffaqs\u002Fnavigating-ai-act",[68],"AI Act FAQ",[18,2084,2086],{"id":2085},"how-to-run-a-proof-of-concept-before-buying","How to run a proof of concept before buying",[11,2088,2089],{},"Do not evaluate transparent AI scoring with a sales demo alone. Run a proof of concept using real hiring scenarios, anonymized where necessary:",[1185,2091,2092,2095,2098,2101,2104,2107,2110],{},[113,2093,2094],{},"Pick two open roles with different requirements.",[113,2096,2097],{},"Define must-have, strong-signal, and weak-signal criteria before uploading candidates.",[113,2099,2100],{},"Test 30 to 50 historical applications where the team already knows the outcome.",[113,2102,2103],{},"Compare AI ranking against human review, not just final hires.",[113,2105,2106],{},"Inspect explanations for false positives and false negatives.",[113,2108,2109],{},"Change one criterion and confirm the score changes predictably.",[113,2111,2112],{},"Export the results and confirm you can audit them later.",[11,2114,2115],{},"The strongest tools make disagreement productive. If a recruiter can explain why the score is wrong, the system is transparent enough to improve. If the team cannot tell why the score exists, it is not transparent AI scoring.",[18,2117,2119],{"id":2118},"faq","FAQ",[53,2121,2123],{"id":2122},"what-is-the-best-ats-with-transparent-ai-scoring","What is the best ATS with transparent AI scoring?",[11,2125,2126],{},"The best ATS with transparent AI scoring is the one that shows criteria, evidence, weighting, human overrides, and audit history. Reqcore is a strong fit for open-source control and data ownership, while tools like Nova, A.Minds, EvalMetric, Kreativs, and Talecto may fit teams that want AI scoring layered into or bundled with existing recruiting workflows.",[53,2128,2130],{"id":2129},"is-ai-candidate-scoring-safe-to-use","Is AI candidate scoring safe to use?",[11,2132,2133],{},"AI candidate scoring can be useful when it supports human review, uses job-related criteria, and keeps a clear audit trail. It becomes risky when it auto-rejects candidates, uses hidden signals, or cannot explain why a candidate was ranked lower.",[53,2135,2137],{"id":2136},"should-an-ats-automatically-reject-candidates-based-on-ai-scores","Should an ATS automatically reject candidates based on AI scores?",[11,2139,2140],{},"Usually no. AI scores should triage and summarize evidence, not make final hiring decisions. Automatic rejection increases legal, fairness, and candidate-experience risk unless the criteria are narrow, validated, and carefully governed.",[53,2142,2144],{"id":2143},"what-is-the-difference-between-transparent-ai-scoring-and-explainable-ai","What is the difference between transparent AI scoring and explainable AI?",[11,2146,2147],{},"Explainable AI usually means the system provides a reason for its output. Transparent AI scoring goes further: it should expose criteria, evidence, weighting, data sources, change history, and human review controls inside the hiring workflow.",[53,2149,2151],{"id":2150},"do-open-source-ats-tools-make-ai-scoring-more-transparent","Do open-source ATS tools make AI scoring more transparent?",[11,2153,2154],{},"They can, but only if the scoring workflow is designed that way. Open source improves inspection, portability, and control, but the team still needs clear criteria, audit logs, human oversight, and documented governance.",[18,2156,2158],{"id":2157},"bottom-line","Bottom line",[11,2160,2161],{},"Transparent AI scoring is worth paying for only if it makes hiring decisions more reviewable, not merely faster. Choose an ATS or AI screening layer that gives your team control over criteria, evidence for every score, human override, exportable data, and an audit trail.",[11,2163,2164],{},"The highest-upside move is to treat AI scoring as recruiting infrastructure. The teams that win will build trusted, explainable, and data-owned hiring systems they can improve over time.",{"title":512,"searchDepth":578,"depth":578,"links":2166},[2167,2168,2169,2170,2171,2172,2173,2174,2181],{"id":1661,"depth":578,"text":1662},{"id":1757,"depth":578,"text":1758},{"id":1870,"depth":578,"text":1871},{"id":1899,"depth":578,"text":1900},{"id":1943,"depth":578,"text":1944},{"id":2055,"depth":578,"text":2056},{"id":2085,"depth":578,"text":2086},{"id":2118,"depth":578,"text":2119,"children":2175},[2176,2177,2178,2179,2180],{"id":2122,"depth":1596,"text":2123},{"id":2129,"depth":1596,"text":2130},{"id":2136,"depth":1596,"text":2137},{"id":2143,"depth":1596,"text":2144},{"id":2150,"depth":1596,"text":2151},{"id":2157,"depth":578,"text":2158},"2026-05-01","Compare ATS tools with transparent AI scoring, explainable rankings, audit trails, and human oversight before choosing your hiring system.",{},"\u002Fblog\u002Fen\u002Fbest-ats-with-transparent-ai-scoring",{"title":1650,"description":2183},"blog\u002Fen\u002Fbest-ats-with-transparent-ai-scoring",[2189,2190,2191,1645],"transparent-ai-scoring","ai-ats","ats","7XbL1OufeQjD6c6Z3ovWevbTaRoWw-IOeq1gVcJHaPg",{"id":2194,"title":2195,"author":6,"body":2196,"date":2852,"description":2853,"extension":1633,"image":1634,"meta":2854,"navigation":1636,"path":2855,"seo":2856,"stem":2857,"tags":2858,"__hash__":2862},"blog\u002Fblog\u002Fen\u002Fbest-ats-for-recruiting-agencies-open-source.md","Best ATS for Recruiting Agencies: Open Source Options",{"type":8,"value":2197,"toc":2834},[2198,2214,2220,2314,2318,2321,2324,2396,2404,2408,2411,2464,2467,2471,2478,2481,2484,2488,2501,2504,2507,2514,2518,2523,2526,2532,2536,2549,2552,2556,2565,2568,2676,2684,2688,2691,2765,2768,2772,2778,2783,2788,2793,2796,2798,2802,2805,2809,2812,2816,2819,2823,2826,2828,2831],[11,2199,2200,2201,2071,2204,2071,2207,2209,2210,2213],{},"The best ATS for recruiting agencies is not always the most feature-heavy enterprise platform. Agencies need a system that can manage candidates, clients, job orders, submissions, placements, and communication history without trapping the talent database in a vendor-controlled SaaS account. For open source options, ",[60,2202,2203],{},"Hire Gnome",[60,2205,2206],{},"OpenCATS",[60,2208,1573],{},", and ",[60,2211,2212],{},"FreeATS"," are the most relevant starting points.",[11,2215,2216,2217],{},"If your agency manages multiple client companies, the better question is: ",[60,2218,2219],{},"can this system protect our candidate database while helping recruiters make more placements per week?",[140,2221,2222,2238],{},[143,2223,2224],{},[146,2225,2226,2229,2232,2235],{},[149,2227,2228],{},"Platform",[149,2230,2231],{},"Best fit for recruiting agencies",[149,2233,2234],{},"Open source fit",[149,2236,2237],{},"Main trade-off",[159,2239,2240,2255,2270,2285,2300],{},[146,2241,2242,2246,2249,2252],{},[164,2243,2244],{},[60,2245,2203],{},[164,2247,2248],{},"Small staffing agencies that need client\u002Fjob order workflows",[164,2250,2251],{},"Strong agency focus",[164,2253,2254],{},"Newer project, smaller ecosystem",[146,2256,2257,2261,2264,2267],{},[164,2258,2259],{},[60,2260,2206],{},[164,2262,2263],{},"Agencies that want a proven free recruiting system",[164,2265,2266],{},"Mature, recruiter-oriented",[164,2268,2269],{},"Older interface and manual operations",[146,2271,2272,2276,2279,2282],{},[164,2273,2274],{},[60,2275,1573],{},[164,2277,2278],{},"Modern teams that value self-hosting and data ownership",[164,2280,2281],{},"Strong technical foundation",[164,2283,2284],{},"Not a full agency CRM yet",[146,2286,2287,2291,2294,2297],{},[164,2288,2289],{},[60,2290,2212],{},[164,2292,2293],{},"Small teams that want a simple open source ATS",[164,2295,2296],{},"Lightweight and accessible",[164,2298,2299],{},"Less agency-specific than Hire Gnome\u002FOpenCATS",[146,2301,2302,2308,2310,2312],{},[164,2303,2304,2305,2307],{},"For a broader non-agency comparison, start with the ",[40,2306,534],{"href":533},". This guide focuses specifically on recruiting agencies, staffing firms, and headhunters.",[164,2309],{},[164,2311],{},[164,2313],{},[18,2315,2317],{"id":2316},"what-recruiting-agencies-need-from-an-ats","What recruiting agencies need from an ATS",[11,2319,2320],{},"A recruiting agency ATS has to support two pipelines at once: the candidate pipeline and the client pipeline. In-house hiring teams usually track applicants against roles inside one company. Agencies must also track client companies, contacts, signed agreements, job orders, candidate submissions, interview feedback, placements, and sometimes invoices or commissions.",[11,2322,2323],{},"That difference changes the buying criteria.",[140,2325,2326,2335],{},[143,2327,2328],{},[146,2329,2330,2333],{},[149,2331,2332],{},"Agency requirement",[149,2334,1682],{},[159,2336,2337,2347,2357,2367,2377,2387],{},[146,2338,2339,2344],{},[164,2340,2341],{},[60,2342,2343],{},"Client and contact records",[164,2345,2346],{},"Recruiters need to know who owns the relationship, who approves candidates, and who gives feedback.",[146,2348,2349,2354],{},[164,2350,2351],{},[60,2352,2353],{},"Job orders, not just jobs",[164,2355,2356],{},"Agency roles often come from client demand, not internal workforce planning.",[146,2358,2359,2364],{},[164,2360,2361],{},[60,2362,2363],{},"Candidate ownership and source history",[164,2365,2366],{},"The same candidate may fit several clients over time.",[146,2368,2369,2374],{},[164,2370,2371],{},[60,2372,2373],{},"Submission tracking",[164,2375,2376],{},"Agencies need to know which candidates were sent to which clients and when.",[146,2378,2379,2384],{},[164,2380,2381],{},[60,2382,2383],{},"Client review workflow",[164,2385,2386],{},"Hiring managers need a clean way to review submitted candidates.",[146,2388,2389,2393],{},[164,2390,2391],{},[60,2392,1497],{},[164,2394,2395],{},"The candidate database is the agency's long-term asset.",[11,2397,2398,2399,2403],{},"This is why many agency SERPs are dominated by proprietary ATS+CRM suites such as Bullhorn, Recruiterflow, Zoho Recruit, Dynamics ATS, and newer AI-native agency tools. Those platforms often have polished workflows, but the trade-off is subscription cost, contract lock-in, and limited control over candidate data. If data ownership is central, read ",[40,2400,2402],{"href":2401},"\u002Fblog\u002Fdata-ownership-recruiting-technology","why data ownership matters in recruiting technology"," before choosing.",[18,2405,2407],{"id":2406},"the-agency-ats-decision-framework","The agency ATS decision framework",[11,2409,2410],{},"Use this four-part framework before you compare tools:",[140,2412,2413,2422],{},[143,2414,2415],{},[146,2416,2417,2419],{},[149,2418,1956],{},[149,2420,2421],{},"Choose this direction",[159,2423,2424,2434,2444,2454],{},[146,2425,2426,2431],{},[164,2427,2428],{},[60,2429,2430],{},"Do you sell recruiting services to multiple clients?",[164,2432,2433],{},"Prioritize ATS+CRM, client records, job orders, and submission workflows.",[146,2435,2436,2441],{},[164,2437,2438],{},[60,2439,2440],{},"Do you hire only for your own company?",[164,2442,2443],{},"A standard ATS may be enough; agency-specific CRM features are optional.",[146,2445,2446,2451],{},[164,2447,2448],{},[60,2449,2450],{},"Is your candidate database a strategic asset?",[164,2452,2453],{},"Favor open source, self-hosting, and clean export paths.",[146,2455,2456,2461],{},[164,2457,2458],{},[60,2459,2460],{},"Do you need temp staffing, timesheets, payroll, or back office?",[164,2462,2463],{},"Open source ATS tools may not be enough; consider specialist staffing platforms.",[11,2465,2466],{},"The highest-upside path for a growing agency is not always \"buy the biggest platform.\" It is to protect the candidate database, remove per-seat growth tax, and make the recruiters' daily workflow faster.",[18,2468,2470],{"id":2469},"_1-hire-gnome-best-open-source-agency-specific-ats","1. Hire Gnome: best open source agency-specific ATS",[11,2472,2473,2477],{},[40,2474,2203],{"href":2475,"rel":2476},"https:\u002F\u002Fhiregnome.com\u002F",[68]," is the most explicitly agency-focused open source option currently visible in the SERP. It describes itself as an open source ATS for small recruiting agencies and includes modules that matter to agencies: candidates, clients, contacts, job orders, submissions, interviews, placements, reporting, role-based access, audit trails, file management, and a client review portal.",[11,2479,2480],{},"That matters because most open source ATS tools were designed around internal hiring. Hire Gnome's feature set is closer to agency work: job orders come from clients, candidates are submitted for review, client feedback is captured, and placements are tracked.",[11,2482,2483],{},"The strongest fit is a small agency that has outgrown spreadsheets but does not want an enterprise staffing suite. The trade-off is maturity: a newer project usually has a smaller community and less battle-tested deployment history than older systems. Treat it as a strong proof-of-concept candidate, not an automatic production decision.",[18,2485,2487],{"id":2486},"_2-opencats-best-mature-free-recruiting-ats","2. OpenCATS: best mature free recruiting ATS",[11,2489,2490,2494,2495,2500],{},[40,2491,2206],{"href":2492,"rel":2493},"https:\u002F\u002Fdocumentation.opencats.org\u002Fintroduction-and-overview",[68]," is the classic open source recruiting ATS. Its documentation describes a full recruiting life cycle that includes business development, job orders, candidates, interviews, offers, and placements. The ",[40,2496,2499],{"href":2497,"rel":2498},"https:\u002F\u002Fgithub.com\u002Fopencats\u002FOpenCATS",[68],"OpenCATS GitHub repository"," also makes the codebase and release history public, which is important if you are evaluating long-term maintainability.",[11,2502,2503],{},"OpenCATS is a good fit for solo recruiters, small agencies, and technical teams that want a free system with a long history. It is especially relevant if your alternative is a spreadsheet, shared inbox, or a folder full of resumes.",[11,2505,2506],{},"The limitation is user experience and operational overhead. OpenCATS is older software. It can work, but it will not feel like a modern SaaS product, and self-hosting means your team owns installation, backups, security updates, and troubleshooting. The documentation itself notes that support is community-based and that security is your responsibility.",[11,2508,2509,2510,81],{},"For a direct comparison of the older OpenCATS model and a modern open source ATS architecture, read ",[40,2511,2513],{"href":2512},"\u002Fblog\u002Fopencats-vs-reqcore","OpenCATS vs Reqcore",[18,2515,2517],{"id":2516},"_3-reqcore-best-for-agencies-that-prioritize-ownership-and-modern-infrastructure","3. Reqcore: best for agencies that prioritize ownership and modern infrastructure",[11,2519,2520,2522],{},[40,2521,1573],{"href":1572}," is an open source ATS built around self-hosting, data ownership, and transparent recruiting workflows. It is not positioned as a full agency CRM today, so it should not be evaluated as a Bullhorn replacement for staffing firms that need client portals, placements, commission tracking, timesheets, and back-office workflows immediately.",[11,2524,2525],{},"Its fit is different: agencies and recruiting teams that care deeply about owning candidate data, avoiding per-seat pricing, and building on a modern technical foundation. If your agency serves technical clients, has internal engineering capacity, or wants to customize the system around a narrow recruiting workflow, a modern open source stack can be more valuable than a bloated all-in-one platform.",[11,2527,2528,2529,81],{},"The practical question is whether your agency needs full ATS+CRM coverage now or a clean, self-hosted ATS foundation that can be extended. If the second path is realistic, Reqcore has a stronger long-term data strategy than most closed SaaS tools. The cost difference can also matter as the recruiting team grows; see the ",[40,2530,2531],{"href":79},"SaaS ATS vs self-hosted open source TCO breakdown",[18,2533,2535],{"id":2534},"_4-freeats-best-lightweight-open-source-ats-for-simple-agency-workflows","4. FreeATS: best lightweight open source ATS for simple agency workflows",[11,2537,2538,2542,2543,2548],{},[40,2539,2212],{"href":2540,"rel":2541},"https:\u002F\u002Fwww.freeats.com\u002F",[68]," is an open source applicant tracking system with self-hosting capabilities and a cloud option. Directory listings such as ",[40,2544,2547],{"href":2545,"rel":2546},"https:\u002F\u002Feuro-stack.com\u002Fsolutions\u002Ffreeats",[68],"EuroStack's FreeATS entry"," describe it as Ruby-based and MIT-licensed, with job posting management, candidate tracking, and recruitment workflow features.",[11,2550,2551],{},"FreeATS is more interesting for small teams that want a simple open source hiring system than for complex staffing agencies. If your agency fills direct-hire roles for a handful of clients and does not need advanced client portals, commission workflows, or back-office staffing operations, it may be enough.",[18,2553,2555],{"id":2554},"open-source-vs-proprietary-agency-ats","Open source vs proprietary agency ATS",[11,2557,2558,2559,2564],{},"Proprietary recruiting agency platforms usually win on finished workflows. Commercial agency systems commonly advertise built-in CRM, client portals, candidate matching, email campaigns, analytics, LinkedIn workflows, and back-office integrations. The ",[40,2560,2563],{"href":2561,"rel":2562},"https:\u002F\u002Fappsource.microsoft.com\u002Fen-us\u002Fproduct\u002Fdynamics-365\u002Fdynamics-ats.dynamics-ats?tab=Overview",[68],"Microsoft AppSource listing for Dynamics ATS",", for example, lists CRM, portals, matching, job board integrations, reporting, API access, and Microsoft 365 integrations.",[11,2566,2567],{},"Open source wins on different dimensions:",[140,2569,2570,2583],{},[143,2571,2572],{},[146,2573,2574,2577,2580],{},[149,2575,2576],{},"Criterion",[149,2578,2579],{},"Open source ATS",[149,2581,2582],{},"Proprietary agency ATS",[159,2584,2585,2598,2611,2624,2637,2650,2663],{},[146,2586,2587,2592,2595],{},[164,2588,2589],{},[60,2590,2591],{},"Upfront product polish",[164,2593,2594],{},"Varies widely",[164,2596,2597],{},"Usually stronger",[146,2599,2600,2605,2608],{},[164,2601,2602],{},[60,2603,2604],{},"Per-seat cost",[164,2606,2607],{},"Usually none",[164,2609,2610],{},"Often grows with users",[146,2612,2613,2618,2621],{},[164,2614,2615],{},[60,2616,2617],{},"Data control",[164,2619,2620],{},"Strong if self-hosted",[164,2622,2623],{},"Vendor-controlled unless contract says otherwise",[146,2625,2626,2631,2634],{},[164,2627,2628],{},[60,2629,2630],{},"Customization",[164,2632,2633],{},"Code-level control",[164,2635,2636],{},"Limited to vendor configuration",[146,2638,2639,2644,2647],{},[164,2640,2641],{},[60,2642,2643],{},"Support",[164,2645,2646],{},"Community or paid third-party",[164,2648,2649],{},"Vendor support",[146,2651,2652,2657,2660],{},[164,2653,2654],{},[60,2655,2656],{},"Agency CRM depth",[164,2658,2659],{},"Limited, except agency-specific projects",[164,2661,2662],{},"Usually strong",[146,2664,2665,2670,2673],{},[164,2666,2667],{},[60,2668,2669],{},"Exit risk",[164,2671,2672],{},"Lower if exports and database access are clean",[164,2674,2675],{},"Depends on contract and export rights",[11,2677,2678,2679,2683],{},"The commercial platform is not automatically wrong. If a proprietary ATS helps a 20-person staffing firm make more placements this quarter, it may pay for itself quickly. But if the agency's strategic asset is a growing candidate database, the lock-in risk deserves serious attention. See ",[40,2680,2682],{"href":2681},"\u002Fblog\u002Fvendor-lock-in-ats","vendor lock-in in ATS"," for the failure modes to avoid.",[18,2685,2687],{"id":2686},"practical-proof-of-concept-checklist","Practical proof-of-concept checklist",[11,2689,2690],{},"Before committing to any ATS for a recruiting agency, run a one-week proof of concept with real but non-sensitive sample data.",[140,2692,2693,2703],{},[143,2694,2695],{},[146,2696,2697,2700],{},[149,2698,2699],{},"Test",[149,2701,2702],{},"Pass condition",[159,2704,2705,2715,2725,2735,2745,2755],{},[146,2706,2707,2712],{},[164,2708,2709],{},[60,2710,2711],{},"Create three client companies",[164,2713,2714],{},"Each has contacts, ownership, notes, and history.",[146,2716,2717,2722],{},[164,2718,2719],{},[60,2720,2721],{},"Import 50 candidates",[164,2723,2724],{},"Search, tagging, deduplication, and resume access still feel fast.",[146,2726,2727,2732],{},[164,2728,2729],{},[60,2730,2731],{},"Submit candidates to a client",[164,2733,2734],{},"The system records who was sent, when, for which job, and with what feedback.",[146,2736,2737,2742],{},[164,2738,2739],{},[60,2740,2741],{},"Export the database",[164,2743,2744],{},"You can retrieve candidates, notes, resumes, job orders, and relationships.",[146,2746,2747,2752],{},[164,2748,2749],{},[60,2750,2751],{},"Add three recruiters",[164,2753,2754],{},"Permissions, ownership, and collaboration do not break.",[146,2756,2757,2762],{},[164,2758,2759],{},[60,2760,2761],{},"Restore from backup",[164,2763,2764],{},"You can recover the system without vendor intervention.",[11,2766,2767],{},"If a tool fails the export or backup test, do not treat that as a technical detail. For an agency, that is a business continuity risk.",[18,2769,2771],{"id":2770},"which-ats-should-a-recruiting-agency-choose","Which ATS should a recruiting agency choose?",[11,2773,2774,2775,2777],{},"Choose ",[60,2776,2203],{}," if you want the most agency-specific open source option and need client\u002Fjob order\u002Fsubmission workflows from day one.",[11,2779,2774,2780,2782],{},[60,2781,2206],{}," if you want a mature, free, recruiter-oriented system and can accept an older interface in exchange for proven open source history.",[11,2784,2774,2785,2787],{},[60,2786,1573],{}," if your priority is a modern self-hosted ATS foundation, transparent workflows, and long-term control over candidate data rather than a complete staffing CRM today.",[11,2789,2774,2790,2792],{},[60,2791,2212],{}," if you want a lightweight open source ATS for a simple recruiting workflow and do not need deep agency CRM features.",[11,2794,2795],{},"Choose a proprietary agency ATS if you need advanced sales CRM, temp staffing, payroll, back-office, LinkedIn automation, client portals, and vendor support immediately.",[18,2797,2119],{"id":2118},[53,2799,2801],{"id":2800},"what-is-the-best-free-ats-for-a-recruiting-agency","What is the best free ATS for a recruiting agency?",[11,2803,2804],{},"OpenCATS is the most established free open source ATS for recruiting workflows, while Hire Gnome is the most agency-specific newer option. The best choice depends on whether you value maturity or modern agency-focused features more.",[53,2806,2808],{"id":2807},"do-recruiting-agencies-need-an-ats-or-a-crm","Do recruiting agencies need an ATS or a CRM?",[11,2810,2811],{},"Most recruiting agencies need both. The ATS manages candidates and jobs; the CRM manages clients, contacts, business development, and relationship history. Agency software usually needs to combine both views.",[53,2813,2815],{"id":2814},"can-a-recruiting-agency-self-host-its-ats","Can a recruiting agency self-host its ATS?",[11,2817,2818],{},"Yes. A recruiting agency can self-host its ATS if it has the technical capacity to manage deployment, backups, updates, access control, and security. Self-hosting can improve data ownership, but it also shifts operational responsibility to the agency.",[53,2820,2822],{"id":2821},"what-is-the-biggest-risk-with-free-ats-software","What is the biggest risk with free ATS software?",[11,2824,2825],{},"The biggest risk is not missing features. It is losing control of recruiting data through poor exports, weak backups, unclear ownership, or a system nobody on the team can maintain. Always test data export and restore before committing.",[18,2827,2158],{"id":2157},[11,2829,2830],{},"The best ATS for a recruiting agency protects the candidate database while helping recruiters submit better candidates faster. Hire Gnome and OpenCATS are the strongest open source options for agency-specific workflows. Reqcore fits when modern self-hosting, data ownership, and long-term technical control matter more than every staffing CRM feature today.",[11,2832,2833],{},"For most agencies, the highest-leverage move is to stop treating ATS selection as an admin software purchase. It is a decision about who owns the talent network your business is building.",{"title":512,"searchDepth":578,"depth":578,"links":2835},[2836,2837,2838,2839,2840,2841,2842,2843,2844,2845,2851],{"id":2316,"depth":578,"text":2317},{"id":2406,"depth":578,"text":2407},{"id":2469,"depth":578,"text":2470},{"id":2486,"depth":578,"text":2487},{"id":2516,"depth":578,"text":2517},{"id":2534,"depth":578,"text":2535},{"id":2554,"depth":578,"text":2555},{"id":2686,"depth":578,"text":2687},{"id":2770,"depth":578,"text":2771},{"id":2118,"depth":578,"text":2119,"children":2846},[2847,2848,2849,2850],{"id":2800,"depth":1596,"text":2801},{"id":2807,"depth":1596,"text":2808},{"id":2814,"depth":1596,"text":2815},{"id":2821,"depth":1596,"text":2822},{"id":2157,"depth":578,"text":2158},"2026-04-30","Compare the best open source ATS options for recruiting agencies, including agency workflows, client portals, CRM needs, and data ownership trade-offs.",{},"\u002Fblog\u002Fen\u002Fbest-ats-for-recruiting-agencies-open-source",{"title":2195,"description":2853},"blog\u002Fen\u002Fbest-ats-for-recruiting-agencies-open-source",[2859,1644,2860,2861],"ats-for-recruiting-agencies","staffing-agency-ats","recruitment-crm","7-AGYiuBy9N0fKhd6Sm2ksZJzIk1NXsUYwpglPP7G4k",{"id":2864,"title":2865,"author":6,"body":2866,"date":3428,"description":3429,"extension":1633,"image":1634,"meta":3430,"navigation":1636,"path":3431,"seo":3432,"stem":3433,"tags":3434,"__hash__":3438},"blog\u002Fblog\u002Fen\u002Fbest-ats-for-small-businesses.md","Best ATS for Small Businesses Under 50 Employees",{"type":8,"value":2867,"toc":3400},[2868,2871,2874,2878,2881,2964,2967,2971,2974,2978,2981,2985,2988,2991,3052,3056,3061,3065,3068,3071,3075,3090,3093,3097,3101,3104,3107,3118,3122,3130,3133,3137,3145,3148,3155,3159,3162,3176,3179,3183,3191,3194,3197,3201,3215,3218,3221,3225,3237,3240,3245,3249,3252,3340,3343,3347,3350,3358,3362,3365,3368,3370,3374,3377,3381,3384,3388,3391,3394,3397],[11,2869,2870],{},"The best ATS for a small business is not the one with the longest feature list. For companies under 50 employees, the right applicant tracking system should make hiring visible, keep candidate data organized, support hiring-manager collaboration, and avoid per-seat pricing that punishes a small team for involving the right people. If you have technical capacity and care about data ownership, an open-source ATS is worth considering. If you need job-board reach or HR records in the same tool, a lightweight commercial ATS or HR suite may fit better.",[11,2872,2873],{},"This guide compares the strongest ATS options for small businesses and gives you a practical decision framework before you book demos.",[18,2875,2877],{"id":2876},"quick-verdict-the-best-ats-depends-on-your-hiring-constraint","Quick Verdict: The Best ATS Depends on Your Hiring Constraint",[11,2879,2880],{},"Most small businesses do not need enterprise recruiting software. They need the smallest system that removes the biggest hiring bottleneck.",[140,2882,2883,2896],{},[143,2884,2885],{},[146,2886,2887,2890,2893],{},[149,2888,2889],{},"Your main constraint",[149,2891,2892],{},"Best-fit ATS type",[149,2894,2895],{},"Shortlist",[159,2897,2898,2909,2920,2931,2942,2953],{},[146,2899,2900,2903,2906],{},[164,2901,2902],{},"You want control, no per-seat fees, and self-hosting",[164,2904,2905],{},"Open-source ATS",[164,2907,2908],{},"Reqcore, OpenCATS",[146,2910,2911,2914,2917],{},[164,2912,2913],{},"You need the lowest credible commercial ATS cost",[164,2915,2916],{},"Budget SaaS ATS",[164,2918,2919],{},"JazzHR, Zoho Recruit",[146,2921,2922,2925,2928],{},[164,2923,2924],{},"You need visual pipelines and easy hiring-manager collaboration",[164,2926,2927],{},"Lightweight SMB ATS",[164,2929,2930],{},"Breezy HR, JazzHR",[146,2932,2933,2936,2939],{},[164,2934,2935],{},"You need job-board reach more than deep customization",[164,2937,2938],{},"Distribution-focused ATS",[164,2940,2941],{},"Workable",[146,2943,2944,2947,2950],{},[164,2945,2946],{},"You need HR records, onboarding, and ATS in one platform",[164,2948,2949],{},"HR suite with ATS",[164,2951,2952],{},"BambooHR",[146,2954,2955,2958,2961],{},[164,2956,2957],{},"You are hiring technical roles and want transparent workflows",[164,2959,2960],{},"Open-source or configurable ATS",[164,2962,2963],{},"Reqcore, Zoho Recruit, Breezy HR",[11,2965,2966],{},"For an under-50-person company, avoid buying around imaginary scale. The better question is: what will break first if your next 10 hires are managed in email and spreadsheets?",[18,2968,2970],{"id":2969},"how-to-choose-an-ats-when-you-have-fewer-than-50-employees","How to Choose an ATS When You Have Fewer Than 50 Employees",[11,2972,2973],{},"A small business ATS should pass five tests.",[53,2975,2977],{"id":2976},"_1-it-should-fit-your-actual-hiring-volume","1. It should fit your actual hiring volume",[11,2979,2980],{},"If you hire one person every six months, a full ATS may be premature. If you regularly have three or more open roles, multiple hiring managers, or candidates arriving from several sources, the coordination cost usually justifies a system. The trigger is not headcount alone; it is process complexity.",[53,2982,2984],{"id":2983},"_2-it-should-price-around-your-team-model","2. It should price around your team model",[11,2986,2987],{},"Small businesses often involve founders, department heads, and future teammates in hiring. Per-seat pricing can make that behavior expensive. Flat-rate or unlimited-user pricing is usually better when hiring is collaborative.",[11,2989,2990],{},"Watch for four pricing traps:",[140,2992,2993,3006],{},[143,2994,2995],{},[146,2996,2997,3000,3003],{},[149,2998,2999],{},"Pricing model",[149,3001,3002],{},"Works well when",[149,3004,3005],{},"Risk for small businesses",[159,3007,3008,3019,3030,3041],{},[146,3009,3010,3013,3016],{},[164,3011,3012],{},"Per recruiter seat",[164,3014,3015],{},"Only one or two people touch hiring",[164,3017,3018],{},"Hiring managers stay outside the system",[146,3020,3021,3024,3027],{},[164,3022,3023],{},"Per employee",[164,3025,3026],{},"You also need HRIS features",[164,3028,3029],{},"Cost rises even when hiring volume is flat",[146,3031,3032,3035,3038],{},[164,3033,3034],{},"Per active job",[164,3036,3037],{},"You run few roles at a time",[164,3039,3040],{},"Costs jump during hiring sprints",[146,3042,3043,3046,3049],{},[164,3044,3045],{},"Flat monthly or self-hosted",[164,3047,3048],{},"Many people collaborate",[164,3050,3051],{},"Requires clearer ownership of setup and admin",[53,3053,3055],{"id":3054},"_3-it-should-keep-candidate-data-portable","3. It should keep candidate data portable",[11,3057,3058,3059,81],{},"Candidate data becomes more valuable over time. Even a small company can build a useful talent pool after a year of hiring. Before choosing an ATS, ask how you export resumes, notes, stage history, source data, scorecards, and consent records. This is where open source and self-hosted systems have an advantage because you get more direct control over the database and infrastructure. For the broader ownership argument, see Reqcore's guide to ",[40,3060,2402],{"href":2401},[53,3062,3064],{"id":3063},"_4-it-should-support-structured-decisions-without-adding-bureaucracy","4. It should support structured decisions without adding bureaucracy",[11,3066,3067],{},"Small teams often hire through informal conversations. That can work early, but it breaks when candidates are compared from memory. Your ATS should make it easy to define stages, collect feedback, and keep interview notes attached to the candidate record.",[11,3069,3070],{},"You do not need a 40-step workflow. You need a shared view of role requirements, candidate source, current stage, interview feedback, next action, and final decision reason.",[53,3072,3074],{"id":3073},"_5-it-should-match-your-compliance-reality","5. It should match your compliance reality",[11,3076,3077,3078,3083,3084,3089],{},"Even small employers can have employment-law obligations. The U.S. EEOC explains that coverage depends partly on employee count: equal pay rules can apply from the first employee, several discrimination laws apply from 15 employees, and age-discrimination coverage starts at 20 employees (",[40,3079,3082],{"href":3080,"rel":3081},"https:\u002F\u002Fwww.eeoc.gov\u002Femployers\u002Fsmall-business\u002F1-do-federal-employment-discrimination-laws-enforced-eeoc-apply-my",[68],"EEOC small business guidance","). EEO-1 reporting generally starts at 100 employees for private employers, or 50 employees for certain federal contractors (",[40,3085,3088],{"href":3086,"rel":3087},"https:\u002F\u002Fwww.eeoc.gov\u002Femployers\u002Feeo-reports-surveys",[68],"EEOC data collections",").",[11,3091,3092],{},"That does not mean every small business needs enterprise compliance tooling. It does mean your ATS should preserve hiring records cleanly, support consistent evaluation, and make exports possible.",[18,3094,3096],{"id":3095},"best-ats-options-for-small-businesses","Best ATS Options for Small Businesses",[53,3098,3100],{"id":3099},"reqcore-best-open-source-ats-for-small-teams-that-want-control","Reqcore: Best Open-Source ATS for Small Teams That Want Control",[11,3102,3103],{},"Reqcore is a strong fit when a small business wants hiring software it can understand, self-host, and adapt without per-seat expansion costs. It is especially relevant for technical teams and companies that care about owning candidate data instead of locking it inside a SaaS vendor. The trade-off is ownership: someone must own deployment, updates, backups, and access control.",[11,3105,3106],{},"Best for small technical teams, self-hosting, no per-seat pricing, transparent workflows, and future customization.",[11,3108,3109,3110,3114,3115,81],{},"If you are still deciding whether open source is the right category, start with the ",[40,3111,3113],{"href":3112},"\u002Fblog\u002Fopen-source-applicant-tracking-system","open-source applicant tracking system guide"," and the broader comparison of the ",[40,3116,3117],{"href":533},"best open-source applicant tracking systems",[53,3119,3121],{"id":3120},"jazzhr-best-low-friction-commercial-ats-for-simple-hiring","JazzHR: Best Low-Friction Commercial ATS for Simple Hiring",[11,3123,3124,3125,3089],{},"JazzHR is one of the clearest budget-friendly SaaS ATS options for small businesses that want a dedicated recruiting system without enterprise complexity. Its public pricing starts with annual plans, including Hero and Plus tiers, while Pro is custom priced (",[40,3126,3129],{"href":3127,"rel":3128},"https:\u002F\u002Fwww.jazzhr.com\u002Fpricing\u002F",[68],"JazzHR pricing",[11,3131,3132],{},"JazzHR makes sense when you need a straightforward pipeline, job posting support, and team collaboration without building or hosting anything yourself. It is less compelling if you need deep customization, advanced automation, or strong data-control guarantees. Watch the plan limits carefully; growing companies often need the mid-tier plan once collaboration, workflow, and reporting needs mature.",[53,3134,3136],{"id":3135},"breezy-hr-best-visual-pipeline-ats-for-collaborative-small-teams","Breezy HR: Best Visual Pipeline ATS for Collaborative Small Teams",[11,3138,3139,3140,3089],{},"Breezy HR is a good fit for small businesses that want a clean visual pipeline and easy candidate movement between stages. Its pricing page lists a free Bootstrap plan and paid tiers such as Startup, Growth, and Business, with unlimited users and candidates on paid plans (",[40,3141,3144],{"href":3142,"rel":3143},"https:\u002F\u002Fbreezy.hr\u002Fpricing",[68],"Breezy pricing",[11,3146,3147],{},"The biggest advantage is usability. Hiring managers can understand a visual pipeline quickly, which matters when recruiting is only part of their job. Breezy is best for teams that want Kanban-style hiring, several concurrent roles, candidate communication, and simple automation.",[11,3149,3150,3151,81],{},"The free tier can be useful for evaluation, but most teams hiring regularly should evaluate the paid tiers rather than assuming \"free\" will carry the workflow. For that distinction, see Reqcore's guide to ",[40,3152,3154],{"href":3153},"\u002Fblog\u002Fopen-source-vs-free-ats","open source vs free ATS software",[53,3156,3158],{"id":3157},"workable-best-for-job-board-reach-and-candidate-sourcing","Workable: Best for Job-Board Reach and Candidate Sourcing",[11,3160,3161],{},"Workable is strongest when distribution is the problem. If your small business struggles to get enough qualified applicants, job-board reach, sourcing tools, and recruiting automation can matter more than deep workflow customization.",[11,3163,3164,3165,3170,3171,3089],{},"Workable's current public help documentation describes Standard monthly plans with pricing based on company size, and annual Standard, Premier, and Enterprise options (",[40,3166,3169],{"href":3167,"rel":3168},"https:\u002F\u002Fhelp.workable.com\u002Fhc\u002Fen-us\u002Farticles\u002F115011955988-Workable-plans-packages-and-pricing",[68],"Workable pricing documentation","). The old Starter plan is now legacy and not available to new customers (",[40,3172,3175],{"href":3173,"rel":3174},"https:\u002F\u002Fhelp.workable.com\u002Fhc\u002Fen-us\u002Farticles\u002F7566723534487-Starter-plan-FAQs",[68],"Workable Starter FAQ",[11,3177,3178],{},"Workable is best for small businesses that need applicant volume and polished SaaS recruiting workflows. The downside is cost predictability. If pricing depends on company size or package selection, compare the annual total against lower-cost ATS tools and open-source alternatives before committing.",[53,3180,3182],{"id":3181},"zoho-recruit-best-for-budget-conscious-teams-already-using-zoho","Zoho Recruit: Best for Budget-Conscious Teams Already Using Zoho",[11,3184,3185,3186,3089],{},"Zoho Recruit is attractive when price sensitivity is high and your company already uses Zoho products. Zoho's public pricing includes a free tier with one active job per recruiter license and paid plans that add sourcing, resume management, branded career sites, reports, integrations, and AI features at higher levels (",[40,3187,3190],{"href":3188,"rel":3189},"https:\u002F\u002Fwww.zoho.com\u002Frecruit\u002Fpricing.html",[68],"Zoho Recruit pricing",[11,3192,3193],{},"Zoho Recruit can be a practical first ATS, especially for teams comfortable with configuration. The trade-off is complexity. Zoho products often offer many settings, which is useful for customization but can slow down a small team that wants a very simple workflow. It is best for price-sensitive teams already in the Zoho ecosystem.",[11,3195,3196],{},"Be careful with add-ons and employee or hiring-manager licenses. The entry price is only part of the real cost if your hiring process involves several non-recruiter collaborators.",[53,3198,3200],{"id":3199},"bamboohr-best-when-you-need-hr-software-plus-ats","BambooHR: Best When You Need HR Software Plus ATS",[11,3202,3203,3204,3209,3210,3089],{},"BambooHR is not just an ATS. It is an HR platform with applicant tracking, onboarding, employee records, reporting, and related HR workflows. Its pricing page lists Core, Pro, and Elite plans, with hiring and onboarding included and different job-opening limits across plans (",[40,3205,3208],{"href":3206,"rel":3207},"https:\u002F\u002Fwww.bamboohr.com\u002Fpricing\u002F",[68],"BambooHR pricing","). BambooHR also describes ATS features such as job posting, candidate records, offer letters, e-signatures, hiring reports, and transfer to employee records (",[40,3211,3214],{"href":3212,"rel":3213},"https:\u002F\u002Fwww.bamboohr.com\u002Fapplicant-tracking",[68],"BambooHR ATS",[11,3216,3217],{},"This is the right category when recruiting is only one part of the operational problem. If you also need employee records, onboarding checklists, time off, payroll add-ons, or performance tools, an HR suite can reduce system sprawl. It is best for companies replacing spreadsheets across HR, not just hiring.",[11,3219,3220],{},"The risk is paying for HR-suite breadth when your only urgent problem is applicant tracking. If hiring volume is the main issue, a dedicated ATS may be cleaner.",[53,3222,3224],{"id":3223},"opencats-best-legacy-open-source-ats-for-technical-teams-on-a-tight-budget","OpenCATS: Best Legacy Open-Source ATS for Technical Teams on a Tight Budget",[11,3226,3227,3228,2071,3232,3089],{},"OpenCATS is a long-running free and open-source applicant tracking system. Its GitHub repository describes it as an applicant tracking system for managing the recruiting process from job posting through candidate selection, and the project site points users to the latest release and documentation (",[40,3229,3231],{"href":2497,"rel":3230},[68],"OpenCATS GitHub",[40,3233,3236],{"href":3234,"rel":3235},"https:\u002F\u002Fwww.opencats.org\u002F",[68],"OpenCATS website",[11,3238,3239],{},"OpenCATS can work for teams that want open source and are comfortable with a more traditional software stack. It is less appealing if your team expects a modern interface, polished onboarding, or built-in AI workflows.",[11,3241,3242,3243,81],{},"For a direct open-source comparison, see ",[40,3244,2513],{"href":2512},[18,3246,3248],{"id":3247},"small-business-ats-scorecard","Small-Business ATS Scorecard",[11,3250,3251],{},"Use this scorecard before buying. Give each category a score from 1 to 5, then weight the first three categories double if you have fewer than 50 employees.",[140,3253,3254,3268],{},[143,3255,3256],{},[146,3257,3258,3260,3262,3265],{},[149,3259,2576],{},[149,3261,1682],{},[149,3263,3264],{},"Score 1",[149,3266,3267],{},"Score 5",[159,3269,3270,3284,3298,3312,3326],{},[146,3271,3272,3275,3278,3281],{},[164,3273,3274],{},"Setup speed",[164,3276,3277],{},"Small teams cannot absorb long implementations",[164,3279,3280],{},"Needs vendor-led rollout",[164,3282,3283],{},"Live in days",[146,3285,3286,3289,3292,3295],{},[164,3287,3288],{},"Hiring-manager access",[164,3290,3291],{},"Hiring is cross-functional in small companies",[164,3293,3294],{},"Paid or limited seats",[164,3296,3297],{},"Unlimited or low-friction access",[146,3299,3300,3303,3306,3309],{},[164,3301,3302],{},"Cost predictability",[164,3304,3305],{},"Hiring can spike unpredictably",[164,3307,3308],{},"Quote-only or variable",[164,3310,3311],{},"Clear flat or self-hosted cost",[146,3313,3314,3317,3320,3323],{},[164,3315,3316],{},"Candidate data export",[164,3318,3319],{},"Your talent pool compounds over time",[164,3321,3322],{},"Partial or unclear exports",[164,3324,3325],{},"Full export and clear ownership",[146,3327,3328,3331,3334,3337],{},[164,3329,3330],{},"Workflow flexibility",[164,3332,3333],{},"Each role may need a slightly different process",[164,3335,3336],{},"Rigid stages",[164,3338,3339],{},"Configurable pipelines",[11,3341,3342],{},"The best small-business ATS is the one with the highest score against your bottleneck, not the one with the most features overall.",[18,3344,3346],{"id":3345},"open-source-vs-saas-ats-for-small-businesses","Open Source vs SaaS ATS for Small Businesses",[11,3348,3349],{},"Open source is the better path when control, customization, and long-term data ownership matter more than convenience. SaaS is the better path when you want fast onboarding, vendor support, and managed infrastructure. For small businesses, the decision usually comes down to whether you have someone who can own the technical side. If yes, open source can be a strategic asset. If no, SaaS may be the more realistic operating choice.",[11,3351,3352,3353,3357],{},"Reqcore's ",[40,3354,3356],{"href":3355},"\u002Fblog\u002Fself-hosting-ats-guide","self-hosting ATS guide"," explains what that operational responsibility looks like in practice.",[18,3359,3361],{"id":3360},"what-features-actually-matter-under-50-employees","What Features Actually Matter Under 50 Employees?",[11,3363,3364],{},"Small teams should prioritize features that prevent lost candidates and unclear decisions: job posting, application collection, pipeline stages, candidate communication, interview notes, hiring-manager collaboration, source tracking, resume storage, exports, and role-based access.",[11,3366,3367],{},"Scheduling, referrals, career-site customization, scorecards, questionnaires, dashboards, and AI parsing can be useful once the core workflow is stable. Enterprise requisition chains, global career-site management, agency vendor management, and heavy compliance modules are usually overkill.",[18,3369,2119],{"id":2118},[53,3371,3373],{"id":3372},"what-is-the-best-ats-for-a-small-business","What is the best ATS for a small business?",[11,3375,3376],{},"The best ATS for a small business depends on the hiring bottleneck. Reqcore is a strong open-source option for teams that want control and self-hosting. JazzHR and Breezy HR are good lightweight SaaS options. Workable is stronger for job-board reach, Zoho Recruit for budget-conscious configurability, and BambooHR when you need HR software plus applicant tracking.",[53,3378,3380],{"id":3379},"does-a-company-under-50-employees-need-an-ats","Does a company under 50 employees need an ATS?",[11,3382,3383],{},"A company under 50 employees needs an ATS when hiring work becomes hard to coordinate in email, spreadsheets, and chat. The usual signs are multiple open roles, several hiring managers, repeated candidate follow-up mistakes, inconsistent interview feedback, or no clear view of pipeline status.",[53,3385,3387],{"id":3386},"is-an-open-source-ats-good-for-small-businesses","Is an open-source ATS good for small businesses?",[11,3389,3390],{},"An open-source ATS can be good for small businesses with technical capacity or strong data-ownership requirements. It is less suitable when the company wants a fully managed tool and has nobody responsible for deployment, updates, backups, and access control.",[18,3392,3393],{"id":2157},"Bottom Line",[11,3395,3396],{},"For small businesses under 50 employees, the best ATS is the one that removes your biggest hiring constraint without creating enterprise overhead. Choose Reqcore or OpenCATS if open source, self-hosting, and data control matter. Choose JazzHR, Breezy HR, Workable, or Zoho Recruit if you want a managed SaaS recruiting workflow. Choose BambooHR if applicant tracking is part of a broader HR operations upgrade.",[11,3398,3399],{},"The highest-upside move is not buying the most famous ATS. It is building a hiring system your whole team will actually use, where candidate data stays organized, decisions are visible, and the tool can grow without forcing an expensive migration later.",{"title":512,"searchDepth":578,"depth":578,"links":3401},[3402,3403,3410,3419,3420,3421,3422,3427],{"id":2876,"depth":578,"text":2877},{"id":2969,"depth":578,"text":2970,"children":3404},[3405,3406,3407,3408,3409],{"id":2976,"depth":1596,"text":2977},{"id":2983,"depth":1596,"text":2984},{"id":3054,"depth":1596,"text":3055},{"id":3063,"depth":1596,"text":3064},{"id":3073,"depth":1596,"text":3074},{"id":3095,"depth":578,"text":3096,"children":3411},[3412,3413,3414,3415,3416,3417,3418],{"id":3099,"depth":1596,"text":3100},{"id":3120,"depth":1596,"text":3121},{"id":3135,"depth":1596,"text":3136},{"id":3157,"depth":1596,"text":3158},{"id":3181,"depth":1596,"text":3182},{"id":3199,"depth":1596,"text":3200},{"id":3223,"depth":1596,"text":3224},{"id":3247,"depth":578,"text":3248},{"id":3345,"depth":578,"text":3346},{"id":3360,"depth":578,"text":3361},{"id":2118,"depth":578,"text":2119,"children":3423},[3424,3425,3426],{"id":3372,"depth":1596,"text":3373},{"id":3379,"depth":1596,"text":3380},{"id":3386,"depth":1596,"text":3387},{"id":2157,"depth":578,"text":3393},"2026-04-28","Compare the best ATS options for small businesses under 50 employees, including open source, low-cost, HR-suite, and scaling choices.",{},"\u002Fblog\u002Fen\u002Fbest-ats-for-small-businesses",{"title":2865,"description":3429},"blog\u002Fen\u002Fbest-ats-for-small-businesses",[3435,3436,3437,1645],"best ats for small businesses","small business ats","open source ats","JDSvxF0mNqQu_IkHWSjtPtAvBKBZwCdbMM4e3Kg_vaM",1777750244854]