Skip to content

Zerago Cleaning Services

Zerago OS: the complete operating system for a cleaning company

Role
Full-Stack Software Engineer, led architecture and build (via SETS Tech)
Dates
Jun 2026 – Oct 2026
Status
Live
  • Laravel 13
  • PHP 8.3
  • MariaDB / MySQL
  • Blade
  • Tailwind CSS 4
  • Alpine.js
  • Laravel Fortify
  • DomPDF
View live project
Zerago Cleaning Services

Summary

One Laravel system that runs a UK cleaning company end to end: website, CMS, CRM, cleaner app and customer portal, from first enquiry to signed inspection and VAT-correct invoice.

The problem

Zerago was running on spreadsheets, WhatsApp, email and paper. Enquiries got lost, prices weren't traceable, cleaners weren't tracked, VAT on deposits was easy to get wrong, and there was no proof of what had been done at a property. The business needed one system that could follow every job from enquiry to payment, keep cleaners compliant, and give customers evidence of the work.

Before

  • WordPress site
  • Spreadsheets
  • WhatsApp threads
  • Email
  • Paper
  • Several separate paid tools
  • About 10 jobs a month, tracked loosely
  • No proof of work done

After

  • One system for B2C and B2B
  • 15–20 jobs a month, each tracked from enquiry to payment
  • Photos, checklist and signed inspection on every job
  • Cleaners clock in and out
  • VAT handled at both tax points
From several tools and paper to one system.

Zerago Cleaning Services works with two very different kinds of customer: individuals booking a clean for their own home, and businesses such as landlords, letting agencies, Airbnb hosts and offices that manage many properties. Zerago OS gives the company one system for both. The public website wins the enquiry, the CRM Panel runs sales, scheduling, cleaners, quality, inventory, finance and people, the CMS Panel keeps the website current, and the Customer Portal lets customers see their quotes, bookings, service reports and invoices.

My role

Led the architecture and build via SETS Tech: I designed the architecture and data model, planned the work, built the core of the system myself and guided the in-house and freelance developers working with me. I turned the client's way of working into a full product spec: B2C and B2B flows, 13 roles, 34 business rules and the UK rules around VAT, right to work and minimum wage. I ran the client reviews on a staging site and moved the company off WordPress.

What I built

  • Turned the client's operating model into a full product spec: B2C and B2B flows, 13 roles, 34 business rules and the UK legal requirements around VAT, right to work and minimum wage.
  • Designed the architecture and data model, built the core of the platform and guided the other developers on the rest.
  • Built the phone-first job-day views for supervisors, cleaners and quality inspectors, and the customer portal for B2C and B2B accounts.
  • Ran client reviews on a staging site and moved the company off WordPress onto the new system, with redirects for every old URL.

Architecture

One Laravel app with four areas: website, CMS, CRM and customer portal. They share one database and one login, and each user is sent to their own area by role.

Zerago OS architecture diagram.

  • One Laravel application with four areas: the public website, the CMS Panel, the CRM Panel and the Customer Portal.
  • All four areas share one MySQL database, one login with role-based routing across 13 roles, and server-side policies checked on every action.
  • Alongside them: queue workers for PDFs and email, encrypted storage for addresses and access codes, and an append-only audit log of every change.
One app, four areas, one record of every job.

- Permissions are fixed in policies and checked on the server for every action. A standard cleaner can never see a property's address or access codes by any route, and access details are encrypted at rest. - Money is stored as integer pence, with VAT handled at both tax points. - Invoice and receipt numbers are gap-free. Issued documents and signed inspections can't be changed. - Every change is written to an append-only audit log. - PDFs and emails run on a queue, so no web request waits for them on shared hosting.

Key decisions and trade-offs

1. One system, not separate apps Chose: one Laravel app with four areas, one database and one login. Not: off-the-shelf tools joined together: a WordPress site, a cleaning-business CRM subscription and an accounting app. Why: every job has to be followed from enquiry to quote, booking, inspection, invoice and payment, with one record of it. Downside: Zerago now depends on one custom codebase that has to be maintained, instead of products other companies keep up to date. 2. Money as integer pence, VAT at both tax points Chose: integer pence, with VAT handled on the deposit and on the balance. Not: decimal amounts, with VAT worked out once on the final invoice. Why: VAT is due when the deposit is paid as well, and it was easy to get wrong in the old spreadsheets. Whole pence never drift through rounding. Downside: every amount has to be converted for display and input, and each rounding rule has to be written out. 3. Privacy checked on the server Chose: policies checked on the server for every action. Address and access codes are shown to the supervisor only and encrypted at rest. Not: one cleaner role that sees everything about the jobs it is given. Why: a standard cleaner must never see them by any route. Downside: the supervisor has to be on every job to let the team in, which makes scheduling stricter. 4. Records that can't be changed Chose: gap-free invoice and receipt numbers, locked issued documents, signed inspections with a tamper-evident hash, and an append-only audit log. Not: editable invoices and inspections with a change history. Why: the business had no proof of what had been done at a property. Now every job has evidence. Downside: a wrong invoice can't be edited. Finance issues a credit note and a new invoice instead.

Testing and quality

Built as an MVP first and tested in the field: real cleaners and real customers used the staging system on live jobs, and each round of feedback went back into the build before the next. The client reviewed every stage on staging before go-live.

Results

  • 15–20 cleaning jobs a month, up from about 10
  • 13 user roles, from sales to inspectors
  • B2B + B2C separate sales, pricing and invoicing flows

Live since October 2026 on zeragocleaning.co.uk, with 15–20 cleaning jobs a month, up from about 10, according to the client. It replaced the old WordPress site and the spreadsheets, WhatsApp threads and paperwork behind it. Enquiries, quotes, jobs, cleaners, inspections and invoices now live in one system, and every finished job comes with photos, a completed checklist and a signed inspection the customer can see in their portal. The business now runs B2C and B2B clients, marketing, leads, scheduling, cleaner clock in/out and invoicing from the same system, and no longer pays for the separate tools it replaced.

Key features

Job lifecycle diagram.

  1. An enquiry comes in through the website quote form.
  2. It lands on the lead board, B2C or B2B.
  3. A versioned quote is sent as a PDF with a tracked link.
  4. The quote becomes a booking, with a customer portal account.
  5. Scheduling offers the job only to available, compliant cleaners, needs a supervisor, and waits until all accept.
  6. On the job day, cleaners clock in and out, work through the checklist, take before and after photos and report issues.
  7. The job ends with a signed inspection, sealed with a tamper-evident hash.
  8. If it passes: a deposit receipt or balance invoice with gap-free numbering, then payment verified by Finance.
  9. If it fails: a free rework job is created automatically and goes back to scheduling.
Every job follows one path, and a failed inspection creates its own rework job.
  • Public website with a B2C/B2B split, six service pages, location pages, gallery, blog and a 5-step quote form that turns every enquiry into a lead.
  • CMS Panel for page content, blog, gallery, locations, testimonials, menus and SEO.
  • B2C and B2B lead boards (Kanban and table) with per-stage counts, two-way moves and archive with Undo, plus B2B opportunities with site analysis.
  • Versioned quotes with PDFs and tracked view links, converted in one step into a customer, portal account, properties and booking request.
  • Scheduling that only offers jobs to available, compliant cleaners, needs a supervisor on every job and waits until every cleaner accepts.
  • Phone-friendly Cleaner App with clock in/out, checklists, before/after photos and issue reports; address and access codes are shown to the supervisor only.
  • On-site quality inspection with a drawn signature and tamper-evident hash; a failed inspection creates a free rework job automatically.
  • Customer Portal for quotes, bookings, properties, service reports and invoices, with bank-transfer payments that Finance verifies.
  • Deposit receipts, balance invoices, monthly B2B invoices and credit notes with gap-free numbering and overdue reminders.
  • Inventory and linen tracking, recruitment and staff documents, payroll export, reports and an append-only audit log.

Development timeline

  • Discovery & spec
    Turned the client's operating model into a full product spec: B2C and B2B flows, 13 roles and 34 business rules, including UK VAT, right-to-work and minimum-wage requirements.
  • Build
    Designed the data model and built one Laravel platform with four areas: public website, CMS, CRM and customer portal, plus phone-first job-day views for cleaners and inspectors.
  • Staging & migration
    Ran client reviews and field tests with cleaners and customers on a staging site, then moved the company off WordPress onto the new system with redirects for every old URL.
  • Live
    Went live on zeragocleaning.co.uk in October 2026, replacing the old site, spreadsheets, WhatsApp threads and paperwork.

Testimonials

I highly recommend Rony. He served as both the Product Manager and joint developer for our B2B website, zeragocleaning.co.uk, and his impact was exceptional. Rony worked tirelessly to ensure the project reached the finish line, successfully guiding us through endless rounds of feedback and back-and-forth adjustments. He is incredibly attentive to detail and refreshingly straightforward in his communication. If you need a dedicated professional who delivers under pressure, Rony is your person.
Jeremiah YugbovwreClientBrand Dev