Right now, the CI mirrors are created and maintained by a set of custom scripts and jobs.
It seems that Pulp can do what our current system does. The reason behind not using it when we first made the mirrors system was out desire to provide a quick solution and avoid adding more services to maintain.
There are however, quite a few reasons to want to switch to pulp:
Aside from RPMs it can also manage other interesting kinds of resources like Containers, DEB packages and Python packages.
If it works well for us - we can maintain less code by dropping the existing mirror management code
It has built-in distribution mechanisms that can be useful to scale it up.
It seems it has support for assigning packages to multiple repos. This cab be used as a tagging mechanism to implement
One very important concept for implementing the mirrors is creating immutable versions, or snapshots of the content. While this concept is supported by Satellite 6 and probably Katello, according to the document linked below this concept is only supported by Pulp 3 which seems to still be under development: