กลับไปบล็อก
designเผยแพร่ April 28, 2026

680 Keywords, 49 Archetypes: How We Made Every AI Brand Look Expensive

680 Keywords, 49 Archetypes: How We Made Every AI Brand Look Expensive

We generate a brand identity for any business. A coffee roastery in Portland. A Muay Thai gym in Bangkok. A fintech startup in London. A pottery studio in Oaxaca.

Each brand needs to look like it belongs in its industry, and it needs to look expensive. A coffee brand should resemble Blue Bottle, not a clip art mug. A boxing gym should read as a serious training facility, not a cartoon ring.

We built a keyword-to-archetype map to control this. 680 keywords across 49 style entries.

How the map works

Claude generates a productCategory during brand synthesis. Free-text strings like "artisan coffee & roastery" or "Muay Thai training studio." We match that string against an ordered array of style entries. Each entry carries a keyword list and a complete visual style: camera format, lighting, composition, photographer references, color grade, scene descriptions.

Lowercase the category, scan each entry's keywords, first match wins.

The skincare bug

A skincare brand got motorcycle photographers, a raw concrete garage interior, and Fujifilm Velvia color grading. The output looked wrong in a way that was hard to name. Nothing crashed. The images rendered fine. They were beautiful images of the wrong world.

The matching code was category.includes(keyword). The string skincare includes the substring car. So a skincare brand matched the automotive entry.

We stared at the output for twenty minutes before checking the keyword match. The images were good enough that the failure wasn't obvious at a glance.

The fix: word-boundary regex.

const regex = new RegExp(\\b${keyword}, 'i')
return regex.test(category)

Start-boundary only. \b before the keyword, nothing after. automotive still matches auto. But skincare no longer matches car.

One regex. Months of invisible mismatches fixed.

Entry order matters

Keywords check in order. First match wins. "Boxing gym" matched the fitness entry (gym keyword) before reaching the martial arts entry (boxing keyword).

A boxing gym got a wellness studio aesthetic. Clean white surfaces, soft natural light, someone doing a gentle stretch.

The fix: put specific entries before generic ones. Martial arts (with boxing, muay thai, mma, dojo) comes before fitness (gym, fitness, workout).

Six visual worlds

Every style entry maps to one of six archetypes. Each archetype controls the entire visual pipeline:

| Archetype | Camera | Industries |

|---|---|---|

| heritage-craft | Hasselblad 500CM | Food, ceramics, wine, leather, stationery |

| tech-forward | Sony A7R IV | SaaS, fintech, gaming, developer tools |

| urban-edge | Leica M11 | Fashion, automotive, tattoo, nightlife, martial arts |

| natural-organic | Fuji GFX 50S | Wellness, skincare, plants, sustainable goods |

| opulent-classic | Phase One IQ4 | Jewelry, watches, spirits, fine dining |

| clean-modern | Canon EOS R5 | Consulting, healthcare, education, legal |

The archetype controls lighting, composition, typography style, material palette. A coffee brand and a ceramics brand share heritage-craft but have different keywords, different photographer references, different scene descriptions. The archetype provides coherence. The style entry provides industry specificity.

The photographer trick

Each style entry names real photographers with real brand associations. Not "editorial photographer" but "Rich Stapleton (Cereal), David Loftus (Ottolenghi)." FLUX 2 Pro has seen these photographers' work in its training data. Naming them anchors the output to a real visual world.

The AI fallback

Some categories don't match any keywords. "Bespoke fountain pen restoration" has no keyword in our 680-entry map.

We built a Claude Haiku fallback:

async function resolvePhotoStyle(category: string) {

const keywordMatch = getPhotoStyle(category)

if (keywordMatch) return keywordMatch

// ~$0.0003 per call

const response = await anthropic.messages.create({

model: 'claude-haiku-4-5-20251001',

messages: [{ role: 'user', content: Category: "${category}". Pick the best archetype... }],

})

}

Keywords run first. Free, instant, deterministic. If nothing matches, Haiku picks the best archetype from the six options.

"Modern, contemporary" as quality floor

Every store and lifestyle prompt starts with "Modern, contemporary interior." Without it, a tattoo studio gets a dingy basement. A boxing gym gets a rundown warehouse. FLUX defaults to cliches from its training data.

With the prefix, every space looks like it belongs in Architectural Digest. We tested removing it from 12 brands. Every one looked cheaper. We put it back.

Two descriptions per product

Claude generates two fields for each product:

  • product1Desc: Marketing copy. "Cold-pressed Argan Face Oil, Atlas Mountains harvest."
  • product1PhotoDesc: Photographer direction. "Small amber glass dropper bottle with minimal label, placed on raw linen."

We learned this distinction when "Atlas Mountains harvest" produced a landscape photograph of mountains instead of a product shot. FLUX is literal. Give it marketing language and it renders the metaphor, not the product.

How coverage grew

We started with 20 entries and 200 keywords. Within a week of testing, we found gaps.

  • Round 1: 20 entries, ~200 keywords
  • Round 2: 35 entries, ~400 keywords
  • Round 3: 49 entries, 680+ keywords

Five categories we missed entirely: nightlife, skateboard/street art, martial arts, legal services, creator/digital products.

The map keeps growing. The AI fallback catches everything the keywords miss.

The real lesson

The skincare bug taught us something about AI products that ship visual output. Wrong results don't crash. They render. They look plausible. A skincare brand with automotive styling produces images that are technically good. You have to know what right looks like to spot what's wrong.

A bad search result is obviously wrong. A bad style match produces a beautiful image of the wrong aesthetic. The only way to catch it is systematic testing across categories, not unit tests on the matching function.

We test 55 brands across all 49 style entries after every change to the map. The keyword regex took five minutes to write. The test infrastructure took two days. The test infrastructure is what matters.