diff --git a/src/app/components/shared/_dialogs/worker-dialog/worker-dialog.component.html b/src/app/components/shared/_dialogs/worker-dialog/worker-dialog.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..e5f8aa371a7affe17d01c96a802f15f11f4c65b0
--- /dev/null
+++ b/src/app/components/shared/_dialogs/worker-dialog/worker-dialog.component.html
@@ -0,0 +1,20 @@
+
+<div id="worker-content">
+
+
+<div id="header">
+  <span>Laufend # {{getNumberInQueue()}}</span>
+  <button id="btn_hide" (click)="close()">X</button>
+</div>
+
+
+
+
+  <div mat-dialog-content>
+    <div *ngFor="let task of taskQueue">
+      <span>{{ task.room.name }}, # {{ task.comments.length }}</span>
+    </div>
+  </div>
+
+</div>
+
diff --git a/src/app/components/shared/_dialogs/worker-dialog/worker-dialog.component.scss b/src/app/components/shared/_dialogs/worker-dialog/worker-dialog.component.scss
new file mode 100644
index 0000000000000000000000000000000000000000..7c09c71f08550de8a07ea1b0f1cf12336de58e6d
--- /dev/null
+++ b/src/app/components/shared/_dialogs/worker-dialog/worker-dialog.component.scss
@@ -0,0 +1,16 @@
+button {
+  position: absolute!important;
+  right: 0;
+  top: 0;
+}
+
+::ng-deep.mat-dialog-container {
+  padding: 0 !important;
+  box-shadow: 0 2px 1px -1px rgba(0, 0, 0, .2), 0 1px 1px 0 rgba(0, 0, 0, .14), 0 1px 3px 0 rgba(0, 0, 0, .12), -4px 0 0 0 var(--primary);
+  overflow: hidden!important;
+  position: relative!important;
+}
+
+#worker-content {
+  padding-left: 5px;
+}
diff --git a/src/app/components/shared/_dialogs/worker-dialog/worker-dialog.component.spec.ts b/src/app/components/shared/_dialogs/worker-dialog/worker-dialog.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..723a4dc56c840a1e7c3921cabb8b4c76e1c6611c
--- /dev/null
+++ b/src/app/components/shared/_dialogs/worker-dialog/worker-dialog.component.spec.ts
@@ -0,0 +1,25 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { WorkerDialogComponent } from './worker-dialog.component';
+
+describe('WorkerDialogComponent', () => {
+  let component: WorkerDialogComponent;
+  let fixture: ComponentFixture<WorkerDialogComponent>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      declarations: [ WorkerDialogComponent ]
+    })
+    .compileComponents();
+  });
+
+  beforeEach(() => {
+    fixture = TestBed.createComponent(WorkerDialogComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/src/app/components/shared/_dialogs/worker-dialog/worker-dialog.component.ts b/src/app/components/shared/_dialogs/worker-dialog/worker-dialog.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..da60a9bed92e511ad1ca2be8f0b46668939744dc
--- /dev/null
+++ b/src/app/components/shared/_dialogs/worker-dialog/worker-dialog.component.ts
@@ -0,0 +1,98 @@
+import {Component, Inject, OnInit} from '@angular/core';
+import {MAT_DIALOG_DATA} from '@angular/material/dialog';
+import {Room} from "../../../../models/room";
+import {CommentService} from "../../../../services/http/comment.service";
+import { Comment } from '../../../../models/comment';
+import {SpacyService} from "../../../../services/http/spacy.service";
+import {TSMap} from "typescript-map";
+export interface WorkTask {
+  room: Room,
+  comments: Comment[]
+}
+
+@Component({
+  selector: 'app-worker-dialog',
+  templateUrl: './worker-dialog.component.html',
+  styleUrls: ['./worker-dialog.component.scss']
+})
+export class WorkerDialogComponent implements OnInit {
+
+  isRunning: boolean = false;
+  taskQueue: WorkTask[] = [];
+  closeCallback: any = null;
+  constructor(private commentService: CommentService,
+              private spacyService: SpacyService) {}
+
+  ngOnInit(): void {}
+
+  _callNextInQueue(): void {
+    if (!this.isQueueEmpty()) {
+      this.isRunning = true;
+      const task = this.taskQueue[0];
+      this.runWorkTask(task);
+    } else {
+      this.isRunning = false;
+      setTimeout(()=> this.close(), 2000);
+    }
+  }
+
+  addWorkTask(room: Room): void {
+    if (this.taskQueue.find((t: WorkTask) => t.room.id === room.id)) {
+      return;
+    }
+
+    this.commentService.getAckComments(room.id).subscribe((comments: Comment[]) => {
+      const task: WorkTask = {room: room, comments: comments};
+
+      // TEST
+      //for (let i = 0 ; i < 5 ; i++) {
+        this.taskQueue.push(task);
+      //}
+
+      if (!this.isRunning) {
+        this._callNextInQueue();
+      }
+    })
+  }
+
+  runWorkTask(task: WorkTask): void {
+
+    task.comments.forEach((c: Comment) => {
+      const model = 'de';
+      const text = c.body;
+      this.spacyService.getKeywords(text, model).subscribe((keywords: string[]) => {
+        const changes = new TSMap<string, string>();
+        changes.set('keywordsFromSpacy', JSON.stringify(keywords));
+        this.taskQueue = this.taskQueue.slice(1, this.taskQueue.length);
+
+        // TEST:
+        // this._callNextInQueue();
+        this.commentService.patchComment(c, changes).subscribe(rt => {
+          console.log('PATCHED .........................');
+          this._callNextInQueue();
+        });
+
+      })
+    })
+  }
+
+  getNumberInQueue() {
+    return this.taskQueue.length;
+  }
+
+  isQueueEmpty(): boolean {
+    return this.taskQueue.length === 0;
+  }
+
+  close(): void {
+    if (this.closeCallback) {
+      this.closeCallback();
+    }
+  }
+
+  getCloseCallback(callback: () => void): void {
+    this.closeCallback = callback;
+  }
+
+}
+
diff --git a/src/app/components/shared/header/header.component.html b/src/app/components/shared/header/header.component.html
index d9537f9fbdd2b85e007feb6d143d01a42339938e..b8d3a9fae9085ed89cf7c650890b102610b4f155 100644
--- a/src/app/components/shared/header/header.component.html
+++ b/src/app/components/shared/header/header.component.html
@@ -163,6 +163,16 @@
                 <span>{{'header.tag-cloud' | translate}}</span>
               </button>
 
+
+              <button mat-menu-item
+                      tabindex="0"
+                      (click)="startWorkerDialog()">
+                <mat-icon>cloud
+                </mat-icon>
+                <span>Enter keywords from spaCy</span>
+              </button>
+
+
             </ng-container>
             <ng-container *ngIf="router.url.includes('/participant/room/')">
             </ng-container>
diff --git a/src/app/components/shared/header/header.component.ts b/src/app/components/shared/header/header.component.ts
index c3842163ab6ec31498753ccb4abf41f0ae106357..6a4ec043d45356e934ef93d2f23b8517ea6faaa2 100644
--- a/src/app/components/shared/header/header.component.ts
+++ b/src/app/components/shared/header/header.component.ts
@@ -6,7 +6,7 @@ import { User } from '../../../models/user';
 import { UserRole } from '../../../models/user-roles.enum';
 import { Location } from '@angular/common';
 import { TranslateService } from '@ngx-translate/core';
-import { MatDialog, MatDialogRef } from '@angular/material/dialog';
+import {_MatDialogBase, MAT_DIALOG_DEFAULT_OPTIONS, MatDialog, MatDialogRef} from '@angular/material/dialog';
 import { LoginComponent } from '../login/login.component';
 import { DeleteAccountComponent } from '../_dialogs/delete-account/delete-account.component';
 import { UserService } from '../../../services/http/user.service';
@@ -24,6 +24,7 @@ import { TopicCloudFilterComponent } from '../_dialogs/topic-cloud-filter/topic-
 import { RoomService } from '../../../services/http/room.service';
 import { Room } from '../../../models/room';
 import { TagCloudMetaData } from '../../../services/util/tag-cloud-data.service';
+import {WorkerDialogComponent} from "../_dialogs/worker-dialog/worker-dialog.component";
 
 @Component({
   selector: 'app-header',
@@ -42,6 +43,7 @@ export class HeaderComponent implements OnInit {
   commentsCountQuestions = 0;
   commentsCountUsers = 0;
   commentsCountKeywords = 0;
+  workerDialogRef: MatDialogRef<WorkerDialogComponent, null> = null;
 
   constructor(public location: Location,
               private authenticationService: AuthenticationService,
@@ -322,4 +324,33 @@ export class HeaderComponent implements OnInit {
     this.roomService.updateRoom(this.room).subscribe(r => this.room = r);
   }
 
+  public startWorkerDialog() {
+
+    if (this.workerDialogRef == null) {
+
+      this.workerDialogRef = this.dialog.open(WorkerDialogComponent, {
+        width: '200px',
+        disableClose: true,
+        autoFocus: false,
+        position: {left: '50px', bottom: '50px'},
+        role: 'dialog',
+        hasBackdrop: false,
+        closeOnNavigation: false
+      });
+
+      const component: WorkerDialogComponent = this.workerDialogRef.componentInstance;
+      component.getCloseCallback(() => {
+        this.workerDialogRef.close();
+        this.workerDialogRef = null;
+      })
+      component.addWorkTask(this.room);
+    } else {
+      const component: WorkerDialogComponent = this.workerDialogRef.componentInstance;
+      component.addWorkTask(this.room);
+    }
+
+    }
+
+
+
 }
diff --git a/src/app/components/shared/shared.module.ts b/src/app/components/shared/shared.module.ts
index 9e1fa76e707e4fe232456bbe490910b5f1b96b51..f022dfac582d8515332e41d4450ead18c6e6db9a 100644
--- a/src/app/components/shared/shared.module.ts
+++ b/src/app/components/shared/shared.module.ts
@@ -37,19 +37,22 @@ import { TopicDialogCommentComponent } from './dialog/topic-dialog-comment/topic
 import { TopicCloudFilterComponent } from './_dialogs/topic-cloud-filter/topic-cloud-filter.component';
 import { SpacyDialogComponent } from './_dialogs/spacy-dialog/spacy-dialog.component';
 import { TagCloudPopUpComponent } from './tag-cloud/tag-cloud-pop-up/tag-cloud-pop-up.component';
+import { WorkerDialogComponent } from './_dialogs/worker-dialog/worker-dialog.component';
+import {DragDropModule} from "@angular/cdk/drag-drop";
 
 @NgModule({
-  imports: [
-    CommonModule,
-    EssentialsModule,
-    SharedRoutingModule,
-    MatRippleModule,
-    ArsModule,
-    MarkdownModule,
-    QRCodeModule,
-    TagCloudModule,
-    ColorPickerModule
-  ],
+    imports: [
+        CommonModule,
+        EssentialsModule,
+        SharedRoutingModule,
+        MatRippleModule,
+        ArsModule,
+        MarkdownModule,
+        QRCodeModule,
+        TagCloudModule,
+        ColorPickerModule,
+        DragDropModule
+    ],
   declarations: [
     RoomJoinComponent,
     PageNotFoundComponent,
@@ -79,7 +82,8 @@ import { TagCloudPopUpComponent } from './tag-cloud/tag-cloud-pop-up/tag-cloud-p
     TopicDialogCommentComponent,
     TopicCloudFilterComponent,
     SpacyDialogComponent,
-    TagCloudPopUpComponent
+    TagCloudPopUpComponent,
+    WorkerDialogComponent
   ],
     exports: [
         RoomJoinComponent,