Distinguish private messages from posts?

In that case, you need to add post.topic.archetype as a field that gets sent.

Or, do Guardian.new(plugin _user).can_see? post and use the standard visibility checks.