Legacy Enrichment
The retroactive upgrade flow. Takes your existing Shopify catalog (products created before ThreadCloud, or by another tool) and stamps them with ThreadCloud’s metafields so they show up in smart filters, financials, and Merchandising views.
Clean Catalog MVP
Use Clean Catalog when the goal is to restore core merchandising facts without running vision over the entire legacy catalog. It runs in the background, so you can leave the page and return to the status card. It refreshes reviewed rows only: category, subcategory, brand, colour group, colour name, pattern, season, stock type, source/schema timestamps, and canonical size scale.
It does not infer or overwrite advanced fabric, construction, care, fit, occasion, or pack attributes. Ambiguous or incomplete rows remain in Needs review and are not written to Shopify. This is the safe one-click path for making the core merchandising views useful again.
Clean Catalog smoke check
- Open Settings → Legacy Enrichment and start Clean Catalog.
- Confirm the run is in progress, navigate away, then return and verify the counts changed.
- Open one refreshed product and verify category, subcategory, brand, colour, season, stock type, and size scale. Do not expect advanced attributes from this MVP.
- Run Merchandising → Inventory Snapshot and confirm the refreshed timestamp and tracked physical on-hand disclosure.
If the action reports zero safe fixes, review the source facts first. Do not force an overwrite of ambiguous rows.
The five-step workflow
The page is shaped as a numbered checklist. Walk it top to bottom.
- Seed Products — Scan Shopify catalog, create one enrichment job per product
- AI Classification — AI fills in category, colour, fabric, etc. per job
- Review & Fix — Walk the table, fix low-confidence rows
- Apply to Shopify — Write metafields back to Shopify products
- Import to Database — Optional. Backfills the ThreadCloud database with the enriched products (only needed for dashboard/Merchandising)
Step 1 — Seed Products
Click Seed Products.
ThreadCloud paginates through every active Shopify product (filters out archived + draft) and creates one row in the enrichment queue per product. Each row starts in PENDING status.
Products already tied to ThreadCloud styles (active pipeline products) are skipped — they don’t need legacy enrichment.
Typical seed time: 30 seconds for 5,000 products.
After seeding:
- Total seeded shown in the success banner
- Number skipped shown (these are TC-managed products or thin-data SKUs like gift cards)
Re-seeding
If you add new products in Shopify Admin and want them enriched too, click Re-seed. Adds new rows, doesn’t duplicate existing ones.
Step 2 — AI Classification
After seeding, click Run Classification.
The background worker starts processing pending rows. For each:
- Fetches the Shopify product + variants
- Calls Claude with the product title, vendor, type, tags, and description
- AI returns: category, subcategory, colour group, colour name, pattern, fabric, COO, fit, occasion, size scale
- Deterministic engines run too: size scale (from variant data), brand code, supplier ref (from description regex)
Worker speeds:
- ~1 product per second under normal conditions
- Slower when Anthropic is under load (retries kick in automatically)
- Faster than seeing-individual: workers process 5 jobs in parallel per batch
Progress shows:
- Total classified count
- ETA based on rolling rate
- The ambient bar fires COMBING THE RACK
You can navigate away — the worker keeps running. Status endpoint polls and self-heals if the worker dies.
Stopping mid-run
Click Stop. Worker halts after the current batch (5 jobs).
Failure recovery
If individual products fail with Anthropic errors, they go to ERROR status with the error message. Dismiss them in bulk (View errors → Dismiss All) or click each to retry.
Step 3 — Review & Fix
After classification, the table shows every job. Each row has:
- Shopify product title + vendor
- Vendor Ref (extracted from description, if found)
- Category + Subcategory (with confidence indicator)
- Colour group + Colour name
- Pattern
- Status: READY or NEEDS REVIEW
Filter pills at the top: All / Needs review / Ready. Next to them, a Brand dropdown (“All brands (N)”, then each vendor with its review count) narrows the table to one brand. The brand filter stacks on top of the tab filter, and everything downstream (sort, pagination, checkboxes, Select All Ready) acts on exactly the filtered set. Changing brand or tab resets the page and clears any selection, so a bulk action can never silently include rows you can’t see.
Walking the Needs Review queue
Click Needs review filter to focus on rows that need attention. Click any row to open the edit drawer on the right.
In the drawer:
- Fix the wrong field(s)
- Or click Confirm as-is in the footer if the AI got it right (this just promotes the row from Needs Review to Ready without changing values)
- Click Next → to move to the next needs-review row without closing
Bulk edit
To set the same value across many rows:
- Filter (e.g. only Lardini ties)
- Use the checkboxes to select rows — works for both Ready AND Needs Review now
- Click Edit Selected
- Pick the field + value once
- Click Apply — updates every selected row
Suggest seasons from product age
Legacy products often have no clean season tag. Click Suggest seasons from product age (it reads “Dating the rack…” while it runs) to fill the Season on rows where it’s empty, inferred from each product’s Shopify creation date (a Feb-to-Jul date reads as SS, Aug-to-Dec as FW, and a January product as the prior year’s FW, for example SS-23 or FW-23). It only fills blank Season cells, never overwrites one you set, and never changes a row’s status: every suggestion still flows through the normal review and confirm. Products Shopify can’t date keep an empty Season.
Decide stock types once per brand
When a brand’s products are almost all the same stock type, don’t edit them row by row. The Decide once per brand card (it appears once there’s enough reviewed history) lists each brand with its awaiting-decision and reviewed-history counts and a Set stock type dropdown (Leave for review / MTO / Stock / NOS / Special). Pick one and click Apply to N products. When a brand’s reviewed history is lopsided (at least 80% one type across at least 5 samples) that type is pre-selected for you. It never overwrites a stock type you set by hand, and each write re-checks the row, so a concurrent edit always wins.
Step 4 — Apply to Shopify
Once your rows are mostly Ready:
- Click Select All Ready (N) (top of the table). It selects the Ready rows in the current filtered view, so the button’s count and what actually gets staged always agree. If you’ve filtered to one brand, only that brand’s Ready rows are selected.
- Click Apply Selected
- Confirms how many will be written. If you selected mixed Ready + Needs Review, it warns about how many will be skipped
- Click Write metafields to N products
What gets written per product:
- All
tc_coremetafields (category, colour, fabric, etc.) - All
tc_measuremetafields (size scale) - All
tc_trademetafields (supplier_ref) - Variant
barcodefilled from SKU (enables Shopify Admin batch label fallback)
What ThreadCloud does NOT touch:
- Product title, description, images
- Variant SKU, price, inventory
- Tags (unless you explicitly check the overwrite box)
- Any metafield in a non-
tc_*namespace
The Apply runs in batches of 50. Progress shows. Failures get logged with reasons.
Overwrite vs. fill-blanks
Default behavior: only fill metafields that are currently blank. If a product already has tc_core.category = "Suit", ThreadCloud won’t overwrite.
If you want to overwrite existing values (e.g. re-classifying everything after improving the AI), check Overwrite existing in the confirm dialog.
Step 5 — Import to Database (optional)
Only relevant if you want the legacy products to appear in:
- ThreadCloud’s dashboard order list
- Merchandising sell-through
- Financials roll-up
If you only care about smart filters working on the storefront, skip Step 5.
To run:
- Click Run Import
- ThreadCloud creates Order + Style + Variant rows in its own database for each enriched product
- Idempotent — re-running picks up new products, doesn’t duplicate
Rollback
If an Apply went wrong:
- Scroll past the workflow to the Applied table
- Select rows you want to undo
- Click Rollback
Restores the previous metafield values from the snapshot ThreadCloud took before writing. Works within 90 days.
Common mistakes
Next steps
- Settings → AI & Models — tune the classification AI
- Verify on the storefront — smart filters should now work for the enriched products