When setting view, edit, and delete permissions for a user, currently the access levels are limited to "my contacts, team only, and all contacts".
The limitation with "Team only" permissions is that if a user is a member of multiple teams, then the contacts that they own would be visible to all of their team members, even though the access may want to be limited to the contacts that relate to that particular team.
Take this example: User A has responsibility for all contacts in Belgium and France, while User B has responsibility for contacts only in France. If User B only wanted visibility to User A's French contacts, but not Belgium, there currently isn't a way to do so.
If a French team was made and User A was a part of it, User B would be able to see the contacts owned by User A that relate to Belgium. If a team hierarchy was set with User A at a higher level (eg. All Europe) and User B was set to just France nested underneath, User B wouldn't be able to see any of the contacts.
My proposed solution to this would be to have the ability to set a property on the contact called "Team Owner" which would be a dropdown that allows users to select the team that has ownership of the record, in addition to the individual.
When setting permissions, you could then add the additional option for view, edit, and delete called "Team only (Restricted)" which would give the users access to the records owned by others on their team, but only those that also have a "Team Owner" which they are a part of.
This would create a lot more flexibility for setting access for individuals who fit in a different combination of teams, allowing them to collaborate better while also ensuring that access isn't being shared to other areas of the business which they should not have.
I mentioned the focus here to be on contacts, but this would apply to other objects such as Deals and Companies just the same.