Something like this?
library(tidyverse)
tibble(cat = letters, val = (2 + sin(1:26))^2,
val_min = val * 0.95, val_max = val * 1.05) |>
ggplot(aes(val, cat)) +
geom_col(aes(x = Inf), fill = "gray90", width = 1,
data = ~filter(., row_number() %% 2 == 0)) +
geom_point() +
geom_errorbarh(aes(xmin = val_min, xmax = val_max)) +
scale_x_continuous(expand = expansion(mult = c(0, 0.05))) +
theme_classic()