Cleaning Operations Use Case

Cleaning Operations CRM — Use Case
Use Case Document

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.

Cleaning Operations Custom Objects Flow Automation B2C CRM Operations Dashboard Use Case v1.0
Business Context

“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

Account Properties (1:Many)
Account Cleaning Jobs (1:Many)
Property Cleaning Jobs (1:Many)
Cleaning Job Cleaning Invoice (1:1)
Cleaning Invoice Cleaning Payments (1:Many)
🔄

End-to-End Process Flow

The following steps describe the full customer journey, as managed within the Salesforce org.

1
Customer EnquiryA prospective customer contacts the business. The enquiry is captured as a Lead in Salesforce, recording contact details and service requirements.
2
Lead ConversionOnce qualified, the Lead is converted into an Account — representing the individual customer or letting agency — and an optional Contact record.
3
Property CreatedA Property record is created and linked to the Account, capturing the specific address to be serviced along with any access notes.
4
Cleaning Job RaisedA Cleaning Job is created against the Property, recording the scheduled date, assigned cleaner, and job status — the core operational record.
5
Invoice Auto-GeneratedA Salesforce Flow instantly creates a linked Cleaning Invoice when the Job is saved — no manual admin required, billing is never missed.
6
Payment RecordedWhen payment is received, a Cleaning Payment is logged. A second Flow updates the Invoice balance automatically — marking it Paid when fully settled.

Automation (Salesforce Flows)

Three record-triggered Flows automate the core business processes, reducing manual data entry and ensuring data consistency across the system.

Flow 1 Job → Invoice Creation
⚡ Trigger: When a Cleaning Job is created
  • Automatically creates a linked Cleaning Invoice record
  • Sets initial Invoice status to Unpaid
  • No manual steps required — billing is immediate
Flow 2 Payment → Invoice Update
⚡ Trigger: When a Cleaning Payment is recorded
  • Updates the Amount Paid field on the linked Invoice
  • Recalculates the outstanding balance
  • Sets Invoice status to Paid when balance reaches zero
Flow 3 Job Completion → Status Update
⚡ Trigger: When a Job is marked as Completed
  • 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.

👉 Non Profit B2B Portfolio
👉 Apex Operations Portfolio