Respondents name the people they talk to and add three quick details about each. A resolver matches every nomination against the study roster on the server, while the survey is still open. It never shows the roster, never tells a respondent who is enrolled, and holds anything it cannot pin to exactly one person for the study team to decide.
A name or nickname, then last initial, rough age and where they usually see them. Every answer can be "don't know". The same questions appear for every person, so the screen gives nothing away.
Exact name and nickname keys narrowed by the details. One candidate left means matched. Several, or details that contradict the only match, means held. A missing roster detail never rules anyone out.
Staff see each held row with only its candidates, match it or mark it off roster, and every choice is logged. Export the edge list straight into the analysis you already run.
After fieldwork, resolving "mike" is a modelling problem. During the interview it is one more question to the only person who knows. Capturing the details at the moment beats estimating them later.
cf. Peer Disambiguation in Self-Reported Surveys using Graph Attention Networks, 2025Showing a youth a list of everyone enrolled at a drop-in center is a disclosure in itself. Here the respondent sees the same neutral questions whether or not a person is on the list, and the result screen says only that the answers were saved.
no roster display, no per-person feedbackMatched, held and off roster are three outcomes. Collapsing a held row into a best guess makes it indistinguishable from a confirmed tie, and nothing downstream can recover the difference.
three states, never twoPeer change agent selection runs on who is most named. Assigning every unclear "mike" to the most popular Mike inflates him and changes who gets recruited. The console shows that effect on live data.
cf. HEALER / DOSIM peer change agent selection