---
convoy: scan-visual-catalog-search
brief_number: 2
depends_on: [1]
recommended_model: composer-2.5-fast
model_tier: fast
files:
  - lib/card-embed.js
  - scripts/backfill-card-embeddings.js
  - package.json
  - test/lib/card-embed.test.js
---

# Brief 2: Catalog embedding backfill

## Goal

Server-side embed job using `cohere/embed-v4.0` via AI Gateway; idempotent backfill from `cards.image_url`.

## Acceptance criteria

- [ ] `lib/card-embed.js` exports `embedCardImage`, `formatEmbeddingForPg`
- [ ] `npm run backfill-embeddings` script (skips rows with embedding unless FORCE=1)
- [ ] Rate-limited (`SLEEP_MS`) and DRY_RUN support
