Products: bulk CSV import/export — the only data mechanism in the MVP #13

Closed
opened 2026-06-11 06:58:58 +00:00 by ben.stull · 2 comments
Owner

Summary

Bulk CSV import/export: a merchant can add and update their storefront's
product data in bulk by importing a CSV file, and get the full catalog back
out as a CSV export — the only data mechanism in the Products MVP.

Problem / pain

There is no way to get product data into a storefront at all: the Products MVP
deliberately ships no in-app editing UI, so without bulk ingestion the catalog
epic (#12) cannot deliver any value. The pain is sharpest for merchants
arriving from another platform — their catalogs already live in spreadsheet
exports of hundreds of products, and re-keying them is a non-starter. It also
recurs after launch: price and description changes happen across the catalog
at once (a season, a supplier change), and one-at-a-time maintenance does not
match how merchants actually work their data.

Who feels it

persona role what they need
Merchant storefront owner load their catalog in bulk and keep it current with repeat imports
Migrating merchant prospective customer switching platforms bring an existing export file over without manual re-entry
Platform builder dev building product-dependent capabilities a way to populate realistic catalogs for build/demo

Desired outcome / value

Product data flows into and out of a storefront in bulk: a merchant can
populate an empty catalog from a file, refresh it with a corrected file, and
extract the whole catalog at any time — so the catalog is never trapped in the
platform and never has to be hand-entered.

Acceptance — "done right"

  • Importing a CSV file adds its products to the merchant's storefront.
  • Exporting produces a CSV of the storefront's full catalog.
  • Re-importing an exported file updates existing products rather than
    duplicating them — the round-trip is lossless and idempotent.
  • An import with changed values updates the affected products.
  • A malformed or unprocessable file is reported back with feedback the
    merchant can act on.

Scope / non-goals

In: CSV import (add + update); CSV export.

Out: any other data mechanism (in-app forms, external integrations, bulk
APIs); scheduled or automated synchronization; product deletion semantics
beyond what the design decides the CSV carries.

Assumptions · constraints · dependencies

  • Parent: #12 (Products MVP epic).
  • Siblings: the product list/read-only detail Feature (displays what this
    imports) and the kits Feature (kit data should ride the same mechanism).
  • Constraint: CSV-only mutation is the epic's deliberate MVP boundary.
  • As a type/feature, requires a Solution Design before an implementation
    plan (handbook §4.3 gate).

Source / signal

Operator ask, capture session ecomm-0026 (2026-06-10) — decomposition of
Epic #12 (originally captured in session ecomm-0025).

Priority (WSJF)

Value 8 · Time-criticality 5 · Opportunity-enablement 7 ÷ Size 4 ≈ 5.0
the sole ingestion path; nothing in the epic works without it →
priority/P1.

Decomposition

Deferred — slicing belongs to the Feature's Solution Design (handbook §4.3).

<!-- Set the type/* label --> ## Summary Bulk CSV import/export: a merchant can add and update their storefront's product data in bulk by importing a CSV file, and get the full catalog back out as a CSV export — the **only** data mechanism in the Products MVP. ## Problem / pain There is no way to get product data into a storefront at all: the Products MVP deliberately ships no in-app editing UI, so without bulk ingestion the catalog epic (#12) cannot deliver any value. The pain is sharpest for merchants arriving from another platform — their catalogs already live in spreadsheet exports of hundreds of products, and re-keying them is a non-starter. It also recurs after launch: price and description changes happen across the catalog at once (a season, a supplier change), and one-at-a-time maintenance does not match how merchants actually work their data. ## Who feels it | persona | role | what they need | | --- | --- | --- | | Merchant | storefront owner | load their catalog in bulk and keep it current with repeat imports | | Migrating merchant | prospective customer switching platforms | bring an existing export file over without manual re-entry | | Platform builder | dev building product-dependent capabilities | a way to populate realistic catalogs for build/demo | ## Desired outcome / value Product data flows into and out of a storefront in bulk: a merchant can populate an empty catalog from a file, refresh it with a corrected file, and extract the whole catalog at any time — so the catalog is never trapped in the platform and never has to be hand-entered. ## Acceptance — "done right" - Importing a CSV file adds its products to the merchant's storefront. - Exporting produces a CSV of the storefront's full catalog. - Re-importing an exported file **updates** existing products rather than duplicating them — the round-trip is lossless and idempotent. - An import with changed values updates the affected products. - A malformed or unprocessable file is reported back with feedback the merchant can act on. ## Scope / non-goals **In:** CSV import (add + update); CSV export. **Out:** any other data mechanism (in-app forms, external integrations, bulk APIs); scheduled or automated synchronization; product deletion semantics beyond what the design decides the CSV carries. ## Assumptions · constraints · dependencies - Parent: #12 (Products MVP epic). - Siblings: the product list/read-only detail Feature (displays what this imports) and the kits Feature (kit data should ride the same mechanism). - Constraint: CSV-only mutation is the epic's deliberate MVP boundary. - As a `type/feature`, requires a Solution Design before an implementation plan (handbook §4.3 gate). ## Source / signal Operator ask, capture session `ecomm-0026` (2026-06-10) — decomposition of Epic #12 (originally captured in session `ecomm-0025`). ## Priority (WSJF) Value 8 · Time-criticality 5 · Opportunity-enablement 7 ÷ Size 4 ≈ **5.0** — the sole ingestion path; nothing in the epic works without it → `priority/P1`. ## Decomposition Deferred — slicing belongs to the Feature's Solution Design (handbook §4.3).
ben.stull added the type/featurepriority/P1 labels 2026-06-11 06:58:58 +00:00
Author
Owner

Solution Design approved + graduated (brainstorming session ecomm-0030): SD-0002-products-bulk-csv-import-export — delivery plan SLICE-5…8 (§7.2); Claude Design hi-fi bundle at ui/designs/SD-0002-…. Ready for a /wgl-planning-and-executing session on SLICE-5.

Solution Design **approved + graduated** (brainstorming session ecomm-0030): [SD-0002-products-bulk-csv-import-export](https://git.wiggleverse.org/wiggleverse/wiggleverse-ecomm-content/src/branch/main/specs/SD-0002-products-bulk-csv-import-export.md) — delivery plan SLICE-5…8 (§7.2); Claude Design hi-fi bundle at [ui/designs/SD-0002-…](https://git.wiggleverse.org/wiggleverse/wiggleverse-ecomm-content/src/branch/main/ui/designs/SD-0002-products-bulk-csv-import-export). Ready for a /wgl-planning-and-executing session on SLICE-5.
Author
Owner

Closing — the bulk CSV import/export mechanism is complete and PPE-green.

SLICE-8 (Shopify dialect) shipped via PR #32 (merge e2d8b5c), the last of the slice set:

  • SLICE-5 import spine, SLICE-6 export/round-trip, SLICE-7 images pipeline (prior), and now SLICE-8 Shopify dialect detection + mapping + DOC-2 column reference / DOC-3 sample.
  • Completes PUC-6 (a Shopify export imports directly) and PUC-11 (learning the format).

PPE-green: v0.8.0 deployed to https://ecomm-ppe.wiggleverse.org (/healthz0.8.0); DOC-2 live at /api/products/columns.md. Release tag release/2026-06-12T02-41.

Done at merge + PPE-green (handbook §9.1); shipped when v0.8.0 is promoted to prod (operator's gate). The SLICE-4 prod stand-up under market.wiggleverse.org remains the cursor's next infra stop.

Closing — the bulk CSV import/export mechanism is complete and PPE-green. **SLICE-8 (Shopify dialect)** shipped via PR #32 (merge e2d8b5c), the last of the slice set: - SLICE-5 import spine, SLICE-6 export/round-trip, SLICE-7 images pipeline (prior), and now SLICE-8 Shopify dialect detection + mapping + DOC-2 column reference / DOC-3 sample. - Completes PUC-6 (a Shopify export imports directly) and PUC-11 (learning the format). **PPE-green:** v0.8.0 deployed to https://ecomm-ppe.wiggleverse.org (`/healthz` → `0.8.0`); DOC-2 live at `/api/products/columns.md`. Release tag `release/2026-06-12T02-41`. Done at merge + PPE-green (handbook §9.1); **shipped** when v0.8.0 is promoted to prod (operator's gate). The SLICE-4 prod stand-up under `market.wiggleverse.org` remains the cursor's next infra stop.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: wiggleverse/wiggleverse-ecomm#13