The thing is, as gilleain says, the majority of promising-sounding candidates aren't worth progressing with. This is a combination of:
* Failing outright to do anything even close to the requested task
* Not even basic error handling
* No tests
* Using generated code where it's not appropriate, or not bothering to implement e.g. catch blocks they've generated
The instructions explicitly tell candidates what we're looking for, so it's not worth chatting to someone without doing this filter.