StartupKid Edtech

StartupKid Mentors

A multi-track recruitment platform for an education company

  • 4 tracks
  • 500+ candidates
  • 83% storage reduction

What it is

An end-to-end hiring system for StartupKid, where I run learning. A candidate goes from a public application form through video screening, dual review, interviews, availability and contract, across four independent tracks: mentors, sales, support and service. About ten operators run it, each limited to their own role.

The problem

Recruitment is a state machine pretending to be an inbox. Every candidate sits at a stage, every stage has an owner and a clock, and when that state lives in a spreadsheet and four email accounts it fails silently. Nobody announces a dropped candidate; the candidate simply stops hearing back. I could see the bottleneck because I was standing in it.

The hard part

A successful send is not a delivery. The first version marked a message sent when the email API accepted it, so a bounced rejection showed as delivered and an “already sent” guard blocked the retry. Outbound state is now driven by webhook confirmation, and the interface refuses to show a bounced message as delivered.

Candidates mistype their own address. A real applicant wrote gamil.com and would never have heard back. Format validation now gates the pipeline, with a nudge on a near miss.

Phone videos are right for assessment and heavy to keep. A retention policy purges the media of rejected candidates and keeps the decision record: 1,266 objects removed, zero failures, 41 GB down to 6.9 GB. The panel says so; a blank player looks like a bug.

Stack

Stack
  • TanStack Start
  • TypeScript
  • Supabase
  • Postgres
  • Resend
  • Tailwind
  • shadcn/ui

Twenty years of training architecture, working software in weeks.

Book a 30-minute call

Book a 30-minute call

Loading the calendar

The calendar runs on Cal.com. What you enter there goes to Cal.com and into my calendar, as described in the privacy policy. Open the calendar in a new tab