Problem
Images with similar visual characteristics shouldn't be placed next to each other in the same article. The current fit score doesn't include a structural similarity check between selected candidates.
Scope
src/pictova/engine/quality.py and the fit score math documented in docs/concepts/fit-score.md.
- Add a basic structural similarity signal (e.g. perceptual hash distance or color-histogram comparison) between candidates competing for adjacent slots.
- Keep it dependency-light: Pillow + numpy are already available.
- Unit tests with fixture images that are near-duplicates vs. clearly distinct.
Acceptance criteria
- Near-duplicate candidates are penalized when targeting adjacent placements.
- The signal is a documented, weighted component of the fit score, not a hard filter.
Difficulty: High · Credentials: None.
Problem
Images with similar visual characteristics shouldn't be placed next to each other in the same article. The current fit score doesn't include a structural similarity check between selected candidates.
Scope
src/pictova/engine/quality.pyand the fit score math documented in docs/concepts/fit-score.md.Acceptance criteria
Difficulty: High · Credentials: None.