Cleaning Operations CRM
A Salesforce demo org built to manage the full operations of a cleaning business — from capturing customer enquiries and scheduling jobs, through to automated invoicing and payment tracking — all in one place.
“A small cleaning business needed a central system to manage customer enquiries, schedule cleaning jobs, automatically generate invoices, and track payments — replacing a fragmented mix of spreadsheets, emails, and phone calls with a single, real-time Salesforce solution.”
Project Overview
This use case captures the business context and solution design for a Cleaning Operations CRM, built on the Salesforce platform as a portfolio demonstration of Salesforce administration skills.
The business operates as a small-to-medium cleaning company, servicing residential properties and working with letting agencies. Before this solution, operations were managed manually — bookings tracked in spreadsheets, invoices raised by hand, and payments recorded separately with no link back to the job or customer record.
This Salesforce org replaces that fragmented approach with a connected, automated system. Customer enquiries are captured as Leads, converted to Accounts, linked to Properties, and progressed through to Cleaning Jobs, Invoices, and Payments — with automation handling the admin at each key step.
Business Problem Statement
No Central System for Enquiries
Customer enquiries came in via phone and email with no single place to log, track, or follow up — resulting in lost leads and missed opportunities.
Manual Job Scheduling
Jobs were booked via phone and noted in spreadsheets. No visibility of cleaner workload, scheduling conflicts, or upcoming jobs across the business.
Invoicing Not Linked to Jobs
Invoices were produced separately with no automated connection to a completed job — leading to billing delays and occasionally missed charges.
No Real-Time Payment Visibility
Outstanding balances were tracked in spreadsheets. There was no instant view of who owed what, making it difficult to chase overdue payments promptly.
No Management Reporting
Every report required manually pulling data from multiple sources. No real-time view of job status, revenue, or cleaner performance existed for leadership.
No Consistent Customer Records
Customer information was scattered across email threads and contact books — making it impossible to build a single, reliable view of each customer.
Core Objects
The solution uses two Salesforce standard objects and four custom objects to accurately reflect the operational model of the business.
| Object | Type | Purpose |
|---|---|---|
| Leads | Standard | Captures initial customer enquiries before qualification and conversion. |
| Accounts | Standard | Represents the customer — an individual homeowner or letting agency. |
| Properties | Custom | Stores the address(es) to be serviced, linked to the Account. |
| Cleaning Jobs | Custom | The core operational record — scheduled date, assigned cleaner, and job status. |
| Cleaning Invoices | Custom | Billing records auto-generated when a Cleaning Job is created. |
| Cleaning Payments | Custom | Payment records that automatically update the linked Invoice balance. |
Key Object Relationships
End-to-End Process Flow
The following steps describe the full customer journey, as managed within the Salesforce org.
Automation (Salesforce Flows)
Three record-triggered Flows automate the core business processes, reducing manual data entry and ensuring data consistency across the system.
- Automatically creates a linked Cleaning Invoice record
- Sets initial Invoice status to Unpaid
- No manual steps required — billing is immediate
- Updates the Amount Paid field on the linked Invoice
- Recalculates the outstanding balance
- Sets Invoice status to Paid when balance reaches zero
- Updates the Invoice status to reflect job completion
- Stamps the Completed Date on the Job record
- Triggers reporting dashboard refresh
Reporting & Dashboards
The Operations Dashboard provides real-time visibility for the business owner, replacing manual reporting entirely.
Jobs by Status
Live view of all Scheduled, In Progress, and Completed cleaning jobs across the business.
Upcoming Jobs
Jobs scheduled in the next 30 days, grouped by assigned cleaner to show workload distribution.
Finance Overview
Outstanding invoices, total amounts due, and payments received — tracked by period.
Lead Pipeline
Enquiry volumes, lead source breakdown, and conversion rates from enquiry to customer.
Data & Security Model
Access is controlled through Salesforce’s layered security model — ensuring users see only what is relevant to their role.
Role Hierarchy
- Owner / Admin
- Operations Manager
- Cleaner / Staff
Profiles
- System Administrator
- Standard User
- Custom Cleaner Profile
Permission Sets
- Job Management
- Invoice & Payment Access
- Read-Only Reporting
Key Design Decisions
The following decisions were made during the solution design phase and are worth understanding in context.
Properties as a Custom Object
Salesforce has no native Property object. A custom object was created to represent service addresses, linked to Accounts via a lookup relationship — allowing multiple properties per customer, which is essential for letting agencies.
Automated Invoice Creation via Flow
Rather than relying on manual invoice creation, a record-triggered Flow ensures a Cleaning Invoice is always generated the moment a Job is saved — eliminating billing gaps with zero admin overhead.
Payments as a Separate Child Object
Payments are stored as a custom object related to Invoices rather than a simple field — allowing multiple part-payments against a single invoice, which reflects how cleaning businesses are actually paid in practice.
Custom Cleaner Profile for Data Security
Cleaners are given a restricted profile that limits access to their own assigned Jobs only — preventing visibility of financial records, other customers, or management data, keeping the system secure by design.
