AI for Cleaning Services: End-of-Tenancy Quotes and Photo Checklists

Coding Liquids tutorial cover featuring Sagnik Bhattacharya for AI for Cleaning Services: End-of-Tenancy Quotes and Photo Checklists.
Coding Liquids tutorial cover featuring Sagnik Bhattacharya for AI for Cleaning Services: End-of-Tenancy Quotes and Photo Checklists.

A cleaning service can quote an end-of-tenancy clean by giving an AI assistant a completed property form and its own timings for each room, then asking for a room-by-room quote with assumptions and exclusions. Photo checklists work the same way: a fixed shot list per room, taken by the cleaner, which AI turns into landlord and agent reports.

Two limits matter from the start. The quote is only as accurate as the minutes you feed in, and a photo only counts as evidence when it is untouched, dated and tied to the room it shows. AI does the typing and tidying between those two things. It does not know your timings, and it cannot see a room.

Follow me on Instagram@sagnikteaches

Before: twenty-minute quotes and photos nobody could find

The firm in this example is a four-person cleaning company that handles about 25 move-out cleans a month (another name for the same job), mostly for tenants, plus regular work from two agencies that manage rented homes for landlords. Everything here is an illustration, with invented but plausible figures.

Connect on LinkedInSagnik Bhattacharya

Quotes happen on the phone. The owner asks about the property while tapping numbers into a calculator, then retypes the result into an email. A quote takes about 20 minutes end to end, and a few enquirers book elsewhere before the email lands. Photos stay on cleaners' phones under names like IMG_4471, so when an agent queries an oven three weeks later, finding the right picture takes an evening.

Subscribe on YouTube@sagnikteaches

The firm sets three targets: a quote within five minutes of the property details arriving, a photo set for every job that can be found by job code and room, and a report that matches whoever asked for the clean.

The property form: ten answers that set the price

Everything starts with a form that the customer fills in online or the owner completes on a call. Ten fields do most of the work. The table shows why each one is there and what goes wrong without it.

FieldWhy it moves the priceWhat goes wrong without it
Property type, bedrooms, bathrooms, separate toilets, floorsSets the base minutes for each room"Two-bed flat" can mean one bathroom or two, and a staircase adds time
Empty, part-furnished or furnishedFurniture hides skirting and floors, and left-behind items must be cleared firstA "part-furnished" flat arrives with a full wardrobe and a loaded balcony
Condition per room: light, moderate or heavyPicks the column in your timings tableCustomers rate their own kitchen "moderate" until someone opens the oven
Oven type, hob, extractor, fridge-freezer, dishwasher, washerThe oven is the biggest swing in the jobA double oven or range cooker gets priced as a single oven
Carpet, hard floor or rugsCarpets need vacuuming, and a machine clean is a separate extraCarpet cleaning assumed included, then charged on the day
Windows: how many, inside only or outside tooCounted per windowPatio doors and conservatory roofs forgotten
Extras: balcony, garage, utility room, conservatory, loftEach adds a line or an exclusionExtras appear on the day and overrun the slot
Access: keys, parking, hot water and power onWithout hot water the crew cannot finish a kitchen or bathroomThe crew stands around and the time is billed to nobody
Standard required, and the date of the inventoryDefines what "done" means: the condition recorded at the start, or a general professional standardAn argument later about what was agreed
Check-out date, key-return time, re-inspection slotSets crew size and the order of roomsA two-person quote for a job that must finish by noon

A form this long puts some people off, so the firm splits it. The first six fields go on the website form, and the last four are asked by phone or email once the customer says yes. From week two it also asks for two photos with the enquiry, the oven with its door open and the bathroom, because customers' own condition ratings are the least reliable answer on the page (the week-one numbers below show why). The intake questions that make AI cleaning quotes accurate go further for general cleans; this form is trimmed for move-outs.

The example job the rest of this tutorial uses, as the firm's form records it:

  • Three-bedroom house on two floors, one bathroom, one separate toilet; the third bedroom is a box room.
  • Empty. The tenant has cleared everything.
  • Moderate overall, apart from the separate toilet, which is light. The oven photo shows baked-on grease, so the oven is rated heavy.
  • Single oven, gas hob, extractor, fridge-freezer. Vinyl in the kitchen and bathroom, carpet in the bedrooms, living room and stairs.
  • Eight windows, inside only. No extras.
  • Keys held by the agent, parking outside, power and hot water on.
  • The agent's inventory, dated 14 months ago, records the property as professionally cleaned, so the standard is a professional clean.
  • Check-out is Friday at noon, with a re-inspection at 14:00.

Your own timings are the part AI cannot supply

The assistant has no idea how long your cleaners take to descale a shower screen. If you let it guess, it produces confident round numbers that bear no relation to your crew. So the firm builds a timings table from its own records. For ten recent jobs the cleaner noted a start and finish for each room, and the owner averaged the results at each condition level. Per cleaner, in minutes, the table looks like this (yours will differ):

TaskLightModerateHeavy
Kitchen: surfaces, sink, cupboards, floor90120165
Oven, hob and extractor355080
Fridge-freezer, inside152030
Bathroom5070100
Separate toilet152030
Bedroom, standard304055
Box room or small bedroom253545
Living and dining space405575
Hall, stairs and landing354560
Window, inside, each61014

Two rules keep the table honest. A cell with no data yet stays blank, and the assistant is told to ask rather than fill it. And the table lives in one place, a ChatGPT or Claude project, so every quote uses the same numbers instead of whatever someone pasted last Tuesday. Both products let you keep files and standing instructions in a project, and Claude's projects exist on every plan, with up to five on the free plan.

The rate is a separate file: $40 per cleaner-hour for this example, two cleaners minimum on a move-out. Keeping it apart means a price change is a one-line edit rather than a hunt through old prompts.

The quote the assistant produces, and four things to fix

The instruction block goes into the project once. After that each quote needs only the completed form. This is the version the firm settled on:

You are the quoting assistant for a four-person cleaning firm. Use only the
files in this project: timings.csv (minutes per cleaner by task and condition),
rates.txt, included.txt and excluded.txt.

Input: one completed property form.

Output, in this order:
1. A table with one row per room or task: the condition level from the form
   and the minutes per cleaner from timings.csv.
2. Total minutes, then cleaner-hours (minutes divided by 60), then the price
   at the hourly rate in rates.txt. Show every step.
3. Crew size and time on site (cleaner-hours divided by crew size).
4. Options on separate lines BELOW the total, never inside it.
5. Three lists: INCLUDED and NOT INCLUDED (copied from included.txt and
   excluded.txt only) and ASSUMPTIONS.
6. QUESTIONS: anything missing from the form or the timings. Leave that row
   blank. Do not guess a time.

Do not mention deposits, tenancy rules or guarantees. Do not add any task
that is not in included.txt.

For the example job, the assistant returns a table like this (illustrative output, lightly trimmed):

Room or taskConditionMinutes per cleaner
KitchenModerate120
Oven, hob and extractorHeavy80
Fridge-freezer, insideModerate20
BathroomModerate70
Separate toiletLight15
Bedroom 1Moderate40
Bedroom 2Moderate40
Box roomModerate35
Living and dining spaceModerate55
Hall, stairs and landingModerate45
Windows, inside (8)Moderate80
Total600

600 minutes is 10 cleaner-hours, which at $40 gives $400 for the core clean. Two cleaners would be on site for five hours. The machine carpet clean is an option on its own line: five carpeted areas at $24 each is $120, and it is not part of the $400.

In the firm's first week of testing, the owner's checks caught four faults. They are typical of what a quoting assistant does when the rules are loose.

  1. It counted nine windows. The form said "eight windows plus the glazed front door", and the assistant added the door. The fix was a separate field for glazed doors and an instruction to count windows only from the windows field.
  2. It folded the optional carpet clean into the headline figure and presented $520 as the price. The fix was the rule that options sit below the total, with two printed labels: "Total (core clean)" and "Options".
  3. It listed "behind and under appliances" as included. That is not in the firm's scope. The fix was an included list stored in the project, with the instruction to copy from it and add nothing.
  4. Once, it turned 600 minutes into 10.5 hours. Assistants can slip on arithmetic, so the owner runs a ten-second check before sending: total minutes divided by 60, times the hourly rate. If that does not match the quote, the quote does not go out.

For a firm that quotes more than move-outs, the wider process of quoting and booking regular work is in how cleaning companies use AI to quote and book jobs in minutes. This tutorial stays with the move-out clean because of what comes next: the photos.

Photo checklist by room: the shots, the order and the file names

The cleaner takes two sets on every job: arrival photos before anything is touched, and finishing photos from the same positions. Guidance written for deposit disputes backs the habits below. It says photos kept apart from the reports should show a visible date and time, that a wide shot should come before each close-up, that a ruler or similar marker helps show the size of a problem, and that files should be named so anyone can tell what they show.

RoomWide shotsClose shotsInside, behind and underPhotos per set
KitchenFrom the doorway; from the far cornerWorktops, sink and taps, hob, oven door glassOven inside with racks out; extractor filter; fridge-freezer inside and seals; one cupboard per run; floor edges14
BathroomFrom the doorwayBath or shower tray, tiles and grout, screen track, toilet bowl and under the rim, basin and tapsExtractor cover; behind the toilet; floor edges12
Each bedroomFrom the doorwaySkirting and corners, window sill and frame, switch plateWardrobe inside; carpet by the door7
Living and diningEach end of the roomSkirting, sockets, window sillsRadiator top and behind; flooring edges8
Hall, stairs, landingBottom and top of the stairsStair edges, banister, front door glassCarpet edges; under-stair cupboard6
Not cleaningOnly if neededAny damage, stain or fault that cleaning will not fixWith a ruler beside itAs needed

For the three-bedroom example that comes to about 61 photos a set, or 120-odd for the job. The file name carries the structure: job code, room, item, before or after, then a sequence number, as in J2041_KITCHEN_OVEN-INSIDE_BEFORE_01.jpg. A name like that can be searched, sorted and audited without opening a single picture.

The cleaner's rules fit on a card in the van:

  • The first photo in each room is taken from the doorway, before stepping in.
  • After photos are taken from the same spots.
  • Use daylight or switch every light on. Blurred, dark or glare-struck photos do not help anyone.
  • The date and time are visible on the photo, through the phone's settings or a stamping app. Test it on one job before relying on it.
  • No edits, filters or "enhance" buttons, whether built into the phone or powered by AI. Keep the original files.
  • An issue photo is a wide shot first, then a close-up with a ruler beside the problem.
  • Anything cleaning cannot fix goes in the NOT CLEANING folder with a one-line note.

The team-level routine, including who checks the photos before the crew leaves, is covered in photo checklists and quality control for cleaning teams.

What AI does with the photos and notes, and what it must not

The firm uses the assistant for three jobs here and rules out two. Allowed: auditing file names against the checklist, turning the cleaner's one-line notes into captions, and drafting the reports. Ruled out: deciding whether a room is clean from its photos, and anything that edits, enhances or dates a picture.

The limits are well documented. Anthropic's vision guide says Claude does not receive image metadata, can make mistakes on low-quality, rotated or very small images, gives only approximate counts, and should be checked by a person for anything high-stakes. OpenAI's image-input guide says its models do not process original file names or metadata, and that images may be resized before analysis. The practical result is that dates must be visible in the picture or held in your own sheet, and a hairline crack in a 12-megapixel photo can vanish when the picture is scaled down.

Upload limits push the same way. On claude.ai a message takes up to 20 images of up to 10 MB each, so a 61-photo set is four messages. OpenAI's help centre put the cap on paid ChatGPT plans at 80 uploaded files every three hours as of October 2026, which a two-set job exceeds. That is a good reason to send the assistant file names and notes, and keep images for the odd close-up you want described.

The first job is the file-name audit. It needs no image at all:

Checklist: [paste the room checklist]
Files received for job J2041 (names only):
[paste the list of file names]

List every checklist shot with no matching file, grouped by room. List any
file whose name does not follow JOB_ROOM_ITEM_BEFORE-or-AFTER_NN.
Do not comment on image content.

A typical reply:

Missing: Kitchen BEFORE fridge-freezer inside; Bathroom AFTER extractor cover;
Bedroom 2 AFTER wardrobe inside.
Misnamed: IMG_4471.jpg; J2041_HALL_STAIRS_AFTER.jpg (no sequence number).
NOT CLEANING folder is empty, but the cleaner's note mentions a cracked
kitchen floor tile.

The second job is captions. The cleaner types a few words per photo group, and the assistant expands them. This is where it needs watching, because it inflates. Three lines from the firm's testing:

Cleaner's noteDraft caption from the assistantWhat the owner changed
oven door glass baked on, scraper x2 passesOven door glass: heavy carbon deposits removed with oven cleaner and scraper over two passesRemoved "oven cleaner". The note names no product. Kept "two passes".
grout by taps dark, scrubbed, still stainedMould removed from grout beside the tapsRewritten as "Dark staining in grout beside the taps; scrubbed, staining remains (not removable by cleaning)". The assistant had turned a stain into mould and then removed it.
bed 2 carpet, vac lines okCarpet in bedroom 2 freshly vacuumed, pile even and free of marksCut to what the note says: "vacuumed, vacuum lines visible".

The pattern is the same each time: the assistant adds a product, a cause or a result that nobody told it. The standing instruction is "use only what the note says; if the note does not say, leave it out". Even with that rule in place, a human reads every caption before the report goes out.

One job, two reports: the landlord version and the agent version

The same job record produces two documents because the readers ask different questions. A landlord wants to know the property is back in a lettable state, what it cost, and whether anything else needs attention. An agent wants something to file against the inventory and, if a tenant disputes a deduction, to attach. What the agent then does with the check-out paperwork is the subject of AI inventory and check-out reports from the agent's side, which is worth skimming so your report arrives in a shape the agent can use.

ReaderTheir questionOrder of the reportHow photos appear
LandlordIs it ready, what did I pay for, what else should I know?Result, cost, exceptions, then a gallery linkBefore and after pairs by room in a shared folder
AgentDoes it match the inventory, and will it hold up if challenged?Inventory section by section: tasks ticked, photo references, notesFile references in the table, with the folder as the archive

The landlord prompt keeps to plain language and a single page:

Write the landlord report for job J2041 from the record below. One page,
plain language. Order: the result in two sentences; what was done, room by
room, one line each; anything cleaning could not fix, with photo references;
the price as quoted; where the photos are kept. Use only facts in the record.
If something is not in the record, leave it out.
Record: [task ticks, cleaner notes, photo list, quoted price]

A trimmed version of what comes back:

Job J2041: the clean was completed on Friday morning by two cleaners. Every task on the agreed list was done, apart from the grout beside the bath taps, which is stained and will not lift with cleaning. Photos of every room before and after are in the shared folder. Two items are for you rather than us: a loose bathroom extractor cover and a cracked kitchen floor tile, both photographed under NOT CLEANING. Price as quoted: $400.

The agent version is the same facts arranged against the inventory:

Inventory sectionTasks tickedBefore photosAfter photosNote
Kitchen11 of 11KIT-B01 to B14KIT-A01 to A14Oven door glass baked on; two passes with scraper
Bathroom9 of 10BAT-B01 to B12BAT-A01 to A12Grout beside taps stained after scrubbing; not removable by cleaning
Bedrooms 1 to 318 of 18BED-B01 to B21BED-A01 to A21Vacuumed; vacuum lines visible
Not cleaningn/aNC-01 to NC-03n/aCracked floor tile; loose extractor cover

One more rule: the invoice says cleaning and nothing else. Anything that is a repair goes in the report as an observation, not onto the cleaning invoice. A cleaning invoice that itemises visits and chases payment shows the layout. The next section explains why the separation matters.

What a deposit dispute asks of the paperwork

This is general practice, not legal advice, and the rules differ from one deposit arrangement and tenancy agreement to another. Whoever ends up deciding a dispute was not at the property on the day, so the decision rests largely on paperwork. One deposit-protection scheme's evidence guidance lists signed inventories, check-in and check-out reports, date-stamped photos, invoices, receipts and contractors' quotes, and the messages that passed between the parties.

Several points from that guidance and from landlord-body advice bear on a cleaning firm's documents:

  • The inventory should record the standard of cleaning at the start. That is the baseline everything at the end is compared with. Where the property was professionally cleaned at the start and the inventory says so, the tenant is expected to return it to that standard.
  • A claim has to match its paperwork. One of the commonest mistakes listed is claiming for cleaning while the invoice refers to repairs and redecoration. Keep your invoice and report in step, line by line.
  • Costs have to be reasonable and proportionate, and an itemised quote can count as evidence even before the work is done. Your room-by-room quote is useful to a landlord for that reason.
  • Smells are the hardest thing to prove from photos, so a claim about odour leans on written records: the check-out report's note and a cleaning invoice that details the work done. If a smell survives your clean, say so in the report, with the room and what you tried.

Now a realistic mistake. A crew took its "before" photos of the bathroom after a first wipe-down, so the pictures showed a cleaner room than the agent's check-out report described. The agent's text said heavy limescale, the firm's photo showed hardly any, and both documents looked unreliable. The fix was procedural: the doorway shot comes first, before the cleaner steps in, and the cleaner ticks "arrival photos done" for each room before the first cleaning task in that room can be ticked.

Four weeks in: what the numbers showed

The firm rolled the setup out over four weeks. Week one was the form and the timings table, tested on the next five move-outs: each was quoted from the form, and the crew logged its actual minutes. Week two was the photo standard on six live jobs. Week three was the reports. Week four was the first real challenge.

The week-one test compared quoted minutes with the minutes the crew actually took:

JobQuoted minutesActual minutesDifference
A540585+45 (+8.3%)
B600610+10 (+1.7%)
C420390-30 (-7.1%)
D720810+90 (+12.5%)
E480470-10 (-2.1%)
All five2,7602,865+105 (+3.8%)

An overall gap of 3.8% looks fine, but the two biggest overruns, jobs A and D, both had ovens that customers rated moderate and the crew found heavy. The form had not yet asked for an oven photo. Adding that request, together with a rule to treat an unknown oven as heavy until a picture says otherwise, was the firm's first change.

In week two, four of the six live jobs came back missing at least one after-photo. The file-name audit caught every one before the crew left the property. By week three the landlord and agent reports each took about ten minutes to check, against 40 minutes of typing before.

Week four brings the first real test: an agent queries the oven on a job. The owner searches the shared folder for the job code and the word OVEN, finds the before and after pairs in two minutes, and sends the relevant two pictures with the agent version of the report. Nothing about that is clever. It is the file naming, doing what it was set up to do.

Three lessons from the month:

  • Your timings table matters more than the prompt. Better wording never fixed a wrong number, and a stale table gave wrong quotes with perfect formatting.
  • The cheapest quality control is the file-name audit, because it needs no judgement and catches the gaps while the crew is still on site.
  • Keep the assistant on words and sums. Whether a room is clean stays a human call made on site, with a checklist.

Questions cleaners ask before they try this

Can AI tell from a photo whether a room is clean enough?

Not reliably. It can describe what it sees, and it will sometimes describe things that are not there or call a stain by the wrong name. Anthropic's own guidance says to verify image readings for anything high-stakes. Let the cleaner's ticked checklist and your own inspection decide; use the assistant to tidy the wording afterwards.

Should the phone camera add a date stamp to every photo?

Yes where you can. Guidance written for deposit disputes says photos kept apart from the reports should show a visible date and time. Test your phone's setting or a stamping app on one job, and keep the untouched original files as well, because the assistant will not read the file's hidden data for you.

What if the agent's check-in inventory says nothing about cleanliness?

Say so on the quote. State the standard you are cleaning to (a professional clean) and ask the agent or landlord to confirm in writing that this is the standard they want. Where the inventory records no standard at all, any claim about cleaning has less to be compared with, and your own before photos carry more weight.

How long should I keep job photos after the clean?

Longer than any dispute window you might face. Time limits for raising a deposit dispute differ between schemes, so ask the agent or the scheme how long theirs is and keep your photos beyond it. Photos that show tenants' belongings or papers are personal data, so delete them on a schedule you can explain.

Further reads

Sources: Anthropic's vision guide and its help pages on file uploads and Projects; OpenAI's image-input guide and help-centre page on file uploads (October 2026); published evidence guidance from deposit-protection schemes and landlord bodies on cleaning disputes.

Want your quotes and job photos set up properly?

On a 1:1 call we'll look at how you quote and record move-out cleans today, pick the first step worth automating, and decide whether your existing booking tool can carry it.

Book a 1:1 call with me