> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cernel.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Attributes

> Configure the data fields that AI generates for your products: types, prompts, values, and how they apply across categories.

Attributes are the data fields that AI fills in for your products: descriptions, meta titles, materials, colors, and more. You configure attributes on categories in your Cernel Taxonomy, link AI agents to them, and Cernel generates the values at scale. Six attribute types cover everything from plain text to structured selections to images.

## How it works

Each attribute defines a specific piece of product data that you want AI to generate. You create an attribute on a category, choose its type, and link an AI agent that knows how to produce that content. When you run enrichment, the agent generates values for every product in that category.

Attributes set at a parent category automatically apply to all subcategories beneath it. Add "Meta Description" to *Apparel* and every subcategory (*Shoes*, *Tops*, *Accessories*) gets it too. You can also add specialized attributes further down the tree that only apply to specific product types.

### Why you would use this

<CardGroup cols={2}>
  <Card title="Define what data your products need" icon="list-check">
    Instead of deciding case-by-case what content each product should have, configure it once at the category level. Every product in that category automatically has the right fields.
  </Card>

  <Card title="Match the right content type to the job" icon="shapes">
    Use Text for meta titles, HTML for rich descriptions, Single Select for gender classification, Multi Select for materials. Each type has specialized configuration for accurate AI output.
  </Card>
</CardGroup>

## The six attribute types

<AccordionGroup>
  <Accordion title="Text">
    Plain text content without formatting. Best for short-to-medium content like product descriptions, meta titles, meta descriptions, and search keywords.

    **Configuration:** Prompt instructions, model behavior (Precise / Balanced / Creative), and optional agent dependencies on other attributes.
  </Accordion>

  <Accordion title="HTML">
    Rich formatted content with HTML markup, including headings, paragraphs, lists, and bold text. Best for long-form descriptions, size guides, and care instructions that need visual structure.

    **Configuration:** Prompt instructions plus **Build Output Template**, which lets you define the exact block structure (headings, paragraphs, lists) the AI should produce, with per-block instructions.
  </Accordion>

  <Accordion title="Single Select">
    One value chosen from a predefined list of classification options. Best for classifications like Gender (Male / Female / Unisex), Season (Spring / Summer / Autumn / Winter), or Age Group (Adult / Kids).

    **Configuration:** Define the classification options, write prompt instructions, and optionally turn on **Force classification** so the AI always picks an option even when evidence is limited (rather than leaving the field empty).
  </Accordion>

  <Accordion title="Multi Select">
    Multiple values chosen from a predefined list of classification options. Best for attributes where products can carry several values, like Materials (Cotton, Polyester, Elastane) or Features (Waterproof, Breathable, Lightweight).

    **Configuration:** Define the classification options, write prompt instructions, and optionally turn on **Force classification**. Classification options can be auto-translated into your enabled languages.
  </Accordion>

  <Accordion title="External Data">
    Data the agent finds on the web, rather than generated purely from the product's existing fields. External Data operates in one of two modes, chosen in the agent wizard under **What should the agent find?**:

    * **Text data**: The agent searches the web (Google and/or AI Search) using queries you define, then extracts textual data such as GTINs, supplier specifications, ingredients, or any other attribute you can describe. Use this when your products don't carry the data natively and you want Cernel to source it.
    * **Product images**: The agent uses the same search infrastructure, but targets product imagery. It follows search results and extracts relevant photos, returning a deduplicated list of images ready to review. Use this when you're missing imagery for products and want Cernel to find real photos from the web.

    **Configuration:** Search sources (Google queries, AI Search prompt), optional site filtering (exclude or allow specific domains), and product matching criteria (GTIN, SKU, EAN, etc.) so results are tied to the right product. See [AI Agents](/features/ai-agents) for the full set-up walkthrough.
  </Accordion>

  <Accordion title="Media">
    Image content generated or sourced by AI. Best for product lifestyle images, styled photography, or any visual content you'd otherwise need a photographer for.

    **Configuration:** Prompt instructions describing the shot, plus image settings like aspect ratio, resolution, and file format. Preview and iterate on results in the agent sandbox before you save.
  </Accordion>
</AccordionGroup>

## Adding an attribute to a category

In Cernel, creating an attribute and setting up the AI that fills it in happen in one place: the **Add New Attribute** wizard. You open it from a category's attributes panel, give the attribute a name, and then either create a fresh agent for it or link an existing one. The agent you choose determines the attribute's type (Text, HTML, Single Select, Multi Select, External Data, or Media), so you don't have to pick a type up front.

<Steps>
  <Step title="Select a category in your taxonomy">
    In the sidebar under **Catalog**, expand the taxonomy tree and click the category where you want to add the attribute. The attribute will apply here and, automatically, to every subcategory beneath it.

    <Frame>
      <img src="https://mintcdn.com/cernel-e5adbeb5/weDuKoplcfWJC191/images/attributes/select-category.png?fit=max&auto=format&n=weDuKoplcfWJC191&q=85&s=2f58ad61f111935cb633d077008e7f5a" alt="The sidebar taxonomy tree with a category like 'Shoes' highlighted, showing the product table for that category in the main area" width="2880" height="1800" data-path="images/attributes/select-category.png" />
    </Frame>
  </Step>

  <Step title="Open the category's attributes">
    View the attributes for the selected category. You'll see any attributes already configured, both those defined directly on this category and those flowing down from a parent. Click **Add Attribute** to open the wizard.
  </Step>

  <Step title="Name the attribute">
    In the first step, give the attribute a clear, descriptive name, like *Meta Description* or *Materials*. This name appears as a column in the product table and as an option in the enrichment modal.

    <Frame caption="Step 1 of the Add New Attribute wizard">
      <img src="https://mintcdn.com/cernel-e5adbeb5/weDuKoplcfWJC191/images/attributes/add-attribute.png?fit=max&auto=format&n=weDuKoplcfWJC191&q=85&s=4e0f3b030c7f22dab0c89e11059f4a19" alt="The Add New Attribute dialog showing the Attribute Name field and a Create attribute only option to skip agent setup" width="2880" height="1800" data-path="images/attributes/add-attribute.png" />
    </Frame>

    <Tip>
      Name attributes by what the content *is*, not how it's used. "Meta Description" is clearer than "SEO Text", and "Materials" is clearer than "Tag 2". Consistent naming makes the product table easier to scan.
    </Tip>
  </Step>

  <Step title="Choose how to set up the agent">
    In the next step, pick how this attribute should be generated:

    * **Create new agent**: Build an agent specifically for this attribute. The wizard continues into the full agent creation flow, where you choose the attribute type (via a template or directly), describe what you want the AI to do, configure the prompt, and test it in a sandbox on real products.
    * **Use existing agent**: Reuse an agent you've already built (for example, a product description agent you use across several categories). The attribute takes on that agent's type automatically.

    If you're not ready to hook up an agent yet, tick **Create attribute only, skip agent setup** in the first step to add the attribute as a placeholder and link an agent later.

    See [AI Agents](/features/ai-agents) for the full agent creation walkthrough, including writing prompts, referencing Data Sources, setting agent dependencies, and using the sandbox to iterate.
  </Step>

  <Step title="Test in the sandbox and save">
    Before the wizard finishes, the sandbox runs your agent on real products so you can verify the output. Use the agent chat to adjust the prompt, run it again, and step through versions with undo and redo until you're happy.

    When you save, the attribute is created on the category and the agent is linked to it. The attribute now applies to this category and all its subcategories, and it's ready for enrichment.

    <Check>
      Attribute and agent are set up together. Run enrichment on products in this category to generate values.
    </Check>
  </Step>
</Steps>

## Advanced configuration

<AccordionGroup>
  <Accordion title="How attributes apply across categories">
    When you add an attribute to a category, it automatically applies to all subcategories beneath it:

    * An attribute on *Apparel* is available on *Shoes*, *Tops*, *Accessories*, and every category below them
    * A more specialized attribute on *Running Shoes* only affects *Running Shoes* and its children; siblings like *Casual Shoes* are unaffected

    Place broadly useful attributes (Meta Title, Meta Description) high in the tree, and reserve deeper categories for specialized ones (Cushioning Type, Drop Height).
  </Accordion>

  <Accordion title="Customizing an attribute for a subcategory">
    If a subcategory needs slightly different output for an attribute that's already set at a parent (for example, a more technical description for *Running Shoes* than for *Shoes* overall), link a different agent to the same attribute on the subcategory. The subcategory's agent takes precedence for products there, while the rest of the tree continues to use the parent's agent.

    This is how specialization works in Cernel: you don't override fields inside a single attribute configuration. Instead, you choose which agent generates that attribute where it matters.
  </Accordion>

  <Accordion title="Output template for HTML attributes">
    HTML attributes let you define the exact structure of the generated HTML inside the agent's prompt configuration, using **Build Output Template**. Instead of hoping the AI picks the right format, you specify the blocks it should produce:

    * Heading levels (H1, H2, H3)
    * Paragraphs and bold text
    * Bullet and numbered lists
    * Line breaks

    Each block can carry its own instructions (for example, "one short opening paragraph" or "three bullets covering fit, material, and care"). The AI follows this template for every product, so formatting stays consistent across the catalog.
  </Accordion>

  <Accordion title="LLM settings and behavior">
    Inside the agent wizard, advanced options let you tune how the AI behaves when generating this attribute:

    * **Model behavior**: choose between Precise, Balanced, and Creative to trade off consistency against variation
    * **Agent dependencies**: mark other attributes as required or optional inputs so one agent can build on another's output (for example, a Meta Description agent that reads the Product Description)
    * **Force classification** (Single Select and Multi Select): require the AI to always pick an option even when confidence is low, rather than leave the field empty

    These settings are configured on the agent, so they apply wherever that agent is linked.
  </Accordion>

  <Accordion title="External Data: search sources and matching">
    For External Data attributes, the agent wizard exposes the configuration that drives the web search:

    * **Search sources**: up to three Google queries plus an AI Search prompt, each of which can reference product data using `/` (for example, `{product_name} {brand} product photo`)
    * **Site filtering**: exclude specific domains or restrict the search to an allow-list
    * **Product matching criteria**: identifiers such as GTIN, SKU, or EAN that tie results back to the right product

    The same configuration powers both **Text data** and **Product images** modes; only the extraction target changes. See [AI Agents](/features/ai-agents) for the end-to-end setup.
  </Accordion>

  <Accordion title="Integration mapping">
    Each attribute can be mapped to fields in your connected integrations. In the **Integrations** section of the configuration modal, you can:

    * View existing import and export mappings
    * Add new mappings to Shopify fields or metafields
    * Configure bidirectional sync behavior

    This determines how enriched values flow back to your store.
  </Accordion>

  <Accordion title="Translations for classification options">
    For Single Select and Multi Select attributes, the allowed options can be translated into your enabled languages. Cernel shows translation status for each option and warns if any are missing. You can auto-translate options or enter translations manually.
  </Accordion>
</AccordionGroup>

<Warning>
  Removing an attribute from a category also removes it from all subcategories beneath it. Previously generated values for products in those categories will be lost.
</Warning>

## Frequently asked questions

<AccordionGroup>
  <Accordion title="What's the difference between Text and HTML?">
    **Text** produces plain, unformatted content, ideal for meta titles, short descriptions, and fields where HTML isn't supported. **HTML** produces structured content with headings, paragraphs, and lists, ideal for long-form descriptions, product pages, and any field that renders HTML.

    Use **Build Output Template** on HTML attributes to control the exact structure of the output, block by block.
  </Accordion>

  <Accordion title="Why aren't my attribute values generating?">
    The most common cause is that the attribute has no AI agent linked. This happens when an attribute was created with **Create attribute only, skip agent setup** and not revisited. Open the attribute, verify an agent is assigned, and re-run enrichment.
  </Accordion>

  <Accordion title="Can I use the same attribute name on different categories?">
    Yes. If two categories at the same level both need a "Description" attribute, you can create it on each one. However, if the categories share a parent, it's more efficient to add the attribute to the parent, and it will automatically apply to both.
  </Accordion>

  <Accordion title="How do I see which parent category an attribute comes from?">
    Each attribute row in a category's attributes list carries a source badge. A **Direct** badge means the attribute is configured on this category. An **Inherited from \[Category Name]** badge means it was set higher up in the taxonomy and is flowing down. Use the inherited badge to know where to go upstream if you want to change the setup for everything beneath.
  </Accordion>

  <Accordion title="Can AI recommend which attributes I should add?">
    Yes. On the Dashboard, the **AI Recommendations** widget analyzes your taxonomy and suggests attributes that could improve your product data. You can apply all recommendations at once or review each one individually.
  </Accordion>

  <Accordion title="What does 'Force classification' do for select attributes?">
    When **Force classification** is on, the AI must always pick one of your classification options, even when evidence is limited. When it's off, the AI can leave a product unclassified if it isn't confident. Turn it on for attributes where every product must have a value (like Gender); leave it off when it's acceptable for some products to stay empty rather than get a guess.
  </Accordion>
</AccordionGroup>

## What's next

<CardGroup cols={2}>
  <Card title="AI Agents" icon="arrow-right" href="/features/ai-agents">
    Create the agents that generate values for your attributes.
  </Card>

  <Card title="Cernel Taxonomy" icon="arrow-right" href="/features/cernel-taxonomy">
    Set up your category structure to organize where attributes apply.
  </Card>
</CardGroup>
