1. On my first chat with a candidate, I layout the entire interview process. I acknowledge that it is long and I preemptively thank them for going through the process and say that we value their time. I make sure our recruiters can reiterate the process as clearly as I can.
2. I let the candidate know that at any time if they want to pull out, that is a-ok, and that they are welcome to apply again in the future in good standing. I also tell them that during our coding assignment, we really mean it when we say it's ok to ask for more time, and that we don't judge them negatively.
3. I tell the candidate that if at any point we decide to decline, that I will send them a written letter of feedback so as to make the process worth their time. This isn't always easy, but it's always been appreciated. Sometimes it is hard to write these letters, how do you tell someone multiple interviewers didn't like them? I do it by pressing our interviewers to state clearly what didn't come across well, and then I relay those things to the candidate. Sometimes even still the letters probably aren't super satisfying to the declined candidates, but I do my best and hope everyone realizes that job hunting in general is rarely satisfying.
Basically, transparency, honesty and specifically thanking them have gone a long way for me. I fully understand that an underfunded/understaffed startup might balk at the feedback part, especially when lawyers can get involved. But offering up items #1 and #2 to candidates should just be table stakes of your hiring process.