It is very hard to do this without a reverse edge.
Since for a directed edge, the source vertex is not visible from the target vertex. E.g. in case of A1->A2, A2 cannot access to A1.
The only way I can think of is to start from all senders, traverse to the receiver, then keep the particular person in the result set.
This is very expensive and unlikely to be real-time.
Therefore it is highly recommended to create a reverse edge in your use case.
Thanks.