Skip to content
Feature · Catalog

The SKU-level report that tells your team what to re-shoot.

Visual search is only as good as the photos behind it. Blurry thumbnails, low-resolution uploads, and bad lighting sink even the best retrieval model. Trooply's photo-quality audit scores every indexed product on four signals, ranks the worst offenders, and emits a concrete fix hint per SKU — the exact instruction your catalog team needs to improve the image.

Signals: resolution · blur · exposure · contrast Endpoint: GET /v1/products/quality-audit Per-product: score + worst component + fix hint Report: /portal/quality
How it works

Four objective signals, one combined score.

None of these signals are new — photo-QA tooling has used them for decades. Most visual-search systems throw them away. We keep them per-product so the report is actionable.

1. Measure

Resolution, blur, exposure, contrast

Each indexed image is scored on all four signals. Resolution = shorter side in pixels. Blur = Laplacian variance. Exposure = histogram clipping. Contrast = luminance std-dev.

2. Combine

Weighted mean into quality_score

A single 0–1 number per product, bucketed into Excellent (≥ 0.85), Good, Fair, and Poor (< 0.55). Stored on every product so downstream search calls can use it.

3. Act

Fix hint per worst offender

The lowest-scoring sub-signal drives an actionable hint: "re-shoot with tripod", "use diffused lighting", "upload at least 800×800". Concrete enough to hand to a studio photographer.

What you get

A catalog-wide audit with a bottom-N work list.

Distribution overview

See your catalog bucketed into Excellent / Good / Fair / Poor. Most merchants assume 95% of their catalog is great; the audit tells them where the long tail actually sits.

Worst-N work list

GET /v1/products/quality-audit?worst_n=20 returns the 20 lowest-scoring products with their component breakdown and fix hint. Hand this directly to the catalog team.

Common-problems summary

If 40% of flagged products are poor_exposure, that's a lighting-rig problem, not 40 individual product problems. The report surfaces patterns, not just instances.

Actionable fix hints

Every flagged product has a concrete instruction — low_resolution → "upload ≥ 800×800"; poor_exposure → "use diffused lighting, softbox at 45°"; blurry → "tripod, 1/250s minimum".

Usable in ranking

quality_score is on every search result's _match_breakdown. Use it as a tie-breaker, or bury products below a threshold until they're re-shot.

Portal report view

/portal/quality renders the audit as summary cards + a distribution bar + a ranked card list. Non-technical merchandisers can drive the re-shoot queue directly.

Use cases

What merchants actually do with it.

Monthly re-shoot queue

Bottom 5% gets rebooked

Every month the catalog team runs the audit, pulls the worst 5% by quality_score, and bookings studio time. Over a year the floor rises without anyone reviewing every product.

New-vendor onboarding

Gate on quality before indexing

Before a new vendor's products go live, run them through the audit. Anything under 0.55 is sent back with the fix hint. Quality stays consistent even as the catalog grows.

Search suppression

Hide unusable photos from visual search

A merchandising bury rule filtered on quality_score < 0.3 keeps truly broken photos out of image-search results. Text search still surfaces the SKU; the visual path waits for a fix.

Lighting audit

Spot a systemic studio problem

When "common problems" skews heavily toward poor_exposure, the fix isn't 40 re-shoots — it's re-aligning the softbox. The audit turns 40 bug reports into one lighting-rig ticket.

The signals, in detail.

Resolution

The shorter side in pixels. CLIP has trouble with edges below ~512 px on the shorter side — the model's input is 224 × 224, and upscaling loses the edge definition the attention heads depend on. Score drops sharply below 600 px; anything over 1200 maxes out.

Blur

Variance of the Laplacian on the greyscale image. A crisp in-focus shot has a high Laplacian variance (sharp edges everywhere). A blurry shot has a low variance. Robust against JPEG compression noise.

Exposure

How close the pixel-value histogram piles up against the 0 or 255 ends. A well-exposed product has most of its mass in the mid-tones. Harsh shadows clipping to black or blown highlights clipping to white both destroy colour information CLIP uses downstream.

Contrast

Standard deviation of luminance. Foggy, low-dynamic-range images where the product blends into the background score low. Most common on products shot against a same-colour backdrop without enough lighting differential.

Example response

GET /v1/products/quality-audit?worst_n=3

{
  "total_products": 1284,
  "average_score": 0.88,
  "distribution": {
    "excellent": 841, "good": 312, "fair": 97, "poor": 34
  },
  "common_problems": [
    {"label": "low_resolution", "count": 58},
    {"label": "poor_exposure",  "count": 41},
    {"label": "blurry",         "count": 22}
  ],
  "worst": [
    {
      "product_id": "SKU-4821",
      "name": "Marla Tote",
      "quality_score": 0.31,
      "worst_component": "poor_exposure",
      "fix_hint": "Use diffused lighting — a softbox or window at 45°. Avoid direct overhead lights that cast harsh shadows."
    }
  ]
}
FAQ

Common questions.

How often should I run the audit?

Scores are computed at indexing time and stored per-product — the audit endpoint just aggregates. Run the report whenever you want a fresh snapshot. Monthly is a reasonable cadence for most merchants; nightly after bulk imports if you're growing fast.

Why don't you score composition?

Composition is subjective and varies by category. Fashion wants lifestyle shots; electronics want clinical flats. We score objective physical signals and leave composition to your art director.

What if my catalog is mostly stock photography?

Stock photos usually score well on resolution and exposure but can drop on contrast if the backdrop is similar to the product. The audit will still surface the weakest SKUs; act on the fix hints.

Does re-shooting actually improve search?

Yes — we've seen similarity scores on direct-match queries move 12–18 percentage points for re-shot products. The gain compounds: better photos embed better, which means they rank better under organic load too.

Is the score visible on search results?

Yes — quality_score is included in metadata._match_breakdown on every result. You can filter on it, use it as a tie-breaker, or surface it in your admin UI.

Does the audit see my images, or just metadata?

Images themselves — the signals are measured on the raw pixels at index time. We discard the pixels after embedding + scoring; only the score and sub-component breakdown are persisted.

Fix the catalog problem, not just the search stack.

Every Trooply tenant gets the audit at no extra cost. Open /portal/quality after indexing to see the report.