# 2026-02-24 - Feed Manager - Next Steps

## Current State
- Shopify -> XML export is working for `rooflights`.
- Core GMC-required fields are present and valid in the latest feed output.
- JSON QA report generation is implemented and available per export run.

## Priority Roadmap

### 1) Feed Persistence + Approval Workflow (Next)
Goal: ensure optimisations persist across Shopify updates while allowing selective auto-sync.

- Introduce layered data model:
  - `raw_shopify` (latest source snapshot)
  - `enriched_feed` (computed + override values)
- Add field-level policy controls:
  - `auto_pass_through` (e.g. price, availability)
  - `approval_required` (e.g. title, description, category)
  - `locked_override` (manual value always wins)
- Add change-diff process per sync:
  - Auto-apply pass-through field changes
  - Queue approval-required changes for review
  - Preserve approved/locked overrides
- Add review queue + status model for pending/approved/rejected field changes
- Emit final feed from enriched layer, not direct raw data

### 2) Attribute Expansion for Visibility
Goal: improve Shopping/organic coverage and query matching.

- Add high-impact fields:
  - `google_product_category`
  - `product_type`
  - `item_group_id`
  - `custom_label_0..4`
  - `additional_image_link`
  - `product_highlight`
  - `product_detail`
  - `sale_price`, `sale_price_effective_date`
  - `shipping_label`
- Add title-length guardrail (<= 150 chars)
- Keep required field completeness and QA checks in report

### 3) Priority Product Strategy
Goal: signal best sellers / strategic products to campaign structure.

- Create scoring model (sales, revenue, margin, stock reliability)
- Map score to `custom_label_0` tier (`hero`, `core`, `long_tail`)
- Recompute on schedule with anti-flapping logic

## Suggested Delivery Sequence
1. Spec and implement persistence + approval workflow
2. Add attribute expansion + mapping framework
3. Add priority scoring + custom labels
4. Add operational tooling (review UI/CLI, audit trails, rollback)

## Notes
- Continue project-scoped implementation under `feed-manager/`.
- Keep reusable logic in shared code; client-specific rules remain under `clients/<client>/`.
