---
name: images-decision
description: Score a listing against the rivals it actually competes with, find the one element dragging it down, and return the single edit worth making. Use when a listing underperforms products that look no better, or before spending money on new images or copy.
---

# The images decision

You are helping a 7 or 8 figure Amazon seller decide **what to change on a listing**, and just as often, what not to change.

Most listing audits produce a checklist of thirteen improvements. A seller does none of them. This skill returns one edit, and the reason the other twelve do not matter yet.

## What you need

- **Their ASIN.** Required.
- **Up to 10 competitor ASINs.** If they do not have them, pull them at their price tier first (see step 0).
- **Marketplace.** Default US.

## Step 0, only if they have no competitor list

```
mcp__helium10__search_products(
  filters={
    title_include_keyword: "<the product noun>",
    price_from: <their price in CENTS minus 25%>,
    price_to:   <their price in CENTS plus 25%>
  },
  marketplace="US",
  sort_by="-monthly_revenue"
)
```

Take the top 8 by revenue from the saved file. The ASIN is in `amazon_standard_identification_number`, not `asin`.

**Compete at price tier, not at category.** A $140 product benchmarked against $30 products produces advice that is confidently wrong.

## The work

### 1. Shape first, it is one cheap call

```
mcp__helium10__get_competitor_overview(
  main_asin=asin,
  competitor_asins=[...],
  marketplace="US"
)
```

This returns price, BSR, reviews, rating, sales and revenue for everyone, plus group averages. Before touching content, find out whether this is even a listing problem. If their price is 40% above the field and their sales are proportionally lower, the listing is fine and the price is the problem. Say that and stop.

### 2. The content scorecard

```
mcp__helium10__get_listing_score(
  main_asin=asin,
  competitor_asins=[...],
  marketplace="US"
)
```

Thirteen pass or fail criteria across copy, media and reviews, for every ASIN at once. What you are looking for is not their score. It is **where they fail and the winners pass**. A criterion everybody fails is not a disadvantage. A criterion only they fail is the whole answer.

### 3. Image stack by type

Listing score checks image count and video presence, not what the images actually say. Pull every image in the main ASIN's stack and every competitor's, and classify each one against a fixed image-planning taxonomy: main image (staged or white background), product includes, lifestyle in use, lifestyle size vs objects, results, size/weight, features, benefits, different uses/configurations, installation/assembly, a lot of text, bonus item, multi-buy discount, other brand products, before and after, comparison chart, gift item, happy customers, random/other.

Pull the `colorImages` data embedded in each Amazon product page (a `<script>` blob with `hiRes` URLs per image) rather than screenshotting the gallery by hand, it is faster and it does not miss an image the carousel lazy-loads.

Build a type-by-ASIN table, one cell per type showing the position number it occupies (or blank). Then apply the exact same rule the keyword step uses: **a type at least 2 of your competitors run and the main ASIN does not is a gap. A type only one competitor runs is that competitor's experiment, not a pattern**, do not report it as one. A type every ASIN including the main one already runs is the field's baseline, not a finding either way.

### 4. Keyword coverage

```
mcp__helium10__get_top_keywords(
  main_asin=asin,
  competitor_asins=[...],
  marketplace="US"
)
```

In multi ASIN mode this returns the shared keyword set with per ASIN ranks, which is exactly the "they rank, we do not" list. Note that a keyword only qualifies when at least 2 ASINs share it, at least 4 competitors rank, average competitor rank is 1 to 40, and volume is above 500. If it comes back empty with `no_ranking_keywords: true`, that is a finding: the listing is not sharing a keyword surface with its own price tier.

**The trap that ruined a real audit once: never call a high-volume, poorly-ranked term a "gap" off the main ASIN's own reverse keyword search alone.** A single-ASIN Cerebro pull (`get_keywords_by_asin`) returns every phrase the main ASIN is visible for, with its own organic rank and the term's marketplace-wide search volume, neither of which says anything about whether a real competitor is winning that term. A high volume plus a bad rank looks like an opportunity; it is only one if a competitor genuinely outranks the main ASIN there. Before naming a keyword a gap, check `get_keywords_by_asin` (or the multi-ASIN qualifying set above) for **every competitor's own organic rank on that exact phrase**. Three things can come back:
- **A real gap.** A competitor clears the top 10 (see the rule below) on the same term and the main ASIN does not. Report it.
- **A field-wide miss.** Nobody in the comparison set clears the top 10, main ASIN included. This is not a gap, real clicks and sales concentrate on page one, and if no one is there the whole field is standing outside the door together. Say so plainly, do not dress it up as an opening, and do not present the main ASIN's better rank number as a lead, #22 is not meaningfully different from #34 if neither is top 10.
- **A different product entirely.** Nobody, including the main ASIN, ranks at all. High volume with zero footprint anywhere in the comparison set is usually a different category riding the same search term, not an untapped keyword.

**A rank comparison only means something inside the top 10 (roughly page one), never rank order past it.** Amazon's own Search Query Performance data (`get_search_query_performance`, Search Query Analyzer) is the authoritative source for real click and purchase share on a term, but it requires Brand Registry and is scoped to `seller_id`, it can only ever be pulled for an ASIN the account owns, never for a competitor's listing. That means for any competitor comparison, `organic_rank` against the top 10 threshold is the honest substitute, not a fine-grained ranking. Comparing #41 to #147 and calling the smaller number a lead misrepresents two ASINs that are both, in commercial terms, invisible on that term. When the main ASIN's own ASIN is being audited (not a competitor's), pull SQP first if the account is Brand-Registered, it is real data and beats rank inference entirely.

**Always state the filter you applied, not just the resulting list.** A raw Cerebro pull (`get_keywords_by_asin`) returns several thousand phrases, most of them noise, foreign-language matches, one-off long-tail junk, terms with a handful of monthly searches. Whatever you show as "owns" or "the ceiling" is the product of a filter, and the filter itself is part of the finding, not an implementation detail to hide. Say it out loud: word count and volume floor used, whether organic rank was required (top 10, outside top 10), and that non-English or category-irrelevant phrases in the raw pull were dropped before anything got called a niche win or a gap. A list with no stated filter looks cherry-picked even when it isn't.

### 5. The detail, only for the gap you found

```
mcp__helium10__get_listing_details(main_asin=asin, marketplace="US")
```

Use `lqs`, `number_of_images`, `variation_count`, `sales_to_reviews`, `top10_keywords`. Ignore the three chart series unless the question is trend.

## Deciding which single edit

Rank candidate edits by **traffic unlocked divided by effort**, and be honest about effort:

| Edit | Effort | Unlocks |
|---|---|---|
| Backend keywords | an hour | indexing on terms they are invisible for |
| One bullet rewrite | an afternoon | relevance on a contested term |
| Add a missing image type | a few days, one image slot | closes a real, competitor-validated content gap |
| Main image | days plus money | click through across every keyword at once |
| Title rewrite | an afternoon, high risk | relevance, and risks every rank they hold |
| A+ / video | weeks plus money | conversion, not traffic |

**Traffic problems and conversion problems need opposite fixes.** If they rank and do not sell, images and A+ are the answer and keywords are a waste. If they sell well to the few who find them, it is the reverse. Establish which one it is before recommending anything, using rank versus conversion, not instinct.

## The output

```
THE ONE EDIT: [specific, nameable action]

This is a [traffic / conversion] problem.
Evidence: [one metric]

Where they fail and the winners pass:
  [criterion]     them: fail   field: [n] of [n] pass
  ...

Cerebro filter used: [word count floor, volume floor, rank condition, language/relevance exclusions applied]

Keyword gaps worth having, competitor-validated AND top-10-validated:
  "[keyword]"     [volume]/mo    best competitor rank [n, top 10 or it's not a gap]    them: [rank]

Image types the winners run that they don't:
  [type]     run by [n] of [n] competitors    them: none

Expected effect: [honest, with a range]
Time to see it: [weeks]

Do NOT do yet: [the expensive thing they are about to spend on, and why it is premature]

Do not touch the title: [yes / no, and why]
```

## Rules

- **One edit.** If two tie, pick the cheaper and name the other as the follow up.
- **Always include "do not do yet."** Sellers about to spend $4,000 on photography when their backend keywords are empty need to hear it, and nobody else will tell them.
- **Warn before any title change on a listing holding top 10 ranks.** That warning is worth more than the recommendation itself.
- **A high LQS is not a high performing listing.** LQS measures compliance with a checklist, not persuasion. A 9.1 that does not sell is a conversion problem the score cannot see. Never present LQS as the answer.
- **If the listing is fine, say the listing is fine.** Price, reviews and rank are all more common causes of flat sales than copy is.
- **Never call a keyword or an image type a gap off the main ASIN alone.** High volume and a bad rank, or a missing image type, means nothing until you check whether a real competitor actually has it. If nobody does, the main ASIN already leads a field nobody has cracked, that is a different finding and a better one.
- **State the Cerebro filter, every time.** Word count floor, volume floor, rank condition, and any language or relevance exclusions applied to the raw pull. An unstated filter reads as cherry-picking, even when the picking was fair.
- **A keyword gap only counts if a competitor clears the top 10.** Real clicks and sales concentrate on page one. A smaller rank number that is still outside the top 10 is not a lead over a rival, both are commercially invisible on that term. Say the field is wide open rather than implying the main ASIN, or anyone, has already won it.
