Case Study / 04
§ Case Study / 04

Listing Optimizer

Scoping an AI listing optimizer for a short-term rental company. The first good decision was a smaller v1.

Role
Product lead · Opal AI LLC
Year
2026
Format
Fixed-fee scoping sprint
Client
Undisclosed

§ 01The Problem

The client's analysts kept listings competitive by hand: photo order, titles, descriptions, all checked against how each listing ranked in search. It was weekly work that scaled with headcount. The client wanted AI to take on the audit while their people kept the final say.

§ 02The Users

The analysts who own each listing come first. They would approve every change, so the tool had to make their week shorter, and it could not hand them a new queue to babysit. Then the founder, who was buying it and knew his operation better than any spec could.

§ 03Decisions & Tradeoffs

I started with a broader v1 that included pricing changes. The client corrected it by email. I rewrote the spec around his version, and it was better for it.

ExhibitScope and design calls for v1
DecisionWhat I choseWhat it cost
v1 scopeListing content only: weekly audits plus approved updates to photo order, title, and description.Pricing, the flashier feature, waits for v2. Listing edits are easy to review and undo. Price changes hit revenue the same day.
Photo rankingA vision model scores each photo.No API exposes per-photo click data, so the score is a proxy until real engagement data exists.
Write accessHardest callApprove first. An analyst signs off before anything is pushed to a live listing.Slower than auto-push. The client can turn on auto-push later, once the approvals earn it.
Pricing dataRead-only signal in v1.Pricing context can shape a suggestion but cannot change a price.

§ 04How Changes Get Checked

Here, the analyst's approval is the test. The design question was how to make that review fast enough that analysts would actually do it.

  1. Every change is a diff.Analysts see the before and after for each suggestion, then approve or reject it. Nothing touches a live listing without a yes.
  2. Sandbox before production.The build runs against a partner sandbox or an agreed test listing first, never a live guest-facing page.
  3. Proxies get labeled as proxies.Photo scores come from a vision model, and the spec labels them that way. Nobody should mistake the model's taste for click data.

§ 05Results

In two weeks on a fixed fee, the sprint turned a broad brief into a v1 the client could approve: the scope, the three data sources it reads, an approve-first workflow, and the access list the build needed.

§ 06What I'd Do Next

Measure approval rate by change type. When analysts approve one category of edit almost every time, that category has earned auto-push, and only that one. In parallel I'd find a way to capture real engagement data, so the photo score can graduate from a proxy to a measured result.

§ 07 — Over Coffee

The spec says in plain words that the photo score is a guess. I'd rather a client read that in the spec than find it out in month two.