We've hired 40+ engineers across 8 countries without a single in-person interview. Here's our exact process and why each step exists.
Step 1: Application (async)
We ask for three things: CV, a link to the best thing you've shipped (with a paragraph on your specific contribution), and the answer to one technical question relevant to the role. We get 200+ applications per opening. The technical question filters for people who can think in writing — a critical skill for async remote work.
We reject anything with a generic cover letter. Senior engineers have opinions and specific experience. Genericism suggests neither.
Step 2: Async technical challenge (48–72 hours)
Not a timed whiteboard — a take-home challenge in the candidate's own environment, with their own tools, over 48–72 hours. The task is small and realistic: design a data model for X, implement Y with tests, diagnose this performance problem. Senior engineers should produce excellent work given reasonable time. Timed challenges measure anxiety tolerance, not engineering skill.
We review the code for: correctness, edge case handling, code clarity, test quality, and the accompanying explanation document. The document often tells us more than the code.
Step 3: Technical interview (60 minutes)
We discuss the challenge in depth. Why did you make this design decision? What would you change with more time? Then a system design conversation: design a rate limiter, design a URL shortener, design a notification system. We're looking for depth of thinking, not textbook answers. We want to hear "it depends, and here's what it depends on."
Step 4: Paid trial sprint (1 week)
One week on a real project, with a real team, fully compensated. This is the most important step. Skills that don't show up in interviews show up in a week of work: how someone handles ambiguity, how they communicate blockers, how they review others' code, whether they ask three sharp questions or thirty vague ones. The trial has a 15% rejection rate — real feedback from real work.
The bar
Our rule: would this person make our team measurably better? Not "good enough" — measurably better. Senior engineers should raise the level of everyone around them. If they wouldn't, it's a no.