1. Creating a User

create a user in unsorted database, call web-hook to backend that creates user in label studio, returns label studio ID which can update unsorted database. This would only need to be done once per user, since we don’t care about syncing their profile. Only need their ID in label studio.

2. Creating project for data user

When the data user is looking for annotators, they need to create a project and provide us with:

  • Title
  • Description
  • Annotation Type Every annotation type, we will have a pre configured label template (Label studios UI).

Recommendations:

  • We should incrementally adopt data annotation types starting with image caption (easiest)
  • There should be a maximum annotation of 3 (opposed to the recommended default of 1) to reduce the chance of poor annotations.

https://api.labelstud.io/api-reference/api-reference/projects/create

3. Storage Configuration

Integrate supabase storage with label studio via the api.

A new folder will be made in the bucket for every project. Within the folder will be 2 more folders: data and annotations. Data contains the media uploaded by the data user. Annotation contains the objects uploaded by the annotators.

Every project will have its own separate project storage. This is so we can have support for RLS on object storage.

{
  "regex_filter": ".*",
  "use_blob_urls": true,
  "presign": true,
  "presign_ttl": 1,
  "recursive_scan": true,
  "title": "title", // user defined
  "description": "description", // user defined
  "project": 1, // 
  "bucket": "bucket",
  "prefix": "prefix",
  "aws_access_key_id": "aws_access_key_id",
  "aws_secret_access_key": "aws_secret_access_key",
  "aws_session_token": "aws_session_token",
  "aws_sse_kms_key_id": "aws_sse_kms_key_id",
  "region_name": "region_name",
  "s3_endpoint": "s3_endpoint"
}