running prodigy on internal network with multiple annotators

Not a native question at all! How you scale up your annotation projects and manage your annotators always depends on the use case, existing infrastructure and internal requirements. A powerful, general-purpose solution for this is something we're actively working on for the Annotation Manager, which will be an extension product to Prodigy. However, we always wanted to make sure that workflows like this are also possible to implement with the regular Prodigy developer tool – you just have to do the setup and scaffolding yourself.

The easiest solution would be to start multiple Prodigy sessions on your VM, each with their own dataset (e.g. annotator A gets dataset_a, and so on) on a different host/port. If you want the annotators to be able to start their own sessions, you could run a service in front of Prodigy that takes care of that and maybe exposes a login-style form. The annotator could then access an internal URL via their browser, and enter their details. Your service then authenticates them, starts up a new Prodigy session with a custom dataset name on a free port, and returns the URL (or redirects the user accordingly).

Here's some pseudocode for a possible endpoint:

def start_session(user_id, password):
    if is_authenticated(user_id, password):
        print('New session', user_id, datetime.datetime.now())
        dataset_name = get_dataset_name(user_id)
        port = get_free_port()
        start_prodigy_server(dataset_name, port=port)
        msg = 'Started Prodigy server at: http://your-host:{}'.format(port)
        return {'status': 200, 'msg': msg}
    return {'status': 530, 'msg': 'Authenticatio failed' }

If you search the forum for "multiple annotators", you can also find other solutions that users have implemented. You might also want to check out this extension library by fellow Prodigy user @andy, which adds multi-user support and some other cool features like analytics:

1 Like