VARAi
Store analysis that maps a catalogue before it syncs
Sync Settings reads a sample of a client's store, measures which fields carry colour and size, and proposes mappings for a person to confirm before any sync uses them.
Catalogue sync · Data mapping · Shopify · Magento · Human approval
- product
- Store analysis and catalogue sync
- platform
- VARAi
- role
- CTO & forward-deployed AI engineer
Results
- Live run on a heritage British eyewear store; 6 accessories excluded and named
- 43 products · 1,605 variants
- Frame, lens and generic colour; lens, bridge, temple and frame width, each with its own coverage
- 7 targets
- Same store, two live runs: unsafe proposals refused instead of shown
- 6 → 2 proposals
- Test cases across the Sync Settings analyser, queue, routes and UI
- ~680 tests
Problems solved
8 problems
01One product per SKU couldn't hold variants
- broke
- Variants sat in a side table, so each colourway had nowhere to keep its own images, 3D model or try-on state.
- changed
- I rebuilt sync so every variant is a full internal product under one public parent, keyed by product and variant id.
- proof
- Duplicate SKUs are split by variant id and logged, never merged onto one row.
02A fully synced store showed zero coverage
- broke
- Coverage filtered on a store-id column that older products never had, so every product synced before it was invisible.
- changed
- Scope by tenant and source platform, and drop the filter instead of writing a backfill.
- proof
- Recorded as the root cause in the sample-first ADR.
03Reference ids proposed as colours
- broke
- A standard Shopify metafield holds pointers, not colours, and it ranked as the top proposal at 47% coverage.
- changed
- Reference-shaped values are now refused in the extractor sync itself uses, not just in the report.
- proof
- The second live run marked it Ambiguous and caught seven more fields of the same kind.
04Accessories skewed the numbers
- broke
- Sun-clips sat in the same store category as sunglasses, so category data could not exclude them.
- changed
- A word-boundary name rule excludes clips, and every exclusion is reported by name.
- proof
- A frame called Eclipse is kept while Sun Clips is excluded.
05The first 100 products aren't the catalogue
- broke
- Stores return oldest products first, so a head-of-list sample misses newer field naming.
- changed
- A deterministic sample takes the rarest product shapes first and flags shapes resting on a single product.
- proof
- The same store always yields the same sample, and tests assert the exact selection.
06Guessed confidence was wrong
- broke
- Scoring a field by its source type disagreed with what the extractor actually returned.
- changed
- Each field is probed through the real extractor and the lowest score across the sample is reported.
- proof
- The same colour field scores 0.8 on a single-variant product and 0.3 on a multi-variant one.
07Large catalogues broke paged queries
- broke
- Products × variants × metafields exceeded Shopify's 1,000-point query cost limit.
- changed
- A bulk-operation index polled by its own id, checkpointed so a crash never orphans it, and failed on any incomplete row.
- proof
- Byte caps, timeouts, retry limits and per-product caps (250 variants, 250 metafields) are enforced and tested.
08Magento sync, hardened end to end
- broke
- The Magento connector wasn't ready for real stores: authentication, large payloads, image galleries and 3D links all needed work.
- changed
- Seven fixes across key handling, tenant auth, byte-based batching, full image galleries and 3D model linking.
- proof
- Each fix ships with a test that fails if it is reverted.
Analyse the client's real data before acting on it, show the evidence and its measured confidence, and let a person approve the mapping.
stack · Node.js / Express · PostgreSQL · Shopify Admin GraphQL · Shopify Bulk Operations · Magento (PHP) · WooCommerce · React · TypeScript · Jest
More from VARAi
- P-01AI Designer & Material StudioLive AI design chat · AI that acts, not just answers · 3D materials · Render automationChat → live 3DDesign mode changes materials, lighting and exposure in the scene; Apply or Reject each change in the chat
- P-02Lens JourneyDeterministic rules engine · Prescription upload · Catalogue sync · Multi-platform commerce1,500+ testsLens-journey suites, Sep 2026 (recorded runs of 1,431 and 1,772)
- P-03Virtual try-onBrowser AR · 3D rendering · Storefront integration · Production reliability38.3 s → 57 msOne documented gallery-query benchmark
- P-04AI search and recommendationsAI search · Recommendations · Redis caching · Magento integration~2 s → ~50 msRepeat queries served from the Redis cache, skipping AI routing and the store's API
Need a senior AI engineer who can own delivery?
Tell me what you're building and where it breaks. I reply to every message myself.
Contract CTO · Principal AI engineering · Forward-deployed AI engineering · Enterprise AI architecture