arrow_backAll work

Recruiting

Our own recruiting module: vacancies, a drag-and-drop pipeline and the website apply form.

Context
Internal tool · The Branding Club
Year
2026
Role
Concept, design & development
Stack
Cloudflare WorkersSupabaseVanilla JSResendTurnstileiCalendar

scienceDrag candidates between stages — stages with an email template ask before sending. Open a card for the full candidate file, or use “Apply form” (top right) to apply as a candidate and watch the application land in the first column. Everything in this demo is dummy data.

open_in_fullFull screen
lockrecruiting.demo

A recruiting tool for HR, recruiters and hiring managers. Every vacancy has a stage pipeline, every candidate a file with documents, notes, interviews, tasks and a full timeline — and the apply form on the website feeds straight into it. When someone is hired, the employee record is created in the HR system automatically.

The problem

Recruiting lived in a module of an external HR suite. Applications reached it through a chain of website form, automation tool and API, hiring managers needed their own seat to follow their vacancies, and the parts we relied on most — stage deadlines, quick notes after an interview, a clear overview per vacancy — were the clumsiest to use.

The approach

I rebuilt it as a Cloudflare Worker with Supabase tables and a storage bucket for documents, on the same login, roles and design system as our other internal tools. The public endpoints (apply form and jobs feed) accept exactly what the old website form posted, so switching over meant changing one URL; they are rate-limited, protected by Turnstile and a honeypot, and spot duplicate submissions. Stages carry deadlines, moving a candidate can trigger a templated email that you always review first, interviews send calendar invites, and closed applications are anonymised automatically after six months: first name, initial and email stay, the rest goes.

Highlights

  • checkPipeline per vacancy with stage deadlines; overdue candidates surface on the dashboard
  • checkTemplated emails on stage changes, always shown for review before anything is sent
  • checkPublic apply form and jobs feed with rate limiting, Turnstile, honeypot and duplicate detection
  • checkCandidate file with document preview, proceed/reject notes, interviews with calendar invites, tasks and timeline
  • checkRole-based access: HR sees everything, recruiters only the vacancies they are on
  • checkPrivacy by default: automatic anonymisation after closing, and a hand-over to the HR system on hire