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.
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 |
BIAIG job log (recommended fields)
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_aiai_provenance_summary— short internal ops text (does not replace channel-visible labels when platforms require UI)taiwan_ad_personal_imagery+ad_disclosure_supplied_atonly 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 whenmetadata_intact_after_processing = noand the channel expects Layer 2 signalslinked_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)
- 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).
- Layer 1: Did BIAIG/API capture explicit merchant disclosure for the batch? If not, set
merchant_ai_disclosure = falseand gate TW social export pending review. - Layer 2: Does ingest re-encode strip embedded provenance? If yes, record
post_process_stripped_metadata = yes; do not promise downstream auto-labeling. - Layer 3: Can you store
external_case_idfrom marketplace reports? Bulk-update status fields, not files without audit. - 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).
- 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.
- 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.

| 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.