If you are not bound to ggplot2 and fancy an interactive use: I recommend the timevis library.
Using your data with the code looks like this:
library(timevis)
library(tidyverse)
df <- tribble(
  ~ASK_ID, ~START_TIME_date, ~START_TIME_hour, ~STOP_TIME_date, ~STOP_TIME_hour, ~PERSON_ID, ~TASK_GROUP,
  3983947, "8/3/20", "13:35", "8/3/20", "13:36", 100, 1,
  3983946, "8/3/20", "13:35", "8/3/20", "13:38", 102, 3,
  3983945, "8/3/20", "13:32", "8/3/20", "13:34", 102, 1,
  3983944, "8/3/20", "13:32", "8/3/20", "13:35", 104, 2,
  3983943, "8/3/20", "13:30", "8/3/20", "13:32", 104, 1,
  3983942, "8/3/20", "13:29", "8/3/20", "13:30", 104, 6,
  3983941, "8/3/20", "13:27", "8/3/20", "13:35", 107, 1,
  3983940, "8/3/20", "13:26", "8/3/20", "13:35", 100, 1,
  3983939, "8/3/20", "13:26", "8/3/20", "13:35", 103, 4,
  3983938, "8/3/20", "13:23", "8/3/20", "13:35", 106, 1,
  3983937, "8/3/20", "13:21", "8/3/20", "13:29", 104, 4,
  3983936, "8/3/20", "13:20", "8/3/20", "13:32", 102, 1,
  3983935, "8/3/20", "13:20", "8/3/20", "13:27", 107, 3,
  3983934, "8/3/20", "13:19", "8/3/20", "13:20", 102, 1,
  3983933, "8/3/20", "13:19", "8/3/20", "13:26", 100, 5
) %>% 
  mutate(start_time = as.POSIXct(paste(START_TIME_date, START_TIME_hour)),
         stop_time = as.POSIXct(paste(STOP_TIME_date, STOP_TIME_hour)))
time_data <- df %>% 
  transmute(
    id = 1:n(),
    content = paste("Task", ASK_ID),
    start = start_time,
    end = stop_time,
    group = PERSON_ID
  )
time_data
#> # A tibble: 15 x 5
#>       id content      start               end                 group
#>    <int> <chr>        <dttm>              <dttm>              <dbl>
#>  1     1 Task 3983947 8-03-20 13:35:00    8-03-20 13:36:00      100
#>  2     2 Task 3983946 8-03-20 13:35:00    8-03-20 13:38:00      102
#>  3     3 Task 3983945 8-03-20 13:32:00    8-03-20 13:34:00      102
#>  4     4 Task 3983944 8-03-20 13:32:00    8-03-20 13:35:00      104
#>  5     5 Task 3983943 8-03-20 13:30:00    8-03-20 13:32:00      104
#>  6     6 Task 3983942 8-03-20 13:29:00    8-03-20 13:30:00      104
#>  7     7 Task 3983941 8-03-20 13:27:00    8-03-20 13:35:00      107
#>  8     8 Task 3983940 8-03-20 13:26:00    8-03-20 13:35:00      100
#>  9     9 Task 3983939 8-03-20 13:26:00    8-03-20 13:35:00      103
#> 10    10 Task 3983938 8-03-20 13:23:00    8-03-20 13:35:00      106
#> 11    11 Task 3983937 8-03-20 13:21:00    8-03-20 13:29:00      104
#> 12    12 Task 3983936 8-03-20 13:20:00    8-03-20 13:32:00      102
#> 13    13 Task 3983935 8-03-20 13:20:00    8-03-20 13:27:00      107
#> 14    14 Task 3983934 8-03-20 13:19:00    8-03-20 13:20:00      102
#> 15    15 Task 3983933 8-03-20 13:19:00    8-03-20 13:26:00      100
group_data <- time_data %>% 
  distinct(group) %>% 
  mutate(id = group, content = paste("Person", group))
group_data
#> # A tibble: 6 x 3
#>   group    id content   
#>   <dbl> <dbl> <chr>     
#> 1   100   100 Person 100
#> 2   102   102 Person 102
#> 3   104   104 Person 104
#> 4   107   107 Person 107
#> 5   103   103 Person 103
#> 6   106   106 Person 106
Created on 2020-08-31 by the reprex package (v0.3.0)
timevis(time_data, groups = group_data)
