There were 4 stages:
1. Interview with the CTO. First one had to explain some potential pitfalls of a very simple Python code. Then there were a few technical questions, and a few culture/personality ones.
2. Paid take home task. It consisted of two parts. The first one was fixing issues with a small Python script. The second one was reviewing a basic web app, fixing found issues, and implementing a small feature. Overall it was an interesting and fun exercise. Note that Doist recommends to spend 6 hours on it, so you have to weigh what you want to achieve.
3. Interview with a software engineer. This interview gives an opportunity to explain your thought process on the task. Then, there are some more questions on how you'd approach one or the other technical issue (e.g., database migrations, API migrations).
4. Interview with Head of Infrastructure. This is more of a personality fit interview.
After the process is finished, Doist offers to pay for the time you have spent doing the task - you do not have to ask for it.
Overall the experience was great, I enjoyed talking with every single one of the interviewers. Everyone was kind, the communication was prompt and clear, and the interview process is well structured - the candidate is never kept in the dark about the next steps.