Set up companies, staff, and sub-groups
Create companies, add staff with the right role, and use sub-groups to organise people inside a company.
Cleanover organises people into companies, and roles are assigned within them. Team Management → Users opens a tree grid with company rows and their staff nested beneath, plus a second tab for Sub-groups.
Create the company first
Use Add New Company. Alongside name, address, contact details, and a colour, the drawer asks for Members and a role for each one. You cannot save until at least one member holds the Company Admin role — a company without an admin is rejected with At least one Group Admin is required.
Only users who do not already belong to a group appear in the member picker, so move someone out of their current company before adding them here.
Add staff
Add New User needs a name and either an email or a phone number — one of the two, not necessarily both. Assign a company and a role. Inside a company, the roles offered are Company Admin and Cleaner; the wider role list applies to users who sit outside any company.
There is no separate invitation step. Creating the user and then using Send Email Verification on their row is the invite. Reset Password sits next to it, and both are disabled when the user has no email address.
Removing people
Staff are archived, not deleted — the row action is Archive, reversible with UnArchive. This keeps their history attached to past jobs and invoices.
Sub-groups
Sub-groups organise people inside a company: pick an owner and members, and the owner is added to the members automatically. A member can belong to only one sub-group at a time — staff already assigned elsewhere appear disabled, labelled Currently in {group}. The company cannot be changed after a sub-group is created.
The user list filters to
Activeby default, andResetin the filter popover restoresActiverather thanAll. An archived colleague you are looking for is not missing — changeStatusto see them. The same applies toExport CSV: it exports exactly the filtered rows, so an export taken on the default filter silently omits everyone inactive.