1. Initial video conf meeting to make sure he/she can communicate well. Talk about the role. Have a technical discussion covering candidate's past experiences to evaluate whether they really did what they claimed to have done. Discuss a technical subject that the candidate is passionate about. If satisfied, go to Step 2
2. If the candidate is a strong referral, go to Step 3. Otherwise, do a technical phone interview where the candidate solves a simple problem (more complex than FizzBuzz but not the standard algo/DS/string manipulation question)
3. Onsite Interview. Session 1 - write a simple service (todo list, twitter clone, etc) - 2 hours.
4. Session 2 - Ask the candidate to do a code review where the code in question has bugs and is poorly designed.
5. Session 3 - Candidate does a presentation of some technical topic to the team or at least a few people in the team.
6. Session 4 - Lunch
7. Session 5 - System Design exercise focusing on testing candidate's depth
Train interviewers to provide objective feedback. Calibrate scores for each question ahead of time. Interviewers should be calibrated as well. Ideally, same pool of interviewers for each question.
I'm not saying your process wouldn't be effective, but it is asking for a very big commitment for one interview for one position at one company. (And that same commitment would have to come from your company and all the interviewers involved!)