The input: one supplier photo and a fact sheet. The output: a complete Shopify listing — title, bilingual EN/VI description, tags, variants, SEO title and meta description, and alt text for every image — created as a draft product and waiting in an approval queue. A person clicks approve; the product goes live. That is the whole workflow, and for a shop adding twenty products a week it replaces the better part of a working day.
The pipeline, step by step
- Intake. The supplier photo and fact sheet land in a shared folder or a simple upload form. The fact sheet is the crucial artefact: material, dimensions, weight, capacity, care instructions, certifications — whatever is actually true about the product.
- Fact structuring. A first AI pass converts the messy fact sheet into a structured fact table: named fields with values and units. A human confirms this table once. Everything downstream reads from it.
- Copy generation. The model writes the title, the English description, and a native Vietnamese description — not a translation of the English one, but Vietnamese copy written from the same fact table, in the register Vietnamese shoppers expect.
- Image work. Background removal or replacement puts the supplier photo on a clean, brand-consistent backdrop. Alt text is generated from the fact table plus what is visibly in the frame.
- Assembly. The service creates the product through the Shopify Admin GraphQL API — variants, options, tags, SEO fields, metafields for the Vietnamese copy — with status draft.
- Approval. The draft appears in a review queue. Approve publishes it; reject sends it back with a note that feeds the next generation attempt.
The one rule that prevents hallucinated specs
Left alone, a language model will confidently invent a battery capacity, a fabric blend, or a "BPA-free" claim. On a product page that is not embarrassing — it is a refund generator and, for regulated categories, a legal problem. The guardrail is structural, not a polite prompt:
This turns "trust the model" into "verify the data once, reuse it everywhere" — the same fact table later feeds your customer service bot, so chat answers and product pages can never contradict each other.
Bulk CSV vs the Admin API
Shopify's CSV import is tempting for batch work, and for a one-time migration of a few hundred simple products it is fine. For an ongoing pipeline it is the wrong tool.
| Concern | CSV import | Admin GraphQL API |
|---|---|---|
| Error feedback | Row-level, after the fact, easy to miss | Per-mutation, immediate, machine-readable |
| Draft staging & approval | Awkward — imports tend to publish | Native: create with draft status |
| Metafields (bilingual copy) | Limited support | First-class |
| Partial updates later | Full-row overwrites, risky | Targeted field updates |
| Automation fit | Manual upload step remains | Fully hands-off |
The API also lets you write the listing incrementally — product first, then images as they finish processing, then SEO fields — which matters when image cleanup takes longer than copy generation.
Respecting the leaky bucket
Shopify rate-limits API calls with a leaky-bucket model: you have a budget of query cost that refills continuously, and bursts drain it fast. A naive batch job that fires fifty product mutations in a loop will start receiving throttle responses mid-batch and, if it doesn't handle them, half-create products. The fixes are boring and essential: a single queue for all Shopify writes, cost-aware pacing that reads the throttle status Shopify returns with every response, exponential backoff on throttled calls, and idempotency keys so a retried mutation never creates a duplicate product.
Variants and the duplicate-content trap
Sellers who list near-identical variants — same tumbler in six colours — as separate products create six pages with 95% identical copy. Search engines respond by picking one to rank and ignoring the rest, or ranking none well. The automation should enforce the correct structure instead:
- One product, colours and sizes as variants, not separate products.
- Where separate products are genuinely warranted (different use cases), the generator must produce differentiated copy — different angle, different buyer, different keywords — from the same fact table.
- Unique SEO titles and meta descriptions are validated for uniqueness across the catalogue before publish; a duplicate blocks the approval queue item.
This uniqueness check pairs naturally with a broader bilingual SEO strategy — covered in depth in our article on the AI content factory for Vietnamese and English.
What the approval queue is really for
The human in the loop is not there to fix typos. They are there to catch the things a model cannot know: that this supplier's "leather" is PU, that the photo shows last season's packaging, that this product needs an age warning. Every rejection reason becomes a note attached to the fact table, so the same mistake does not recur. In practice, approval takes under a minute per product once trust is established — and that minute is the difference between an automation you brag about and one you quietly turn off.
Listings are the first layer of a larger machine. If you want to see how they connect to fulfilment, invoicing and marketing, start with the end-to-end e-commerce automation stack for Vietnam.