Cleaning Marketplace

Fundraised in Series A

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.

Industry: Home Services

Product: Online Marketplace

The scope of our work: front-end, back-end, QA

Solution: business digitalization


Client Goal:

The Client wanted to digitalize their offline business and create a B2C & B2B online cleaning platform.

Main Features
  • Registration


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.


  • Search & Booking


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)

– Address

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


  • Price formation


The cleaning price depends on the number of factors:

– Number of hours

– Extras 

– Day of the week


  • Payment


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.


  • Matching customers with cleaners


After a customer has added their card details, the marketplace runs a custom matching algorithm:

  1. Firstly, cleaners with the highest qualifications (rated from 1 to 8) are selected.
  2. Then, the priority cleaners are selected out of the ones with the highest qualifications. And again, from 1 to 8, where 1 is the highest.
  3. After that, the choice is between those cleaners who haven’t done any recent cleanings. 
  4. And only then, the cleaners are selected by seniority of registration.
  5. If it is a recurring cleaning, a cleaner is also checked for the availability for their whole cleaning period.

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. 


  • Notifications


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.


  • Cancellation


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. 


  • Admin Panel


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.

  • SEO optimization


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. 


  • Admin dashboard


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.


  • Localization


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.

#1 Challenge:

Double booking

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.

#2 Challenge:

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.

#3 Challenge:

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.

#4 Challenge:

Payment failure

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.

Project Stages
  • Migration of the old users’ database to the new one
  • Registration & authorization (for cleaners & customers)
  • Creation of one-time cleaning and recurring cleaning options
  • Sending out invitations
  • Accepting & denying cleaning jobs
  • Payment system
  • Reviews and feedback system
  • Profile pages
  • In-built calendar
  • Automatic invoice generation
  • Transaction and cash flow page
  • Calendar edits: ability to create events and indicate when and how many hours a cleaner works
  • Money transaction flow
  • The second alteration of the money flow 
  • Rescheduling of recurring cleanings  
  • Debugging
  • Support & maintenance
  • Permanent enriching with new features

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.

Our process

Ongoing since 2016

2 back-end developers | 2 front-end developers | QA | PM
Technologies we used
Sidekiq + Redis
Tools (hosting, monitoring etc.)


Success Stories

Automated a Work Order Status Tracking PropertyRepair
#Real Estate USA

PropertyScheduler is an American repair software platform for tracking work order status for real estate managers and tenants.

#Real Estate Belgium

Moovle is an Airbnb-like accommodation rental startup headquartered in Belgium.


Scale your team with us

Drive your business with our dedicated developers

    *By submitting this form, you agree to our Terms of Use and Privacy Policy.

    Alex, VP of Client Engagement