Each person who calls mintSoulmateToken() in Soulmate.sol is supposed to receive a soulbound NFT, but only soulmate2 will receive one. This is because _mint() (inherited from ERC721.sol) is only called when there is a soulmate already waiting (see code below). If you are soulmate1 you will not get an NFT.
Here is the relevant portion of the mintSoulmateToken() function - an NFT is minted to soulmate2 in the else if statement but no NFT is minted to `soulmate`` in either the if statement or the else if statement.
The protocol does not function as expected and half the users won't receive an NFT. Also, you will be unable to use any features of the protocol that depend on you having the NFT in your account.
Manual review
Make the following addition so an NFT is also minted to soulmate1...also don't iterate to nextID++ until after the NFT is minted:
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.