There are some types of services where it's straightforward to monitor private vendors: if you contract out trash pickup, and the vendor doesn't pick up people's trash, you will immediately get many loud, angry complaints from the populace. You hardly even need to proactively monitor them, really, it would just be instantly obvious if they did nothing.
In contrast, if you give non-profits money to help the homeless population, the feedback loop is more...ambiguous. If they just blow the money instead of helping anyone, who's gonna complain? The people that should've been helped won't even be aware of some random contract, and are used to different government and private entities failing them anyhow. The lack of clear impact from non-action means it's easier for organizations to get away with doing nothing, or at least doing nothing useful.
Now I'm sure there are some organizations doing great work, but how do you separate them from the grifters?
In contrast, if you give non-profits money to help the homeless population, the feedback loop is more...ambiguous. If they just blow the money instead of helping anyone, who's gonna complain? The people that should've been helped won't even be aware of some random contract, and are used to different government and private entities failing them anyhow. The lack of clear impact from non-action means it's easier for organizations to get away with doing nothing, or at least doing nothing useful.
Now I'm sure there are some organizations doing great work, but how do you separate them from the grifters?