CBF FLO CASE STUDY

Cutting estimate creation from 60 minutes to 15 for a B2B cleaning software

I rebuilt how a lead becomes a priced, scheduled, paid customer for commercial cleaning companies

Quick Summary - If you’re in a rush

HIGHLIGHTS

  1. Solo designer, no existing brief, scope was defined directly with the founder
  2. Caught a scheduling bug in QA where the ranking logic for cleaners didn't match the underlying data
  3. Turned a rejected pricing proposal into a shipped feature by pinpointing the exact usability problem it fixed

SOLUTIONS

  1. Automated the two most repetitive manual steps: property lookup and price calculation
  2. Turned scheduling into a recommendation, not an automatic decision
  3. Replaced ad hoc payment chasing with a configurable reminder sequence

IMPACT

  1. Up to 66% faster estimate creation
  2. 20% fewer same-day reassignments
  3. Payroll cycle reduced from several hours → 1–2 hrs

CBF FLO’s business problem

PROBLEMS

Manual data entry delayed property pricing.

Estimates were priced differently depending on who wrote IT

Managers scheduled cleaners without proper visibility.

Failed payments & missed check-ins caused endless support tickets

SOLUTIONS

Automate data lookup, price calculation wherever possible.

Streamline pricing model with necessary flexibility.

Surface the right data for managers to improve visibility.

Design for failure states as much as possible.

Research - How did we figure out what to build for the users?

PRIMARY RESEARCH

Interviews with the people running the business day to day; sales, scheduling and finance over 3 weeks in April 2025. Turned their insights into these three personas below.

SECONDARY RESEARCH

Looked at how existing cleaning-ops and field-service tools like maid central handled maps and availability, to see what to borrow & what to avoid.

SALES MANAGER

Illustrated persona of a sales manager holding a phone

Pain — gathers property details and calculates price by hand for every estimate.

Consequence — quotes take 30–60 minutes and vary depending on who wrote them.

Need — the system pulls the data and prices the job consistently.

SCHEDULE MANAGER

Illustrated persona of a scheduling manager reviewing a map

Pain — holds availability, capacity and drive time in their head for every assignment.

Consequence — bad assignments surface the morning of, forcing same-day fixes.

Need —see availability, capacity, and drive time together, but still make the final call themselves

FINANCE MANAGER

Illustrated persona of a finance manager reviewing payment records

Pain — reconciles scheduled vs. actual time by hand, and chases failed payments with no set process.

Consequence — payroll takes hours per cycle; failed payments become open-ended risk.

Need — a staged payout process and a configurable response to non-payment.

Product Strategy - Deciding what was needed for Phase 1

Creating the new system flow by designing for each role. .

Three personas, one shared customer journey. Tradeoffs, constraints and edges cases live inside each one.

Sales Manager

The sales manager’s job is to turn a qualified lead into a signed, priced customer as quickly and consistently as possible. Two bottlenecks dominated: gathering property data and producing a reliable price.

Property data gathered by hand, every time

Every estimate required square footage, rooms, and stories. Looking that up manually cost roughly ten minutes before pricing could begin. So we integrated Zillow for a faster workflow.

Tradeoff: When Zillow has nothing: a clean manual-entry path opens instead of a dead end. The system never blocks the sales manager.

Options Considered

OPTION 1

Improve manual entry with better UX. Reliable, but still involves minutes of work we were trying to remove.

OPTION 2

Decision: Zillow integration, with a manual fallback that never blocks the estimate

Slide 1 with zillow integrations, slide 2 with manual workflow

Moving pricing out of people's heads

The same job could be quoted differently depending on who wrote the estimate. A master pricing model now calculates a consistent price from property and service attributes.

Tradeoff: Standardized logic made the table denser → color coding added as secondary affordance to preserve context while scrolling

Options Considered

OPTION 1

Hard-code every price combination — rigid, breaks the first time a rate changes

OPTION 2

Decision: Configurable master pricing model, calculated from property and service attributes

Estimate creation: 30–60 min → 15–20 min · pricing error down 20%

Scheduling Manager

Assigning a cleaner is not one decision. It is availability, capacity, drive time, and efficiency considered together. Managers were holding all of it in their heads and correcting bad assignments the morning of the job.

Turning operational data into decision support

Every estimate required square footage, rooms, and stories. Looking that up manually cost roughly ten minutes before pricing could begin. So we integrated Zillow for a faster workflow.

Tradeoff: surfacing every matched cleaner with five projected metrics can turn a fast decision into a harder one due to choice fatigue

Options Considered

OPTION 1

Auto-assign the top-ranked cleaner; removes context managers actually have, like a client relationship

OPTION 2

Decision: Rank and surface the variables, leave the cleaner assignment to the manager.

The same filter, rebuilt every morning

Managers face different scenarios throughout the week; under-capacity cleaners, jobs clustered in one zone, tight drive-time windows, end-of-day returns home. Rebuilding the same filters every time was pure friction.

Decision: Let managers name and save their own filtered views, reused on demand

Tradeoff: Saved views added a level of interface complexity in exchange for removing repeated daily setup.

Same-day reassignments down 20%

Finance Manager

A signed estimate is not revenue until the charge succeeds. A completed visit is not a paycheck until the data has been validated. Both needed designed states, not support tickets.

Failed payments had no consistent follow-up

Failure had to be a first-class path. Different businesses also tolerate different levels of risk, so the response could not be a single hard-coded rule.

Tradeoff: one hard rule is simpler; a configurable one respects different risk tolerance

Options Considered

OPTION 1

Cancel future bookings automatically on any failure; punishes a one-off card issue the same as a real non-payer

OPTION 2

No automated action, flag for manual follow-up; back to the manual burden this was meant to remove

OPTION 3

Decision: Configurable reminder sequence, then cancel or allow limited unpaid visits

Payroll — messy data to validated payout

Scheduled time, actual time, revenue, and tips all come from the same visit record. None of it could skip review before money moved.

Decision: batch-validate appointments before payout, instead of single processing

Tradeoff: faster than line-by-line review, but still needs a manager's sign-off before it reaches QuickBooks,

Payroll processing: several hours → 1–2 hrs per cycle

What changed

66%

Faster estimate creation

20%

decrease in Same-day reassignments

1-2hrs

faster payroll per cycle

20%

pricing errors & rework