ARTICLE

Taiwan MODA: three-layer AI image labeling—a post-BIAIG checklist for Bubble catalogs

After a BIAIG bulk run, avoid reworking thousands of PDPs: which fields to keep in the job log and Product type to mirror MODA’s disclosure → detection → appeals logic—without conflating it with SynthID or Google Merchant IPTC.

Why Bubble developers care post-BIAIG

I bulk-generate or ingest AI product images in Bubble and ship feeds to marketplaces. I learned the hard way: fix compliance in the data model once, or re-touch thousands of product detail pages later.

On 25 October 2026, CNA and English follow-ups reported that Taiwan’s Ministry of Digital Affairs (MODA) outlined a three-layer approach for major social platforms: (1) upload-time creator disclosure (e.g., checkbox), (2) scanning for hidden/embedded AI signals or generation traits with automatic visible labels when uploaders did not disclose, and (3) government notification, public reporting, and complaint channels leading to case-by-case labeling or removal (including fraud or rights issues). MODA stressed prominent labels and cited YouTube’s AI label in expanded descriptions as insufficient. In these sources that is risk-oriented governance on deepfakes and public confusion—not a published technical standard, and not the same as a mandate to label every AI catalog product image for sellers.

Why Bubble developers care post-BIAIG A closer look: Mixboard offline on 28.09: exporting.

Separately from October news: binding rules for online ad disclosure (effective 30 November 2024) hit regulated network ad platforms—disclose ads using deepfake tech or AI-generated personal imagery, with advertisers supplying disclosure at submission, generally on the ad surface (link when space is limited). Sources in the research packet do not extend the October social-platform three-layer plan to all e-commerce PDP operators; third-party ecommerce articles claiming “no Taiwan mandate for all AI product images” are context only, not law.

Keep stacks separate: SynthID Detector, OpenAI content_provenance_checks, and Google Merchant 2027 / IPTC are different jurisdictions, actors (platform vs merchant), and enforcement paths. I use MODA here as platform-compliance framing for what I persist in Bubble so downstream platforms can run Layers 1–3 without another bulk pass. Worth reading next: SynthID Detector goes global: sampling.

Matrix: generation → Bubble ingest → marketplace export

Stage What happens Minimum persistence
1. Generation (BIAIG / external API) Image created; optional merchant disclosure ai_disclosed_by_creator, ai_disclosure_at, generation_tool, generation_model, biaig_job_id, source_prompt_hash (avoid unnecessary PII in logs)
2. Bubble ingest Upload, resize, CDN, link to Product asset_url, ingest_at, metadata_intact_after_processing, embedded_provenance_detected, detection_run_at, detection_outcome (disclosed / auto_flag / clean / unknown); avoid re-encoding that strips markers Layer 2 relies on
3. Marketplace export Feed/API/manual sync export_channel, export_at, marketplace_sku, visible_label_required (your policy + channel rules), ad_surface_disclosure when the asset is used in Taiwan-regulated network ads with personal imagery, last_pdp_hash for idempotent re-export

One job → one log row (or nested thing) so bulk runs can replay or patch Products without regenerating pixels:

  • Identity: job_id, product_id, variant_id, batch_id, operator_user_id
  • Layer 1 (creator disclosure): merchant_ai_disclosure, disclosure_method (checkbox / API / import column), disclosed_at
  • Layer 2 (technical): generator_id, model_version, output_has_c2pa_or_watermark (as reported by the tool), post_process_stripped_metadata, automated_scan_id, scan_label_applied (nullable until platform feedback)
  • Layer 3 (moderation): report_source, external_case_id, status (open / relabeled / removed / appealed / closed), resolution_at, notes

I store job history separately from the live Product image URL: after bulk, I only update pointers plus the audit trail.

Product type (catalog)

On Product or ProductImage:

  • primary_image_ai_status — enum: undisclosed | merchant_disclosed | system_labeled | disputed | not_ai
  • ai_provenance_summary — short internal ops text (does not replace channel-visible labels when platforms require UI)
  • taiwan_ad_personal_imagery + ad_disclosure_supplied_at only when the asset is used in Taiwan-regulated network ads with personal imagery (Nov 2024 ad rules—not automatic for generic packshots)
  • marketplace_export_ready — false when metadata_intact_after_processing = no and the channel expects Layer 2 signals
  • linked_biaig_job_id — one-to-many via log

Workflow: after bulk, one scheduled workflow to reconcile export flags by batch_id beats per-PDP API churn.

Post-BIAIG checklist (~15 minutes per batch)

  1. Planned vs binding: October 2026 language is planned/pushed (擬推) toward Meta, Google, LINE—not enacted catalog law without a primary instrument (see packet open questions).
  2. Layer 1: Did BIAIG/API capture explicit merchant disclosure for the batch? If not, set merchant_ai_disclosure = false and gate TW social export pending review.
  3. Layer 2: Does ingest re-encode strip embedded provenance? If yes, record post_process_stripped_metadata = yes; do not promise downstream auto-labeling.
  4. Layer 3: Can you store external_case_id from marketplace reports? Bulk-update status fields, not files without audit.
  5. Ads vs catalog: Network ads with AI personal imagery need ad-surface disclosure paths; ordinary product renders are not automatically “personal imagery” (grey area—legal review).
  6. Prominence: Bubble metadata does not satisfy visible platform labels; MODA’s “明顯” requirement has no fixed UI spec in news—plan channel display separately from logs.
  7. Parallel compliance tracks: Map Google Merchant IPTC / other provenance APIs via separate fields or a mapping table—not one global “compliant” boolean. A closer look: SenseNova U1 Pro and 8K.

Post-BIAIG checklist (~15 minutes per batch)

Checklist item What it is for What it is not for
Planned vs binding Treating October 2026 language as planned/pushed (擬推) toward Meta, Google, LINE Enacted catalog law without a primary instrument (see packet open questions)
Layer 1 Confirming BIAIG/API captured explicit merchant disclosure for the batch; if not, set merchant_ai_disclosure = false and gate TW social export pending review Proceeding with TW social export without captured merchant disclosure
Layer 2 Checking whether ingest re-encode strips embedded provenance; if yes, record post_process_stripped_metadata = yes Promising downstream auto-labeling when provenance was stripped
Layer 3 Storing external_case_id from marketplace reports; bulk-updating status fields Bulk-updating files without audit
Ads, catalog & prominence Ad-surface disclosure paths for network ads with AI personal imagery; planning channel display separately from logs for MODA’s “明顯” requirement Treating ordinary product renders as automatically “personal imagery” (grey area—legal review); using Bubble metadata for visible platform labels; assuming a fixed UI spec in news
Parallel compliance tracks Mapping Google Merchant IPTC / other provenance APIs via separate fields or a mapping table A single global “compliant” boolean

Honest limits (from Scout packet)

  • No primary MODA instrument in the packet codifying the October mechanism with enforcement dates for e-commerce catalog operators.
  • Trustpass-style industry claims require independent verification; lean on MODA law pages for normative ad rules.
  • March 2026 MODA stakeholder guidance (year-end framework) is a distinct timeline from October platform-mechanism reporting.

Sources (packet only)

CNA 2026-10-25; Taipei Times; Taiwan News; TechNews 2026-03-13; law.moda.gov.tw EngLawContent id=79; MODA press 14562, 12666, 12648; Lexology commentary; Trustpass industry blog (use cautiously).


Internal Bubble developer methodology; not legal advice and not for external publication.

← All articles