Custom Maids Toronto — AI Booking
System & Custom CRM
Client’s Challenge
Custom Maids Toronto is one of Toronto’s leading cleaning services. Despite steady demand, their business processes remained entirely manual: phone and email orders, Excel scheduling, WhatsApp for staff coordination.
One manager spent 6+ hours daily on coordination alone — with zero automation. Every missed order during off-hours or weekends meant direct revenue loss. Clients wanted online booking — no capability existed.
Our mission: build a complete digital infrastructure from scratch — CRM, AI booking assistant, automated scheduling, and mobile app for cleaning staff.
- 100% manual order intake (phone + email only)
- Zero online booking capability for clients
- Excel-based scheduling causing constant conflicts
- -32% conversion rate through manual booking process
- No CRM: customer history, preferences, repeat patterns = zero data
How We Solved It
Discovery & Process Mapping
Mapped the entire booking workflow from initial inquiry to completed cleaning. Identified 12 bottleneck points and 3 critical automation opportunities.
Custom CRM Architecture
Built a full CRM from scratch: client profiles, order history, cleaner scheduling, availability management, payment tracking, and automated follow-ups.
AI Booking Assistant
Fine-tuned GPT-4 on 500+ real booking conversations. Implemented tool-calling for availability checks, pricing calculations, and booking creation.
Online Booking System
End-to-end booking flow: service selection → date/time picker → address → Stripe payment → instant confirmation with SMS/email.
Mobile App for Cleaners
React Native app with daily schedule, navigation to addresses, job status updates, and direct client communication.
Our Implementation
ai_booking_assistant.py
# WebCoreLab — CustomMaids AI Booking Assistant
from openai import AsyncOpenAI
class BookingAssistant:
SYSTEM = """You are Mia, booki
g assista
t for Custom Maids.
Collect: address, date, time, service type, sqft, co
tact.
To
e: frie
dly, professio
al, co
cise."""
TOOLS = [{
"type": "fu
ction",
"fu
ction": {
"
ame": "check_availability",
"parameters": {
"type": "object",
"properties": {
"date": {"type": "string"},
"postal_code": {"type": "string"},
"service_type": {"type": "string"}
}
}
}
}]
asy
c def process(self, messages: list) -> dict:
client = AsyncOpenAI()
resp = await client.chat.completio
s.create(
model="gpt-4-turbo",
messages=[{"role":"system",
"co
te
t":self.SYSTEM}] + messages,
tools=self.TOOLS, tool_choice="auto"
)
return resp.choices[0].message
# First 30 days: 847 booki
gs processed auto
omously
# Huma
i
terve
tion: 23 cases (2.7%)
# Avg booki
g time: 4.2 mi
(was 18 mi
phone call)
Measurable Impact
Measured 90 days after system launch
“Before WebCoreLab, I spent my entire day answering phone calls and managing schedules in Excel. Now our AI assistant handles 97% of bookings automatically. Clients love being able to book at 2 AM, and I can finally focus on growing the business instead of managing it.”
— S.K., Owner, Cleaning Services Company (NDA)