v0.3.0 Self-hosted · Cloudflare or Docker

Hiring, without replacing your careers form.

Gooseplicant is a friendly, self-hosted applicant tracker that sits behind the form you already have. Your site keeps its form, each application flies in signed, and HR works the flock in a fast split inbox.

Version 0.3.0 · released October 14, 2026 · one kit for Docker, Node.js and Cloudflare

The Gooseplicant inbox: a list of applicants with stage tabs and filters on the left, and the selected candidate's drawer on the right showing contact details, stage, rating, suggested other jobs and the application answers. The same inbox and candidate drawer in the dark theme.

Features

Everything HR needs to move fast. Nothing your website has to give up.

The form stays on your site. Gooseplicant gives the people reviewing applications one calm place to read, move, rate and reply. No honking required.

A split inbox with the candidate right beside it

Stage tabs with live counts, filters and full-text search on the left; the whole application on the right. On wide screens the drawer docks beside the list, on phones it becomes a full-screen sheet.

  • Filters for site, job, rating and dates, plus bulk stage moves, CSV export and zip export
  • The application in the order the applicant saw the form, with an inline resume preview
  • Rating, notes, an activity timeline, other applications from the same person
  • Email the applicant from templates without leaving the drawer
Inbox with the candidate drawer open beside the applicant list.

Jobs, and a talent pool that explains itself

Openings are grouped per site with pipeline bars. Each job has a Suggested from your talent pool panel: past applicants who opted in, scored against the opening with plain-language reasons like “Applied for Forklift Operator” or “Reached Interview”.

  • Only people who said yes to future openings are suggested (by default)
  • The same matches show up as Also fits on a candidate
  • The matcher is swappable if you want your own scoring
A job page for Production Associate showing its pipeline bar, its applications and a Suggested from your talent pool panel with match scores and reasons.

The whole talent pool, ranked

Browse everyone who agreed to hear about future openings, search it, filter it by site, and see why each person fits before you reach out.

Talent pool list with score rings, each candidate's last position and site, and reason chips such as Same site and Rated 5 stars.

Bring last year's applications along

Drop in the application emails (.msg, .eml) and PDFs piling up in a shared mailbox. They are read in your browser, filed by location, and shown to you for a quick review before anything is uploaded.

  • Each one keeps its original date, and retention counts from it
  • Safe to run twice: what's already there is recognized and skipped
  • Imports never email anyone

How importing works →

The import review step: eight applications found in eight files, a notice that one is older than the 24-month retention period and will be skipped, a prompt to create the unknown location Springfield, and a table of applicants with position, date, a location dropdown and a confidence chip such as Sure or Pick one.

Meet Gosling

Not everyone needs the whole goose.

Gosling is Gooseplicant's Lite edition: a tidy file cabinet of everyone who applied, sorted by location, then by position. Open a folder, find the person, read the resume, move them if they landed in the wrong place, and zip up whatever you need to hand over.

Run it alongside Gooseplicant for colleagues who only need to look things up, or on its own when that's all you want. Same data, same database, so outgrowing Gosling is one setting.

Gosling: a sidebar of locations with applicant counts and position folders, the Fieldstone Georgia folder listing ten applicants with position, date and file count, and an applicant pane showing contact details, Download and Move to location buttons, and an inline resume preview. The same Gosling folder and applicant pane in the dark theme.
Gooseplicant and Gosling compared
Feature GooseplicantEDITION=full GoslingEDITION=lite
What it isThe full applicant trackerA file browser for applicants
Where it livesHR app at /ats/, Gosling alongside at /ats/lite//ats/lite/ (/ats/ redirects there)
Folders by location and positionYes, in GoslingYes
Resume preview and downloadYesYes
Move between locationsYesYes
Import old emails and PDFsYesYes
Zip exportYesYes
Your website form posts to itYesYes
Roles, masked sensitive answers, audit log, retentionYesYes
Pipeline stages, ratings, notesYesNo
Jobs and the talent poolYesNo
Email applicants, notify HRYesNo
UpgradeYou're already thereSet EDITION=full, keep every record

Built for trust

Careful with applicant data by default.

Roles scoped per site

Viewer, recruiter or admin, each limited to the sites they work on. Records outside someone's sites simply don't exist for them.

Sensitive answers stay masked

Criminal history, work authorization and any fields you choose stay hidden until a recruiter reveals them, and every reveal is logged.

An audit log that outlives the data

Views, reveals, downloads, exports, imports, moves and changes are recorded with who and when. It stores ids and emails, never applicant answers.

Retention and erasure

Inactive candidates are purged automatically after a set number of months (longer for the talent pool, hired people kept). Admins can erase a person on request.

Modules you switch on in Settings

Audit, retention, talent pool, candidate email and HR notifications are each optional. Stages, sites, templates, sensitive fields, users and theme change without a redeploy.

Keyboard-first

Press ? for the full list: j/k to move through applications, g i for the inbox, e to email, n for a note, / to search.

Comfortable everywhere

Light or dark. Comfortable or compact. Desk or phone.

Everyone picks light or dark and their own row density. On a phone the inbox and drawer become a focused, thumb-friendly flow, so a quick review between interviews actually works. Strings are i18n-ready.

Inbox in the light theme.
Inbox in the dark theme.
The inbox on a phone, with stage tabs, a Filters button and a bottom tab bar.
A candidate opened as a full-screen sheet on a phone, with stage, star rating, Also fits suggestions and the application.

Runs where you want

One codebase, two runtimes.

The same core runs as a Cloudflare Worker or as a single Node.js process. Your data stays in your account or on your server.

What each runtime uses
ConcernCloudflare WorkersSelf-hosted (Node.js / Docker)
DatabaseD1SQLite file (node:sqlite)
FilesR2Local disk
Sign-inCloudflare Access (e.g. Microsoft 365 SSO)Any auth proxy that passes a verified email header
EmailMicrosoft GraphSMTP or Microsoft Graph
SchedulerCron TriggerIn-process interval

How it connects

Your form posts. Gooseplicant verifies. HR takes it from there.

After your site validates a submission, its server sends a signed copy to Gooseplicant. The ingest endpoint needs no user login; the signature is the credential.

How Gooseplicant connects Your careers site validates the form and POSTs a signed multipart request to /ats/ingest. Gooseplicant, running as a Cloudflare Worker or a Node.js process, verifies the signature and stores the application. HR signs in through Cloudflare Access or your auth proxy and works the split inbox. Optional email goes out over SMTP or Microsoft Graph. Your careers site keeps its own form validates the submission signs it server-side POST /ats/ingest multipart + HMAC Gooseplicant Worker or Node.js process ✓ verifies signature + files D1 or SQLite R2 or local disk hourly retention + audit jobs SSO gate Access / proxy HR team split inbox in the browser desk or phone Optional email · SMTP or Microsoft Graph
How Gooseplicant connects Careers site, then a signed POST to /ats/ingest, then Gooseplicant, which HR reaches through an SSO gate. Optional email goes out over SMTP or Microsoft Graph. Your careers site keeps its form · validates signs it server-side POST /ats/ingest multipart + HMAC Gooseplicant Worker or Node.js process ✓ verifies signature + files D1 or SQLite · R2 or disk hourly retention + audit jobs SSO gate Cloudflare Access / proxy HR team split inbox, desk or phone
  1. Keep your formYour site validates the submission exactly as it does today.
  2. Send a signed copyA few lines of server code post it to /ats/ingest with an HMAC signature. Retries are safe.
  3. Review in the inboxHR signs in through your SSO and works applications in the split inbox.

Read the ingest protocol →

FAQ

Questions, answered.

Do I have to replace my careers form?

No. Your website stays the source of the form. After it validates a submission, its server posts a signed copy to Gooseplicant. See Connect a form.

Where does applicant data live?

In your infrastructure: a SQLite database and a files folder on your server (Node.js or Docker), or D1 and R2 in your own Cloudflare account. This website only hosts downloads and documentation; it never runs Gooseplicant or sees your data.

Can the app stay on our network?

Yes, when you host it yourself. Only your website's signed applications need to reach Gooseplicant from the internet. Set INGEST_PORT and Gooseplicant opens a second port that accepts nothing but signed submissions; publish that one (a Cloudflare Tunnel needs no open ports at all) and keep the HR app, the API and every file on your own network, reachable by staff over the LAN or a VPN such as Tailscale. See Public intake, private app.

How do people sign in?

Gooseplicant never sees passwords. On Cloudflare, Cloudflare Access signs people in (for example with Microsoft 365) and Gooseplicant verifies the Access token on every API call. Self-hosted, an authenticating reverse proxy (Authelia, oauth2-proxy, Authentik, Caddy forward_auth, …) passes the user's email plus a shared secret header. Who may do what is managed inside Gooseplicant under Users & access.

What's Gosling, and do I need it?

Gosling, the Gooseplicant file browser, is the Lite edition: everyone who applied, sorted by location, then position. It does the paperwork part (find someone, preview and download their resume, move them to another location, import old applications, export a zip) without stages, jobs, notes or email. Every Gooseplicant install includes it at /ats/lite/; set EDITION=lite to run only Gosling. See Meet Gosling.

Can I start with Gosling and upgrade later?

Yes. Both editions share one codebase and one database, so upgrading is one setting: change EDITION=lite to EDITION=full (or remove it) and restart or redeploy. Nothing is migrated and every record stays where it is. How to switch.

Can I bring in applications from before Gooseplicant?

Yes. Drop old application emails (Outlook .msg, .eml) or PDFs into the importer. They are read in your browser and sorted into locations by name or alias, you review the result, and only then is anything uploaded. Records keep their original dates, so retention counts from when they actually applied. Importing old applications.

Can I get everything back out?

Any time. Export a selection, a folder or everything as a zip: one folder per location and position, one per applicant with their files and an application.txt, plus an applicants.csv at the top. Sensitive answers are never included, and every export is audited. Zip export.

Can it email applicants?

Yes, with the optional candidate email module: templates sent manually from the drawer or automatically when an application arrives or enters a stage. A separate HR notify module emails your team about new applications, per site. Mail goes out over SMTP or Microsoft Graph when self-hosted, and over Microsoft Graph on Cloudflare.

Is there a hosted version?

A hosted, multi-workspace tier is planned. Today you run Gooseplicant yourself, on Cloudflare or on any machine that runs Docker or Node.js.

What does it cost? What's the license?

Licensing terms TBD. Check the downloads page for the current terms.

Why a goose?

Geese are famously good at noticing who just arrived. Also, “Gooseplicant” was too good to pass up. The software itself is quiet: no honking, no surprise emails, nothing leaves your servers unless you send it.

Ready when your next applicant flies in.

Download the kit, pick Docker, Node.js or Cloudflare, and connect your form. Gooseplicant and Gosling come in the same kit, and the install guides walk you through it step by step.