AstroBaaS

Catalogue & product data

Product Information Management (PIM) & Data Enrichment

Paid pluginsize Lidea, not a commitment

Indicative price, not an offer: $49-199/mo depending on product count and channel count

Generated from docs/plan/paid/product-information-management-data-enrichment/PLAN.md in the project's planning notes, which are not part of the public repository. Nothing described below is implemented — it is the written plan for it.

An idea, not a commitment. It has a written plan but no place in the build order and no date. What is committed.

This plan takes over all or part of Product Data Hub (PIM), an entry merged into it.

A paid module for merchants with >500 SKUs who maintain product data across multiple spreadsheets, PDFs, and supplier systems. Unifies attributes, syncs enriched data to multiple sales channels, and audits changes. Handles master-data ETL, attribute mapping, and multi-channel transformation logic — work core does not own because it requires data transformation expertise and channel-specific business rules.

The problem

Our product data lives in three spreadsheets: one for descriptions, one for specs, one for images. Every time we add a channel (Marketplace, TikTok Shop, B2B portal), someone manually maps columns. We’ve had duplicate products, conflicting SKUs, and stale descriptions on marketplaces for weeks. We need a system that owns the master data and pushes enriched attributes to every channel in sync.

What it does

  • Import product data from CSV/Excel/JSON with mapping wizard (columns → AstroBaaS attributes)
  • Master data store with change history and audit trail per field
  • Attribute enrichment rules: formula editor for computed fields (e.g., ‘weight_kg * 2.2 = weight_lbs’)
  • Channel mapping: define which AstroBaaS attributes map to Marketplace fields, TikTok Shop fields, B2B portal fields
  • Automated sync to channels on schedule (hourly, daily) or on-demand
  • Conflict detection: warn if mapped attribute has been edited manually in channel vs. master data
  • Bulk enrichment UI: fill missing descriptions, bulk-edit categories, approve changes before sync
  • API for external systems to read/write product attributes in bulk
  • Data quality score per product (% fields filled, % images present, description length, reviews)
  • Role-based access: data stewards edit master data, channel owners approve sync

What it deliberately does NOT do

Each boundary carries its reason. A boundary without a reason gets crossed by the next person who reads this.

  • AI-generated product descriptions — that is AI content generation, a separate paid module. PIM owns the pipeline; AI module owns the generation.
  • Image optimization or CDN delivery — paid media module owns image hosting and transforms; PIM references image URLs only.
  • Translation and localization — paid i18n module owns multi-language attribute storage and translation workflows; PIM stores the master (English) attributes.
  • Supplier order management or PO automation — supply chain is a separate domain; PIM is catalog-only.
  • Real-time carrier feed parsing — paid integrations own carrier data; PIM consumes manually-uploaded or API-fed data.
  • Machine learning for recommendations — PIM enriches data; paid ML module consumes enriched data for recommendations.

Data model

New PRODUCT_ATTRIBUTE_VERSION table (product_id, attribute_id, value, version, changed_by, changed_at, sync_status). New CHANNEL_MAPPING table (channel_id, source_attribute_id, target_field_name, transform_function). New DATA_QUALITY_SCORE table (product_id, score, calculated_at). Migration required: backfill PRODUCT_ATTRIBUTE_VERSION for existing products.

API

  • POST /admin/pim/import (CSV/JSON bulk import with mapping)
  • GET /admin/pim/products/:id/history (attribute change history)
  • PATCH /admin/pim/products/:id/attributes (bulk update attributes)
  • POST /admin/pim/channels/:channelId/sync (trigger channel sync)
  • GET /admin/pim/sync-status (last sync time, error count per channel)
  • POST /admin/pim/enrich (formula-based bulk enrichment preview + apply)

Every route added here must also appear in src/pages/openapi.json.ts — a test fails the build if it does not.

Admin

PIM dashboard showing product data quality score by product. Import wizard with column-to-attribute mapping. Channel mapping UI (visual flow: AstroBaaS attribute → channel field). Sync status page showing last run, failed products, warnings. Change history browser. Enrichment rule builder (if X then Y formulas).

The seam — why this is paid

Paid PIM module owns data transformation, ETL pipeline, attribute mapping, and channel sync logic. Core provides attribute storage (via flexible-product-attributes) and basic API. PIM does not own channels themselves; it owns the mapping and sync orchestration. Channels are assumed to expose an API or webhook for receiving updates.

Paid module owns data transformation ETL engine, attribute mapping, multi-channel sync logic, and enrichment automation; core exposes product API only

Dependencies

  • flexible-product-attributes (must exist first)
  • attribute-sets (optional but strongly recommended)
  • Webhook/event system (for sync triggers)
  • API routing and auth (existing)

Acceptance checks

Each of these must be able to fail. Before claiming this is done, break the code deliberately and watch each one go red.

  • CSV import with column mapping succeeds; products created or updated per mapping
  • Change history shows who changed which attribute when, and displays old → new value
  • Channel sync sends mapped attributes to channel API in channel’s expected format (not generic AstroBaaS JSON)
  • Conflict detected if attribute edited in master data and also manually in channel since last sync; user sees warning before re-sync
  • Data quality score updates after import and reflects % of attributes filled, presence of images, description length
  • Enrichment rule (e.g., weight_kg * 2.2 = weight_lbs) is previewed on 5 products before bulk apply; can be rolled back
  • Role with ‘channel_owner’ scope can approve sync but not edit master data; role with ‘data_steward’ scope can edit but not approve sync

Risks

If PIM overwrites manual channel edits without user confirmation, merchants lose work. Mitigate: conflict detection and dry-run before sync. If import is not atomic, half-imported data corrupts catalog. Mitigate: transaction wrapper, rollback on error. If attribute versioning is not stored, audit trail is lost. Mitigate: immutable version history, never delete old values. If mapped channel fields have wrong data types (e.g., string in numeric field), channel rejects sync silently. Mitigate: pre-flight validation per channel.

Commercial context

Suggested price$49-199/mo depending on product count and channel count
Rival anchor6 apps (Apimio $199-399/mo, Gepard freemium, Quable, Inriver, MerchPIM, pimsimple); enterprise $200-500+/mo

The anchor is what the nearest equivalent charges on Shopify or Magento today. It is context for a pricing decision, not the decision.


Generated from the commerce plan. See docs/COMMERCE-PLAN.md for the full catalogue and CONTRIBUTING.md for how to work on this repository.