Our Client used to run an offline cleaning service business in Scandinavia. At some point, The Client decided to automate and digitalize it and create an online marketplace – Cleaning Marketplace.
Cleaning Marketplace is an online marketplace that connects customers with professional cleaners in their local area to book cleaning services for their apartments.
Product: Online Marketplace
The scope of our work: front-end, back-end, QA
Solution: business digitalization
The Client wanted to digitalize their offline business and create a B2C & B2B online cleaning platform.
For customers: Users can register either before searching for a cleaner or during the booking process. Users have the ability to register and log in with their social media profiles.
For cleaners: Cleaners have to go through both identity and skills verification.
Identity verification: Cleaners have to enter their VAT identification number, ID Photo or a passport and identify the languages they speak.
Skills verification: Cleaners have a pre-screening which is a paid test cleaning of the company’s office.
Customers start searching for cleaners by entering a postcode. The postcode is validated by the Google API.
As Cleaning Marketplace is a managed marketplace, customers are automatically matched with cleaners (they do not choose a particular cleaner).
To be matched with cleaners customers indicate:
– Frequency of cleaning (just once/recurring cleaning)
– Apartment number and floor
– Apartment size (in m²)
– Number of floors, bedrooms and bathrooms to be cleaned
– Extra services (fridge, windows, oven, cabinets, etc.)
The marketplace suggests the needed amount of time and available time slots. This suggestion is calculated automatically on the basis of the above-mentioned parameters. If a customer reduces the needed time, the marketplace system requires them to provide clarification.
A customer also indicates location details.
A customer can book cleaning within at least 48 hours in advance or 72 hours if the cleaning is to be conducted on Friday.
If a customer has already used the marketplace before, they can choose a cleaner from the ones they have already dealt with.
The cleaning price depends on the number of factors:
– Number of hours
– Day of the week
Before making a payment, a customer can enter their discount. There are 4 types of discounts (Referral, Fixed, Percentage and Fixed-rate).
In order to pay, a customer fills in their card details. We have implemented Stripe Connect, payment system designed for marketplaces, as a payment gateway.
For this marketplace, we used a post-payment flow (after the cleaning is completed, the customer is charged).
If the payment doesn’t go through, a customer receives a notification that they have to conduct the payment on their dashboard.
After a customer has added their card details, the marketplace runs a custom matching algorithm:
The system sends a new invite to each cleaner every half an hour. When one accepts the job, that stops the system from sending invites to further cleaners.
To provide the ability of fast job acceptance, we send out an invitation to cleaners with a link in an SMS.
With this invitation link, a cleaner can either accept or decline the job without even logging in.
One day before the cleaning, a cleaner receives an email notification about the upcoming job.
On the day of cleaning, the “START” button appears in a cleaner’s personal account.
By clicking the “START” button a cleaner sends a notification about the start of the cleaning.
At the end of the cleaning, a cleaner presses the “STOP” button.
A customer has the ability to cancel a job 48 hours before the start time or 2 weekdays before a cleaning job scheduled for Friday, Saturday or Sunday.
Customers can cancel a recurrent cleaning at any time.
However, the customer will be charged for the cleaning jobs scheduled within the next 14 days.
This Cleaning Marketplace is a managed one, thus we implemented the expanded abilities for the admins.
Admins have abilities to:
– handpick any cleaner for a job.
– restart the matching algorithm.
– manually stop a completed cleaning.
– make a partial / full refund to the customer/cleaner.
– reopen the cancelled job.
For our SPA (Single Page Application) we used SSR (Server-Side Rendering). This gave us a better SEO optimization since the search engine crawlers directly see the fully rendered page. That means that when a robot requests a page from a server, it provides it with its HTML.
Since our customer wanted to use this admin panel in his following startup project, we decided to build an architecture from the front-end side in such a way that it would be possible to reuse and customize it later.
There are two languages used on Cleaning Marketplace. In order to make the Client able to make corrections to the site text at any time, Sloboda’s team integrated Loco REST API. This allows the Client to make edits to the texts in real-time without any developer’s participation. Our codebase contains the translated texts – anytime the Client makes any changes to the text, the texts are automatically saved in the code.
In the beginning, we used to face the issue of double booking. It used to happen with recurring cleanings (e.g. when customers booked a cleaning twice a week for the next month). The system didn’t check a cleaner’s availability for each cleaning date and time for the whole period; instead, it checked only the first booked cleaning date and time.
We created an algorithm that checks all the booked dates and time slots – of the cleaners within the recurring cleaning period.
Initial lack of management by admins
Though we implemented the calculation of time, there was still an issue with time overspending.
To indicate the start and finish of the cleaning job, cleaners have to press the “START” and “STOP” buttons accordingly.
We faced the problem that cleaners tend to forget to click on the “STOP” button, so it’s sometimes not clear whether there was overtime or not.
To expand admins’ abilities
Currently, admins have the ability to stop the cleaner’s job manually.
Changing business goals
Since a marketplace has a lot of business decisions to make, it can sometimes be confusing for startuppers to decide on certain points. This project experienced a few business changes that influenced the technical side of project implementation.
Introducing our way of solving issues
For each business change, our team of developers has suggested a few technical solutions to choose from.
Since the Customer’s business model includes a payment that takes place after the cleaning is completed, issues with conducting the payment used to occur (for example, due to customer’s insufficient funds). Plus, a cleaner’s payout happens in the same time frame as the customer being charged.
Notification about a payment failure
Once a payment fails, it triggers an email notification about the unpaid cleaning. This notification invites the customer to log into the dashboard (link in the email redirecting the user to the PTH dashboard) and click on the “PAY NOW” button.
In the dashboard, the customer can see the reason for the payment error. We used the Stripe system to define the types of payment errors.
Our team of developers helped Our Client to digitalize their offline business. A while after the product was released, Our Client got a significant growth in its number of users.
After the launch of Cleaning Marketplace, Our Client attracted an investment group and currently, we are working both on the new features and support.
March 2018 - now