For Bitcoin cash (bitcoin.com) they use ‘blind escrow’, but this requires a centralized server to manage the dispute. Your contract in ETH has the advantage that it is decentralized, but means the dispute needs to be handled in a more ‘automated way’.
One suggestion might be instead of the client ‘accepting ‘YES/NO’, they could rate the quality on a scale 1–5, and the freelancer would similarly relate the quality (1–5) without knowing the clients score first. Then use a modified form of the ‘prisoners dilemma’ as the formula to calculate the percentages of payout to each party when the quality levels do not match, and be sure both parties know the rules of the quality scoring before starting.