I’m pretty sure, with the successor of ProfileService (ProfileStore), it’s not possible, as it is focused on player data, that isn’t shared or stuff like that
However, it very much is possible with the usual DatastoreService
I am not familiar with either datastore module, as I’ve only used DatastoreService, without any datastore module, so my answer will be based on that
With normal datastores (ie no Datastore library), you can save slots to an arbitrary key (it could literally be a GUID, and then, you save the key (the GUID) inside of each player’s data (this could be in the ProfileService data table). So when a player is loading, you can retrieve the key to their slot, and then do another datastore request to load the slot itself. To allow multiple players to use the same slot, you can provide the key to every player
This does bring a problem though, what happens when the two players want to load the same slot, on two different servers? I assume you don’t want both players to load the slot, so I’d assume you’d want a lock system, so only 1 player can load the slot at a time. That is possible using UpdateAsync, as update async garantees request to a key are done in order (but the order is not guaranteed), and not at the same time, so the first player to load the slot can change a variable in the slot table to lock it, and the second player, when he tries to load it, fails, because he sees that the slot is locked.
There is more logic required for handling cases where datastore requests fail when unlocking the slot, by using a timeout system. I can explain that in more detail if relevant
So this answer is more specific to datastore in general, I will let others talk about ProfileService