Find duplicates in a list of tuples
There is a way to increase readability.  A for-else statement can be used to replace flags that are only set on break.  Click here to learn more.  The else clause is only called if the loop completes without break being called.

def find_duplicates(user_info):
    results = list()
    seen = dict()
    for i, user in enumerate(user_info):
        for info in user:
            if info in seen:
                index = seen[info]
                results[index].append(i)
                pos = index
                break
        else:
            results.append([i])
            pos = len(results) - 1
        for info in user:
            seen[info] = pos
    return results


How I tested speeds

Your code, as it currently stands, will work exactly the same with integers. So, I just randomly generated large data sets this way (and played along with MAXVALUE and range a bit.

from random import randrange
from timeit import timeit
MAXVALUE = 1000

for a in range(5): #I wanted to make sure I checked 5 to make sure I don't get a outlier data set that effects my ability to use timeit reasonably.
    user_info = [[randrange(MAXVALUE) for i in range(3)] for _ in range(1000)]
    print(timeit(lambda: find_duplicates(user_info), number=10000))


Credit for improving code: Maarten Fabré