Multiuser annotations but lock when the label once was selected by others.


I wanna know if is possible when some user selected a specific token (word), this token was became blocked to others users marked.

For example: If I started the session: http://localhost:8080/?session=lucas and select any word as my annotation (as images below)

After saved, if anyone start other session ( http://localhost:8080/?session=carla), this document will be show, but the word will be selected (or some how - explicit) shows that the word was selected for other user as a token.

This is possible?

Welcome to the forum @lucasbegnini :wave:

I'm afraid that modifying the input examples based on other annotator's behavior is not really something Prodigy was designed to do. In most cases annotators should annotate independently to make sure the final dataset reflects the naturally occurring variation and is not biased by individuals. This is why this kind of behavior is not really configurable in Prodigy.
That said I also understand that there are all sorts of edge cases and I was checking if such behavior would be possible via custom session factory or task routers but the the problem is that the decision to route the task is taken for all available sessions in parallel. And once the task is enqueued you don't really have any control over it. Also, you even though you can access the database from the task router you can't really overwrite the task (as this is not what it's meant for really). You might be able to achieve this behavior if you have a session that is joining late and most examples are already in the DB by overwriting this session stream via custom session factory, but that's almost equivalent to asking this person to annotate the dataset annotated by someone else in a new Prodigy session.

Also, as I was thinking about it I quickly realized this feature might easily get problematic, for example you'd need to think how to resolve the situation where you have many different versions of the same already annotated example- you'd need to decide which one to choose for the new annotator. But, of course it might be irrelevant for your case.
Out if curiosity, why would like implement your annotation this way?