Hoppa till huvudinnehållet
Tilbake til bloggen
Sales and pricing

From floor plan to price: how to build a cleaning quote in minutes, not days

Jonas Forså
8 min
Automatisk romgjenkjenning i CleanFlow: rommene er tegnet opp, merkelappene lest av og koblet til riktig rom

This is what an ordinary cleaning quote looks like from the inside: a site visit with a measuring wheel and a notepad, an evening in a spreadsheet, a day in Word, and a quote that goes out three to five days after the visit. By then the client has two other quotes, and the fastest one has often already won.

The strange part is that almost everything you need to price the building already sits in a file the client has: the floor plan. The rooms, the square metres, what is a corridor and what is a toilet. This article shows how to go from that file to a signable quote, and why the price gets better, not just faster. We use CleanFlow as the example, because that is where we built the flow.

What you need: a floor plan

The client almost always has a drawing. Ask for it before the site visit. It is often in the FDV documentation or the lease, and municipalities have it in the property department. You can upload PDF, PNG, JPG and WebP directly. DWG and DXF files from the architect are read in the browser and turned into an image.

If the drawing is old and some rooms have been merged or split since, it matters little. You adjust the rooms afterwards. The point is to stop measuring what has already been measured.

Step 1: Upload and let the rooms be detected

Under Surveys you choose "New survey" and "New floor plan survey". You upload one drawing per floor and crop the image so only the plan itself is included.

Then you run room detection. The software finds the walls on the drawing and draws each room as its own area. If the drawing has labels with room numbers and areas, they are read and linked to the right room. The result is a list of all rooms with a suggested name, room type and size.

Automatisk romgjenkjenning i CleanFlow: rommene er tegnet opp, merkelappene lest av og koblet til riktig rom

This is a suggestion, not an answer key. You go through the list, remove what is not a room, split rooms that were merged with the split tool, and draw by hand what the software did not find. Then you import the rooms you want. On an ordinary office building the review takes a few minutes, not a morning.

If the drawing has no dimensions, you set a scale with the measuring tool on a known length, for example a 90 cm door, and the areas are calculated from that.

Step 2: Set room type, frequency and tasks

Now you have the rooms. What remains is to say what kind of rooms they are and how often they should be cleaned. For each room you set room type, floor type, furnishing level, accessibility and frequency. You do not do it room by room: select all the offices and set the values once, or use "Copy setup" to paint one room's setup onto the others.

Romlista i CleanFlow med romtype, etasje, areal, beregnet tid, oppgaver og frekvens per rom

Each room then gets the tasks that belong to its room type from your template, and the time per visit is calculated from them. If you want to override the time on a room you know takes longer, you do it directly.

One rule is worth noting: a room without tasks gets no price, even if it has a frequency. That is deliberate. You should not invoice the client for a room nobody will actually do anything in. It is also why the estimate survives a tender audit: every krone can be traced to a room, a task and a frequency.

Step 3: The estimate calculates per room

From here the estimate calculates itself. The model is the same as in our cleaning cost estimate, just automated:

  • Time per visit for each room = minutes per m² for the room type (from your cost template) × area × floor factor + setup time
  • Visits per year come from the room's frequency
  • Hours per year for the building = the sum of all rooms
  • Cost price = hours × true hourly cost + consumables per m² + other cost lines
  • Client price = cost price + markup

The rates live in cost templates. Use the default template to get started, or enter your own minutes per m² per room type, your hourly cost and your markup. The markup can be set per quote, per template or as the default for the whole company.

The rates get better over time. When cleaners complete tasks in the app, actual time per task is stored, and the system calculates actual minutes per m² per task type across all your buildings. If a template is off, the task template shows it in red, and "Update estimate" writes the actual average into the template with one click. The next quote is priced with numbers from your own buildings.

Kostnadsestimat for et kontorbygg i CleanFlow: årskostnad, besøk per år, timer, bemanning og kostnad per besøk

The result is an estimate with annual cost, hours per year, recommended staffing in full-time equivalents, cost per m² and per visit, and a final sum with markup. All of it per room under the hood, so you can answer when the client asks why the toilets cost more than the meeting rooms.

If you want to show the client two levels, you create two plans on the same building, for example "Standard" with daily sanitary cleaning and "Basic" with three times a week, and compare them side by side. The quote can include both as options.

Scenarioer og lagrede estimater for samme bygg, klare til sammenligning

Step 4: The quote builds itself

From the estimate you go to "Create quote". The quote builder sets up the document in sections you can switch on and off and move around: cover, summary, about the building, survey findings, cleaning solution, floor plan and zones, quality and follow-up, client portal, price overview, options, about us, environmental profile, references and reservations. The PDF updates live while you edit.

Tilbudsbyggeren i CleanFlow med seksjoner til venstre og PDF-forhåndsvisning til høyre

The "Floor plan and zones" section is the one clients stop at. It shows the building's own drawing with the rooms coloured by frequency: daily in one colour, weekly in another. The client sees at a glance what they are buying, without reading a table. The price overview below lists room, room type, area, frequency, visits per year and price per month.

Then you send the quote: the client's name and email, start date and validity, invoicing frequency, and signing method, email or BankID. The client opens the quote in their own portal, reads, and signs. You are notified, and the signed contract is ready for download for both parties.

Once the contract is signed, you click "Review and activate". The building moves into operations with the same rooms, tasks and frequencies you priced. Nobody types the plan in again, and what you promised in the quote is what the cleaners get in the app.

Site survey straight from the phone

You do not have to wait until you are back at the office. In the CleanFlow app you start the survey where you stand: take a photo of the floor plan hanging in the entrance and let the rooms be detected from the photo, or draw them. If you have an iPhone or iPad Pro with LiDAR, you walk through the floor and scan the rooms as you go. The app builds the floor plan with room polygons and accurate square metres directly from the scan, with no drawing from the client.

Then you set room type and floor type on each room as you walk around, and see the price estimate before you leave the building. The office opens the same building on desktop, adds frequency and tasks, and finishes the quote. The client gets the quote the same day as the site visit.

No floor plan? Use Quick proposal

Sometimes the drawing does not exist, or the client wants a ballpark before the site visit. Then you use Quick proposal: enter rows with room type, floor, count and area, or import an Excel list, set the frequency, and build the quote from that. Same estimate, same quote builder, just without the drawing. The drawing can be added later once you are in operation.

What it means for sales

  • You answer the same day. The quote is ready while the client still remembers the meeting. That is often the difference that decides it.
  • The price can be defended. Every room has its own time, frequency and price. If the client asks to drop a wing or lower the frequency in the basement, you see the effect immediately.
  • No double work. The rooms from the quote become the rooms in operations. What you priced is what you deliver, and what you can document to the client afterwards.

Frequently asked questions

Which file formats can I upload? PDF, PNG, JPG and WebP directly, up to 4 MB per file. DWG and DXF are read in the browser and turned into an image. If a DWG file is too large, hide layers or zoom in on the floor before exporting.

How accurate is the room detection? Good enough that the review takes minutes, not hours. Rooms with clear walls and labels are almost always right. Open-plan areas, glass walls and scanned drawings with poor contrast need more manual adjustment. You always review and approve the rooms before they are imported.

What if the client has no floor plan? Use Quick proposal with a room list or Excel import, or draw the rooms by hand on a sketch image. The drawing can be added later.

Can I use my own rates? Yes. The cost templates are yours: minutes per m² per room type, hourly cost, consumables, setup time and markup. The default template is only a starting point.


Want to try it with one of your own buildings? See how CleanFlow goes from floor plan to quote, or try it free for 14 days.

From floor plan to cleaning quote: rooms, square metres and price automatically | CleanFlow Blog