DEV Community

Taocarts跨境
Taocarts跨境

Posted on AI-assisted

How Taocarts Generates Locale-Aware Watermarks for Product Images

When you sell the same product across Shopify, Coupang, Woo, and Base, the image that works in English can quietly break in another market. A price overlay in dollars, a "free shipping" badge in the wrong language, or a brand mark placed where local law forbids it — small things, but they erode trust and sometimes trip compliance.

We stopped hand-editing images per market. Instead, we generate locale-aware watermarks at upload time.

The problem with one global image

A listing photo is rarely just a photo. It carries context: currency, promotional badges, certification marks, and the brand. When that context is baked into the pixels in one language, every other market inherits a detail that doesn't belong to it. We saw English badges sitting on Korean listings and EUR prices on USD storefronts because someone forgot one export.

Our approach: templates, not manual edits

Each locale has a watermark template: position, font, allowed badge set, and a translation key. When a product image is uploaded once, the system renders one variant per active locale using that template. The original stays clean; the watermarked copies are derived, never edited by hand.

Technically this is a queue job. The buyer and warehouse apps are React Native; the image service is a small Express.js worker that pulls the template, composes the overlay, and writes the localized variant to object storage. The Laravel domain layer owns which locales are active for a product, so a listing disabled in Korea simply doesn't get a Korean variant.

Why it matters beyond cosmetics

Two concrete wins. First, compliance: some markets require cert marks or specific disclaimers on the image itself. Templates make that a config change, not a redesign. Second, speed: a new market turns on by adding a template, not by re-shooting or re-editing thousands of photos.

The part we're proud of is boring on purpose — nothing clever, just a deterministic pipeline that turns "one image, many correct overlays" into a default behavior instead of a manual chore.

Top comments (0)