# Working collaboratively with Prodigy

**URL:** <https://support.prodi.gy/t/working-collaboratively-with-prodigy/6242>\
**Category:** Getting Started\
**Tags:** usage, ner\
**Created:** [January 18, 2023, 1:14pm UTC](https://support.prodi.gy/t/working-collaboratively-with-prodigy/6242 "2023-01-18T13:14:56Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![kushal\_pythonist](https://sea2.discourse-cdn.com/flex020/user_avatar/support.prodi.gy/kushal_pythonist/32/2986_2.png) [@kushal\_pythonist](https://support.prodi.gy/u/kushal_pythonist)\
**Post date:** [January 18, 2023, 1:14pm UTC](https://support.prodi.gy/t/working-collaboratively-with-prodigy/6242/1 "2023-01-18T13:14:56Z")

</div>

I purchased the licensed(more than 5) to work on NER Project. I do not have any idea how i work collaboratively using these licensed prodigy account. I just want to know how i go with the process. I have 5 peoples to work with me. What and how should i perform the task. Can anyone please explain the process and help me out to complete the project?

---

<div class="post-metadata">

**Author:** ![ryanwesslen](https://sea2.discourse-cdn.com/flex020/user_avatar/support.prodi.gy/ryanwesslen/32/2969_2.png) [@ryanwesslen](https://support.prodi.gy/u/ryanwesslen)\
**Post date:** [January 18, 2023, 9:34pm UTC](https://support.prodi.gy/t/working-collaboratively-with-prodigy/6242/2 "2023-01-18T21:34:27Z")

</div>

hi @kushal_pythonist!

Thanks for your question.

> [@kushal\_pythonist](#):
>
> I purchased the licensed(more than 5) to work on NER Project. I do not have any idea how i work collaboratively using these licensed prodigy account. I just want to know how i go with the process. I have 5 peoples to work with me.

First, it's important to determine the ["what"](https://explosion.ai/blog/applied-nlp-thinking#what-vs-how) you'll be labeling:

> [@How to use Prodigy for NER labelling as a team?](https://support.prodi.gy/t/how-to-use-prodigy-for-ner-labelling-as-a-team/2487/2):
>
> Hi! There's no one correct answer and how you structure your projects depends on your specific use case. When you're starting a new project that involves training a model and collecting new data, you'll usually have two distinct phases: Development phase. During this phase, you'd validate ideas for the model and it typically requires the data scientists/developers working very closely with the annotators, and often even annotating small samples themselves to test what works best. Even if the …

> [@kushal\_pythonist](#):
>
> Can anyone please explain the process and help me out to complete the project?

Here's more of the "how" to implement your project.

First, if your annotators are on the same network (e.g., server), check out our documentation on named [multi-user sessions](https://prodi.gy/docs/api-web-app#multi-user-sessions). You can start a Prodigy session as you would normally:

```python
python prodigy ner.manual ner_news_headlines blank:en ./news_headlines.jsonl --label PERSON,ORG,PRODUCT,LOCATION

✨ Starting the web server at http://localhost:8080 ...
Open the app in your browser and start annotating!

```

> To create a custom named session, add `?session=xxx` to the annotation app URL. For example, annotator Alex may access a running Prodigy project via `http://localhost:8080/?session=alex`. Internally, this will request and send back annotations with a session identifier consisting of the current dataset name and the session ID – for example, `ner_person-alex`. Every time annotator Alex labels examples for this dataset, their annotations will be associated with this session identifier.
> 
> The `"feed_overlap"` setting in your `prodigy.json` or recipe config lets you configure how examples should be sent out across multiple sessions. If `true`, each example in the dataset will be sent out **once for each session** , so you’ll end up with overlapping annotations (e.g. one per example per annotator). Setting `"feed_overlap"` to `false` will send out each example in the data **once** to whoever is available. As a result, your data will have each example labelled only once in total.
> 
> As of v1.8.0, the `PRODIGY_ALLOWED_SESSIONS` environment variable lets you define comma-separated string names of sessions that are allowed to be set via the app. For instance, `PRODIGY_ALLOWED_SESSIONS=alex,jo` would only allow `?session=alex` and `?session=jo`, and other parameters would raise an error.

An alternative approach is where you have one session with a unique port and dataset for each annotator:

> [@Multiple user sessions for multiple datasets](https://support.prodi.gy/t/multiple-user-sessions-for-multiple-datasets/5395/2):
>
> Hi! The named multi-user sessions are really mostly intended for workflows where you want to send out the same data to different annotators, based on who is available. If you already know which input source should be annotated by a session, and you want every session to annotate different data, you should just start multiple separate instances for the different users. You can do this by setting the PRODIGY\_PORT environment variable and running Prodigy on different ports. Each user can then have …

This is harder to manage manually when you go beyond a few annotators. Some community members have found using tools like tmux to help:

> [@How are you managing multiple projects?](https://support.prodi.gy/t/how-are-you-managing-multiple-projects/5902/5):
>
> I keep it simple. I have a document with 20+ command lines of the form: PRODIGY\_CONFIG=custom\_config.jsonl PRODIGY\_PORT=8251 PRODIGY\_BASIC\_AUTH\_USER=user PRODIGY\_BASIC\_AUTH\_PASS=password prodigy --all\_the\_options This is used so that when I have to add more documents for annotation/change to a model in the loop/update whatever I can easily do that. It also helps me keep track of the ports. The Prodigy instances are started up in a Tmux session.... Yeah, barbarian method, but oh well, it's been…

Second, if you're running on this on a different machine than what your annotators are on, you'll need to modify the host, changing Prodigy Host to `"0.0.0.0"` from `localhost`.

To do this, you'll need to modify the [configuration](https://prodi.gy/docs/install#config) in the `prodigy.json` file or setting the environment variable for `PRODIGY_HOST`.

> [@Starting Prodigy server on a remote machine ('--no-browser --port=XXXX)](https://support.prodi.gy/t/starting-prodigy-server-on-a-remote-machine-no-browser-port-xxxx/1688/2):
>
> Try setting the environment variable export PRODIGY\_HOST="0.0.0.0" before starting the Prodigy server. This should advertise the server on the WAN IP, instead of the loopback interface (localhost, which is the default). You can also configure the port with the PRODIGY\_PORT environment variable. For production setups, you might want to look into using a reverse proxy in front of the service. I like to use Traefik. Other popular choices include Apache, Nginx and Caddy.

As mentioned, for production setups, you may want to consider reverse proxies. Also, be aware that you may have to handle firewalls or other issues depending on your server setup.

> [@Access Prodigy from external computer](https://support.prodi.gy/t/access-prodigy-from-external-computer/6111):
>
> Dear All, Really happy with Prodigy. Until now, due to our requirements, we had all annotators annotate locally. However now we try to setup a server such that multiple annotators can code on one instance. We setup prodigy on Ubuntu 20.04, no other webservices are running. A) python3 -m prodigy ner.manual etc…………. We can access prodigy on localhost:8080 We can access prodigy on 127.0.0.1:8080 We are not able to reach Prodigy from an external computer. We added rules to the firewall: …

Developing comprehensive guidelines for working collaboratively is hard, because a lot of design decisions depend on the unique network setup. There are [many `server` posts](https://support.prodi.gy/tag/server). and cloud posts like [aws](https://support.prodi.gy/tag/aws) or [google-cloud](https://support.prodi.gy/tag/google-cloud) that may help depending on your setup.

Hope this helps!

---

<div class="post-metadata">

**Author:** ![kushal\_pythonist](https://sea2.discourse-cdn.com/flex020/user_avatar/support.prodi.gy/kushal_pythonist/32/2986_2.png) [@kushal\_pythonist](https://support.prodi.gy/u/kushal_pythonist)\
**Post date:** [January 20, 2023, 2:42am UTC](https://support.prodi.gy/t/working-collaboratively-with-prodigy/6242/3 "2023-01-20T02:42:17Z")

</div>

Lets take a example here:  
I want to annotate NER. I have 5 poeples streamlined  
I use this command :

```python
prodigy ner.manual resume blank:en /home/random/Documents/anno/outputfiles/randompersonresume.jsonl --label PERSON,LOCATION,UNIVERSITY,ROLE,ORGANIZATION,DATE,DOMAIN,PROJECT,EXPERIENCE,HARDSKILLS,SOFTSKILLS,DEGREE

```

to annotate. In first day, they complete the annotations. In second day is this the same way to start over? Or any other way?  
I know this may be silly questions but i need to solve this issue asap. Thank You. Appreciated

---

<div class="post-metadata">

**Author:** ![ryanwesslen](https://sea2.discourse-cdn.com/flex020/user_avatar/support.prodi.gy/ryanwesslen/32/2969_2.png) [@ryanwesslen](https://support.prodi.gy/u/ryanwesslen)\
**Post date:** [January 20, 2023, 8:08pm UTC](https://support.prodi.gy/t/working-collaboratively-with-prodigy/6242/4 "2023-01-20T20:08:31Z")

</div>

hi @kushal_pythonist!

Unfortunately, the answer is "it depends" on your use case and Ines' post is the best advice for how to start your project.

A lot of the decisions you need to make is based on what your use case is. Matt discussed this as the base of the "ML Hierarchy of Needs":

[![](https://img.youtube.com/vi/jpWqz85F_4Y/maxresdefault.jpg "Building new NLP solutions with spaCy and Prodigy - Matthew Honnibal") ](https://www.youtube.com/watch?v=jpWqz85F_4Y)

I suspect you're in a rush so likely may not have time to step back and focus on these problems.

If you need something, the closest step-by-step instructions I can provide is our NER flowchart:

> **[Prodigy\_NER\_flowchart\_v2\_0\_0\_light.pdf](https://raw.githubusercontent.com/explosion/assets/main/Prodigy/Prodigy_NER_flowchart_v2_0_0_light.pdf)**
>
> 3.06 MB

Hope this helps!

---

<div class="post-metadata">

**Author:** ![kushal\_pythonist](https://sea2.discourse-cdn.com/flex020/user_avatar/support.prodi.gy/kushal_pythonist/32/2986_2.png) [@kushal\_pythonist](https://support.prodi.gy/u/kushal_pythonist)\
**Post date:** [January 21, 2023, 3:06am UTC](https://support.prodi.gy/t/working-collaboratively-with-prodigy/6242/5 "2023-01-21T03:06:59Z")

</div>

Thank you so much @ryanwesslen . I will surely watch the video you provided. And thanks again for your constant help and guidance.
