Hiring workflows
Public careers & apply
Give candidates a polished board and apply form — no Otter login required.
URLs
- Board:
https://app.otter.diy/careers/<slug> - Job:
https://app.otter.diy/careers/<slug>/<job-code>
Example: app.otter.diy/careers/acme
What candidates see
Only jobs that are open and public. Draft, on-hold, closed, internal, and confidential roles never appear. Descriptions, location, workplace type, employment type, and compensation are shown — never private notes, pipeline stages, or hiring-team internals.
Apply form
Name and email are required. Phone, LinkedIn, cover note, and resume are optional. Resumes upload to object storage (R2 when configured) and attach to the candidate. Otter creates or matches the candidate by email and opens an application in the Applied stage with source careers.
Soft rate limits (per IP and per email+job) reduce spam. A honeypot field catches simple bots. CSRF cookies are not required for this public form; the workspace slug and job code are validated server-side.
Optional Cloudflare Turnstile: set TURNSTILE_SITE_KEY and TURNSTILE_SECRET_KEY on the deployment and the apply form shows a challenge that is verified server-side. With either key missing, Turnstile stays off.
Job pages ship a canonical URL, Open Graph tags, and JobPosting structured data so roles can show up in Google for Jobs. Each new application also appears under My work → New applications for your team, even without outbound email configured.
Sharing
Copy the board URL from Settings → Workspace → Public careers, or the per-job public link on an open job's header. Point your company website's Careers page at the board URL.