500 listings on the platforms, and no way to check them
They were written at different times by different people. Which title gets cut off, which amenity never made it into a photo — you could only find out by opening every listing and going through it by hand.
Manual review → a report through a linkIn short
Around five hundred flats, nearly every one with an Airbnb listing and a good part of them on Booking too. They were written at different times by different people, and the quality swings: here the title is truncated, there an advertised amenity appears in none of the photos, elsewhere the description argues with the amenity list. To see it, a listing has to be opened and gone through by hand — an hour each.
A tool that does it from a link. It opens the listing with a real browser, reduces it to data and runs it through five independent checks: title, description, photos, reviews and contradictions between the blocks. Out comes a score, a letter and up to eight fixes with ready title variants, a rewritten description and a list of shots to take.
What hurt
The company runs short-term rentals in the UK. Around five hundred flats, nearly every one with its own Airbnb listing and a good part of them on Booking as well.
The listings were written at different times by different people. One is polished: thirty photos, a description broken into sections, every amenity ticked. The one next to it has a title in all caps, eight photos and three lines of text. Both sit in the same search results and earn very different money.
The problem is not that bad listings exist. The problem is that nobody knows which ones they are. To find out you have to open the listing, scroll through every photo, match the amenity list against the description, read the reviews and look for the places where something is promised that isn't there. That is an hour of careful work per listing. For five hundred, three months — by which time the first ones are stale again.
And a sagging conversion rate doesn't say what to fix. It only says something is wrong somewhere.
What usually breaks in a listing
Airbnb truncates the card at roughly 50 characters. Anything longer the guest never sees. Anything under 25 leaves the line half empty.
Set entirely in capitals it reads as shouting and displays worse in search results.
Eight people advertised with three beds listed. Even doubling up, the numbers don't add up.
The washer is in the amenity list and in none of the photos. A guest filtering for it never reaches the listing.
The text promises a private entrance, the list marks it as unavailable. That surfaces at check-in and ends up in a review.
The latest review is over three months old. Platforms treat recency as a signal and factor it into ranking.
What we built
An in-house tool. You paste a link to the listing and a couple of minutes later a report opens: a score from zero to a hundred, a letter from A to F, a breakdown across five sections and a list of what to fix first. One thing at a time below.
A real browser opens the page
An Airbnb listing cannot simply be downloaded. The visible text of the page holds only the shell of the site — menu, buttons, footer. The content itself loads separately and lives in a service block a person in a browser never sees.
So the system opens the page with a real browser, the way a person would, takes that block and sorts it out: the description by sub-sections, the amenity list separately from the list of what is explicitly absent, ratings by category, the star distribution, review dates.
Booking and Vrbo go through the same path. No separate parser is written per platform: the page is reduced to one and the same set of data, and from there the checks don't care where it came from.
Five checks instead of one overall score
The report is assembled by five independent checks: title, description, photos, reviews and contradictions between the blocks. Each runs on its own branch and knows only its own subject.
That is more predictable than one big “rate this listing” request: a narrow check doesn't drift into generic advice. It is also sturdier — if one of them fails, the other four still make it into the report instead of an error message.
The final score is a weighted sum. Contradictions weigh 0.25, description and reviews 0.22 each, title 0.16, photos 0.15. If a section simply isn't there, the score is normalised across the remaining ones rather than zeroed out.
Contradictions carry the heaviest weight
Not by accident. Weak copy is a matter of taste; a mismatch is a fact the guest notices at check-in and writes up in a review.
The system cross-checks the title, the amenity list, the four description blocks, the reviews, the photo captions and the capacity figures. It looks for specifics, not for “could be better”: the title says pool and the amenities have none; the description promises a private entrance the list marks as unavailable; a review complains about exactly what is advertised.
Some of it is caught by arithmetic before any AI is involved. Eight guests against three beds don't add up without reading a word of the text.
Every mismatch carries a weight. A blatant one, the kind that leaves a guest feeling misled, costs fifteen points. An inconvenient one, seven. A cosmetic one, three.
We look for the advertised amenities in the photos
Counting photos is pointless: thirty shots of the same living room are worse than ten that do the job.
So the check runs on nine amenities guests actually scroll and filter for: TV, kitchen, oven, stove, dining table, washer, private entrance, refrigerator, backyard.
First the system works out which of those the listing claims at all. Then it downloads the photos and looks at the images themselves — which of the claimed amenities actually made it into frame. Not the captions, the pictures.
A typical finding: the washer is in the amenity list and appears in none of the photos. Not a lie, technically — but there is no proof, and the guest picks the flat next door.
Reviews are counted, not paraphrased
This section is scored by arithmetic, not by AI. In play: the overall rating, the six Airbnb subscores, recency, the star distribution and the trend.
The rules are plain and blunt: the latest review older than ninety days costs fifteen points; the weakest subscore below 3.5 costs twenty; more than ten reviews adds ten.
The AI writes one paragraph in words on top of the numbers. If it doesn't answer, the number is still there and the report holds.
The weakest subscore is pulled out separately. “4.7 on average” says nothing. “Cleanliness 4.3 while everything else is 4.9” says where to go.
It ends with ready copy, not advice
Nobody acts on “improve your title”. So the last step doesn't advise, it rewrites.
The plan holds up to eight items ordered by weight: blatant contradictions first, then the weakest review subscore, then the amenities missing from the photos, and only after that the title and the description.
Each item comes with variants. For the title, up to three ready ones, each under eighty characters, carrying the city or neighbourhood and one strong amenity. For the description, one or two rewritten blocks ready to paste, with no “fill this in” gaps. For the photos, a scene brief per missing amenity: what to shoot, from which angle, in what light.
One hard rule: never promise what the listing doesn't have. Otherwise the tool that catches contradictions would be creating them.
What's in the report
The same job, as a product
Listings here are a special case. The general job is this: take scattered data, check it against rules and hand back a report you can read, not a spreadsheet you still have to work out.
Weekly summaries on sales, payments and stock are built the same way: the assistant does the counting and sends the result where you already read it.
Result
Recognise the problem?
Give us 30 minutes and we will tell you which of this can be repeated at your company.