I'm thinking of the problem of a distributed tinder: a network of peers, who want to match with each other confidentially.
The solution I'm thinking about is something along the lines of Alice sending some message encrypted with Bob's public key that implies she likes him. She will not send this message to Bob obviously because she doesn't know if he likes her yet. So instead she will send it to Carrol, who is a peer with hash closest to Alice+Bob public keys.
In order for Alice and Bob to stay anonymous, Carroll will receive the message through several relays, aka onion routing.
Bob does the same thing. The result is that Carrol gets two messages she can't read and needs to decide what to do with them.
The messages, although encrypted, should somehow* match together and then be sent back through the relays, each side getting the other side's message, at which point they can communicate directly.
*I am missing the cryptography primitive to enable this puzzle ability.