Is this possible to do in a way that does not invite lawsuits?
Do the parties (us/them) need to report this on taxes (that's why we thought gift cards instead of cash transfers)?
Is it acceptable to ask the Interviewees to sign an NDA prior to the test project?
Thanks for your advice in advance!
If the project in question is related to your IP, you'll possibly need the full kit: Work-for-Hire contract, W-9 form filed, non-disclosure, etc.
Best of luck and keep us posted what you find out as I'm sure many others will be interested!
Also, I feel like I could start a business based purely on giving out this one piece of advice: Don't make them sign an NDA. It's just a poor experience for everyone involved, and as the person being interviewed, it can leave a really bad taste in their mouth and put a real distrust in what you're doing. If you really must expose them to IP-sensitive information, think about why you're doing it. It's really easy to think of a technical test that's anonymized enough to avoid this.
You don't want to get this wrong.
As an interviewee, this would raise a big red flag.
To answer your question you really need to consult an attorney or tax advisor. But as a general statement, in the U.S. if you pay someone less than $600 (IIRC) in a year as an outside consultant you are not required to report it, it is on them to report it. If you hired that person you'd be required to report it from my understanding. This is a different way than the gift, although I could see a gift working as well but it would have to be very narrowly worded I would think.
The NDA is just a no. One exception is if the person is being hired as a temporary contractor for say a month or so then an NDA is totally fine, but you also should have a complete contract in place at this point.
The real answer I think you should listen to based on my 20+ years in tech and leading/building teams:
Overall, I'd challenge you to buck this reborn trend, avoiding this altogether and learn how to properly screen candidates quickly, efficiently without using take home projects or long whiteboard coding sessions. Hiring this way is a misnomer, we did these same BS methods back in the dot com days when we were learning how to hire people and found that we wound up getting a make up of people who tested well but honestly couldn't do real projects with the team. I know it seems like you are (or can) testing all the right things but you really aren't (and can't this way). Really smart people get this wrong all the time because they think they are testing for good attributes when they really aren't.
Look at the entire industry that has popped up around helping people study for interviews and doing take home projects -- same thing happened in the late 90's early 2000's. People literally study to do your take home projects (have friends help them), and study to pass your whiteboard session to the point that it doesn't test anybody properly. Instead it gets you people with the best memory and ability to regurgitate what you want to hear, which is easy of course because you've interviewed others so it will become known. Besides that, people have lives outside of work, if you are one of 10 employers a candidate has interviews with and everyone is wanting the candidate to do a 4-5 hour "test" that is 40-50 hours of "extra" work besides their 40-50 hr/week job, plus time for regular interviews and family etc. Yes everyone will sacrifice some for moving their position, but it is getting out of hand.
You also have to remember, your testing is immediately biased by the fact you put the test/project together and you already have a set of expectations. Yea yea, people say they don't but they do. And if your team put it together as a project it is actually even worse because now the bias is across the team. So what happens is then you want people to do things the way you feel is correct, to match your expectations, not necessarily what a truly experienced person might do. So in the end you will find a bunch of people like you, instead of finding a diverse team who can solve problems uniquely and collaborate better because they think differently. I have watched this happen over and over and over at startups and it is painful but slightly entertaining around the stupidity of what I feel are some really smart people usually.
I have mentored a large number of companies, from startups to large firms, on how to recruit technology teams over the years, and I have seen the trends and watched what it produces and yes there are a few good companies that execute this type of testing properly, but the majority do not and instead just create a team of like minded individuals who wind up boxing them into a corner over a short time unless someone steps in and helps change the dynamics.
IF you continue down this path, make this "test" one of the last steps towards hiring the person. Companies that put it as the first or early step are basically saying "fuck you" jump this high before we'll even consider talking to you as a human being. It is highly disrespectful to experienced professionals and sends a signal of amateur hour at your company, so you won't get the very people you need. If you put it as one of the last steps after you've talked to this person for a couple of hours and know they are a good fit and have the right background, then at least the test is viewed as you trying to be thorough, not disrespectful. You will think it will reduce your costs to put it up front and "weed people out", but it will drastically increase your costs and hurt your hiring efforts. Lots of people can study or cheat their way past your test, but few can hide their personality through a couple of hours of talking. Using tests makes you reliant on them for screening and then teams allow bad personality quirks to get onto the team much easier. Make the "team fit" the most important factor, and you'll save your team and company a ton of grief, time and money.
Please don't think I am saying you shouldn't thoroughly screen candidates technically, I believe you should. I always ask a huge number of questions, work through examples, have them describe designs, design on the fly, etc. All things that are critical to knowing if the person is full of shit or not, but what I don't do is ask them to write a loop to reverse a string, or write a rest api connector, because while this seems like you are testing real world skills you aren't, you just setup a biased test that you have an expectation of the outcome. So you have in your mind what acceptable solutions you'll take and what that means is you have already applied a filter to people and are finding like minded people instead of looking for new ideas.