ThreadCloud SOPs

For the ThreadCloud team only

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.

When to use
Once at install — ThreadCloud Support runs this during onboarding to bring an existing Shopify catalog into the ThreadCloud schema. Re-run after big bulk imports of legacy products from another tool.

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

  1. Open Settings → Legacy Enrichment and start Clean Catalog.
  2. Confirm the run is in progress, navigate away, then return and verify the counts changed.
  3. Open one refreshed product and verify category, subcategory, brand, colour, season, stock type, and size scale. Do not expect advanced attributes from this MVP.
  4. 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.

  1. Seed Products — Scan Shopify catalog, create one enrichment job per product
  2. AI Classification — AI fills in category, colour, fabric, etc. per job
  3. Review & Fix — Walk the table, fix low-confidence rows
  4. Apply to Shopify — Write metafields back to Shopify products
  5. 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:

  1. Fetches the Shopify product + variants
  2. Calls Claude with the product title, vendor, type, tags, and description
  3. AI returns: category, subcategory, colour group, colour name, pattern, fabric, COO, fit, occasion, size scale
  4. 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.

Tip: select a range fast
Shift-click a row’s checkbox to select every row between it and the last one you clicked (the whole range takes the clicked row’s state). The anchor is per-page, so a range can’t span pages.

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

Tip — Confirm as-is
The Confirm as-is button is the time-saver. If AI inferred “Navy” with 65% confidence and you agree it’s Navy, one click promotes to Ready. No need to pick a different colour and pick back to trigger an edit event.

Bulk edit

To set the same value across many rows:

  1. Filter (e.g. only Lardini ties)
  2. Use the checkboxes to select rows — works for both Ready AND Needs Review now
  3. Click Edit Selected
  4. Pick the field + value once
  5. 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.

Tip: unknown vintage
For genuinely pre-ThreadCloud product with no meaningful season, type LEGACY in the Season field. It is accepted as a valid unknown-vintage season, so the row can go Ready instead of sticking on “Missing: 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:

  1. 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.
  2. Click Apply Selected
  3. Confirms how many will be written. If you selected mixed Ready + Needs Review, it warns about how many will be skipped
  4. Click Write metafields to N products

What gets written per product:

  • All tc_core metafields (category, colour, fabric, etc.)
  • All tc_measure metafields (size scale)
  • All tc_trade metafields (supplier_ref)
  • Variant barcode filled 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:

  1. Click Run Import
  2. ThreadCloud creates Order + Style + Variant rows in its own database for each enriched product
  3. Idempotent — re-running picks up new products, doesn’t duplicate

Rollback

If an Apply went wrong:

  1. Scroll past the workflow to the Applied table
  2. Select rows you want to undo
  3. Click Rollback

Restores the previous metafield values from the snapshot ThreadCloud took before writing. Works within 90 days.

Common mistakes

Skipping the Review step
Don’t go straight from Classification → Apply. AI gets things wrong on legacy data more often than on parse (less context). Walk the Needs Review filter at minimum.

Overwriting good metafields
If some products were already enriched by ThreadCloud, the default fill-blanks behavior protects them. Don’t check Overwrite unless you really mean it.

Resetting mid-run
The Reset All button wipes all preview/needs_review/error jobs and starts fresh. Useful if you completely changed the AI prompts, but destroys any manual fixes you’ve done. Reset Errors only (less destructive option) clears just the failed rows.

Next steps

  • Settings → AI & Models — tune the classification AI
  • Verify on the storefront — smart filters should now work for the enriched products