The problem nobody's solving

Most OTA listings have zero photo captions. A 200-property portfolio means 3,000–10,000+ photos, each missing 250 characters of searchable text. That's 50–80 hours of revenue manager time nobody has, so the captions never get written, and the listings get punished by every search algorithm that matters.

It used to be just Airbnb, Vrbo, and Booking.com penalizing you. Now it's also every LLM that travelers use to plan a trip.

Why captions matter more than they did 12 months ago

OTA search ranking still leads with text

Airbnb's algorithm extracts keywords from photo captions. So do Vrbo and Booking.com. A "Living Room" photo with the caption "Stone fireplace anchors the rustic living room with leather sofas and a smart TV" matches searches for fireplace, rustic, smart TV — that the bare photo cannot.

Generative search makes this 10× more important

ChatGPT, Perplexity, Google AI Overviews, Claude — none of them see your photos. They see whatever text the OTA exposes. A property without captions doesn't exist in a generative search result. A property with sharp, amenity-specific captions shows up as the recommendation when a traveler asks "Find me a 3-bedroom near McCall with a grill and a hot tub."

This is GEO — Generative Engine Optimization. The same way SEO made your listings visible to Google a decade ago, GEO makes them visible to ChatGPT, Perplexity, and Google AI Overviews today. Photo captions are the cheapest, most direct lever available. They're the new alt-tags.

Captions convert browsers into bookers

Mattress quality. Wi-Fi speed. Whether the kitchen has a real espresso machine. The things that close the booking but a wide-angle photo can't show.

Competitive edge hiding in plain sight

Most hosts skip captions. So this is one of the cheapest leverage points in the industry.

What Pacer's tool actually does

Pacer's caption tool is built around the assumption that OTAs and LLMs don't see photos — they see strings of text describing photos. Our job is to produce the right strings.

Identifies the dominant amenity in every photo

A balcony photo with a grill in the foreground gets a caption that leads with the grill — not generic "embrace the tranquility" filler. A bedroom photo dominated by a stacked washer/dryer in the doorway gets captioned for the laundry, not the bed in the background. A bathroom anchored by a soaking tub gets the soaking tub by name.

Generic captions don't convert. Specific captions do. The classifier is trained to find the single most prominent feature in each frame and the caption generator is required to lead with it.

Detects four classes of anomaly automatically

Every photo runs through Gemini 2.5 Flash vision and gets flagged when any of the following are present:

Class 1
Blur / Low Quality

Out of focus, dark, overexposed, tilted, lens flare. The exact problems OTAs penalize.

10 flagged · Casago Long Valley
Class 2
Seasonal Decor

Christmas trees, Halloween decor, anything that dates the photo and breaks year-round bookings.

52 flagged · Casago Long Valley
Class 3
People Visible

Guests, owners, staff. Hard reject for most channels.

116 flagged · Casago Long Valley
Class 4
Wrong Property

Photos that clearly belong to a different listing. It happens more than you think during portfolio imports.

60 flagged · Casago Long Valley

Each flagged photo gets a free-text note from the AI explaining what it saw. Click the photo and you see "image is blurry and grainy" sitting under it. No more guessing why something got flagged.

Enforces the 250-character OTA hard limit

Airbnb and Guesty both cap photo captions at 250 characters. The tool flags any caption over the limit before you ever try to paste, with a live character counter under each caption (156 / 250 chars). Going over turns red.

One-click copy or one-click push to your PMS

Every caption card has a Copy button. Click → caption is on your clipboard, ready to paste anywhere. For Guesty users, we go further: a single CLI command pushes every approved caption directly into Guesty's Property Photos API. No manual paste, no copying 3,000 strings into 3,000 fields. The captions live on the channel within seconds.

For non-Guesty PMSes, the same data exports to JSON, CSV, or Excel.

Reviewer dashboard built for speed

The Pacer Portal gives the property manager (or our team, on Full Service) a per-portfolio dashboard showing:

  • Per-anomaly filter pills with live counts — Blur / Low Quality (10), Seasonal (52), People (116), Wrong Property (60) — click any to filter the table to only listings with that issue
  • Per-listing badges showing the anomaly mix (6 Blur · 6 People · 3 Wrong Property) so you can spot the worst offenders at a glance
  • Click any photo to expand into a full-screen lightbox with the AI's notes
  • Approve / reject / edit / bulk approve with keyboard shortcuts
  • All decisions persist in Postgres — no lost work between sessions

How the pipeline works

01 · Extract

Pull every photo automatically

From Guesty, Hostaway, Track, Eviivo, Streamline, or via Airbnb URL scraping. No manual upload.

02 · Classify

Gemini 2.5 Flash vision examines each photo

Returns: room type (one of 18 categories), the dominant amenity, structured features detected, confidence score (0.1–1.0), and any anomalies.

03 · Generate

A separate Gemini call writes the caption

15–40 words, under 250 characters, leading with the dominant amenity. Prompt is tuned to skip filler ("embrace the tranquility", "experience comfort") and lead with concrete nouns.

04 · Review

Captions land in the Pacer Portal

Property managers (or our team) approve, edit, or reject. Bulk approve unflagged photos in one click.

05 · Push

Approved captions go live

Directly into Guesty (one click, programmatic) or export to your PMS of choice.

Proof of concept

We've run the pipeline at scale on multiple Pacer-managed portfolios:

Portfolio · Book Hocking

~200 Airbnb listings · 9,278 photos processed

~87% auto-approved at >0.8 confidence. 6 photos flagged for blur, processed in under an hour.

9,278 photos processed
~87% auto-approved
<1 hr end-to-end
Portfolio · Casago Long Valley

108 Guesty listings · 3,479 photos · 218 anomalies flagged

10 blur, 52 seasonal decor, 116 people, 60 wrong property. New captions live in Guesty for the lead pilot listing, written and pushed in under five seconds via the API.

3,479 photos processed
218 anomalies flagged
<5 sec caption → Guesty

Cost: pennies per photo. A full 10,000-photo portfolio costs roughly $3 in AI inference — less than one bottle of wine per portfolio per regeneration.

How we package it

Tier 1

Standard — Generate & Deliver

Full portfolio captioned. ~87% are ready to push immediately. Your team reviews the rest. Captions delivered to your PMS or as JSON / CSV / Excel.

What changed

If you want to be visible to the next decade of search — Google's still-growing AI Overviews, ChatGPT's planning workflows, Perplexity's travel queries, the next thing none of us have heard of — your listings need to be readable as text. Photo captions are the cheapest, fastest, highest-leverage way to do that. They're the new alt-tags. They're how AI knows what your property is.

Pacer writes them. Pacer flags the photos that shouldn't be on your listing in the first place. Pacer pushes them live. You stay focused on revenue.

Not sure where your portfolio stands? Understand how AI search surfaces STR listings — and why the text layer matters as much as pricing. Or read the pricing mistakes that cost property managers $50K+/year.

Talk to Jon

Let your revenue managers manage revenue.

No commitment required.

Tell us your portfolio size and PMS. We'll walk you through what the pipeline looks like on your actual listings.

Prefer email? jon@pacerrev.com · No commitment required.