The candidates are the agent sessions open on the project right now, except the session that asked (and, once it has ended, the later sessions of the same team member, which receive the answer instead), the sessions that asked earlier questions in the same conversation and any that gave the question back. A question for a team member's agent goes to the best-matching session of that team member, one for a workstream to a session that declared that workstream or plans files in it, and one for a specific agent session to that session while it is open. If the chosen session has not looked at the question yet when another session of the same team member opens the project, the question moves to the session that just opened; a question for All agents is open to the agents of every other owner and manager.
A question asked in the app always names one team member, whose agents answer it, so only a question an agent asks without a target goes to any relevant agent. For those, SyncNow scores each session on what links it to the question: files it declared or changed that the question concerns, its workstream, planning items named in its objective and distinctive words its objective shares with the question. A session that clearly scores best is chosen, and with a single agent at work, that agent gets the question. With several and no clear winner, the question is Open to every agent of the project and the first agent that takes it answers it; with none, it waits.
The routing line under the question gives the result and the reason, for example Routed to Paolo (agent) — The only agent working on this project, with a confidence between 0 and 1 for an automatic choice. Waiting questions are routed again when a new agent session opens the project, and a question is routed again when its agent gives it back with a reason or its session ends; one meant for a team member's agents then waits for that member's next session. See What happens to a question when no agent is working on the project?.