Otter

Hiring workflows

Inbound email → candidates

Forward resumes to your workspace inbox. Otter parses attachments and creates candidates and applications automatically.

Addresses

Each workspace gets an inbox on applications.otter.diy:

  • acme@applications.otter.diy — general applications
  • acme+eng-001@applications.otter.diy — routed to job code eng-001

How mail reaches Otter

  1. Cloudflare Email Routing accepts mail on the applications subdomain only. Apex otter.diy MX stays on Google Workspace — Gmail is not broken.
  2. An Email Worker parses the message and POSTs JSON to https://app.otter.diy/api/inbound/email.
  3. Otter dedupes by provider message id, stores the raw payload in R2, and queues processing (Inngest when configured; otherwise inline on the webhook).
  4. The processor screens auto-replies, picks a resume attachment, parses it, matches/creates the candidate, and opens an application when a job code is present.

Outbound + replies

From a candidate profile, recruiters can send email via Resend. Otter stores the thread and sets Reply-To: reply+<token>@applications.otter.diy so replies return on the same inbound pipeline.

Requires RESEND_API_KEY and RESEND_FROM_EMAIL in Vercel after you verify a sending domain in Resend.

Email templates

Settings → Email templates ships with outreach, rejection and offer drafts using placeholders like {{first_name}} and {{job_title}}. Preview works without Resend. Send stays disabled with a Needs API key badge until RESEND_API_KEY is set (same status as Integrations).

On a candidate profile, Email opens a composer with a Template picker. Choosing a template fills the subject and message with that candidate's name, the job, its stage, your company and your name. If a candidate is in several jobs, pick which one the email is About. Anything Otter can't fill is flagged, and Otter won't send a message that still has a {{placeholder}} in it. Without Resend, use Copy draft to paste it into your own inbox.

Replay

Failed or stuck messages can be replayed from Settings → Email & inbound (workspace admins) or Super Admin → Inbound.