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
Role
Founding Product designer
Team
Founder & 2 engineers
Timeline
6 months
Industry
Enterprise B2B, Field service
Quick Summary - If you’re in a rush
HIGHLIGHTS
- Solo designer, no existing brief, scope was defined directly with the founder
- Caught a scheduling bug in QA where the ranking logic for cleaners didn't match the underlying data
- Turned a rejected pricing proposal into a shipped feature by pinpointing the exact usability problem it fixed
SOLUTIONS
- Automated the two most repetitive manual steps: property lookup and price calculation
- Turned scheduling into a recommendation, not an automatic decision
- Replaced ad hoc payment chasing with a configurable reminder sequence
IMPACT
- Up to 66% faster estimate creation
- 20% fewer same-day reassignments
- 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

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

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

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.
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
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
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
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