Your system is great, really, however I can´t seem to find a way to differentiate between different users of a directory / portal. Example:
1. User type A: service provider, can add listings.
2. User type B: service user, can review listings.
The most rudimentary way of doing that easily would be via user roles: subscribers can review listings authors and editors can add listings and review. Then dd the roles to the users directly or via a “user type” abstraction.
Therefore, at the simplest there should be a way to limit the adding of listings, reviews and all other functionality by user role. I can´t find it.
Otherwise, how would a portal with your system function with reviews? It really can´t when everyone can do everything. Reviewers should not be able to do listings, basic right?