It sounds to me like you could turn this into a group with automatic entry, and it would be pretty similar to what you had before.
Here’s my mediocre design:
Category: Reviews
Security:
staff can create/reply/see
reviewers can create/reply/see
everyone can reply/see
def after_create_post(post):
u = post.user
return if in_reviewers_group?(u)
return if post.category != reviews_category
count = count_review_posts(u)
if count >= 3
Jobs.enqueue_in(18.hours, :promote_to_reviewer, {user: u})
end
end
The code is just a rough overview of what you would need to do.
The “promote to reviewer” job would check to make sure that this third post didn’t have some kind of negative response, then give the user the “reviewer” group, which would allow them to create topics.